ConfigMap에 대한 작업
Code Engine에서 configmap에 대해 작업하는 방법을 학습합니다. Code Engine에서 환경 변수를 사용하여 앱, 작업 또는 기능 워크로드에서 이용할 수 있는 configmap에키-값 쌍으로 정보를 저장할 수 있습니다.
구성 맵의 개념 및 이를 사용하는 이유는 무엇입니까?
Code Engine에서는 시크릿과 configmap 모두가 키-값 쌍입니다. 환경 변수로 맵핑되면, 환경 변수 이름이 해당 맵에 있는 각 항목의 "키"에 해당하고, 환경 변수 값은 해당 키의 "값"인 것과 같이 NAME=VALUE 관계가 설정됩니다.
configmap은 민감하지 않은 데이터 정보를 배치에 포함하는 방법을 제공합니다. configmap의값을 환경 변수로 참조하여 배치에서 특정 정보를 분리하고 앱, 작업 또는 기능을 휴대용으로 유지할 수 있습니다. configmap에는 키-값 쌍의 정보가 포함되어 있습니다.
시크릿 및 configmap은 유사한 엔티티이므로 (시크릿이 더 안전하게 저장된다는 점 제외) 시크릿 및 configmap에 대해 상호작용하고 작업하는 방법도 유사합니다. 시크릿에 대해 자세히 알아보려면 시크릿에 대한 작업 을 참조하십시오.
작성하지 않은 configmap이 표시됩니다. 삭제할 수 있습니까?
아니오. Code Engine 는 자동으로 네임스페이스에 istio-ca-root 및 kube-root-ca configmap을 작성합니다. Code Engine 는 이러한 configmap을 내부적으로 사용합니다. 이러한 configmap을 삭제하면 Code Engine에서 자동으로 다시 작성됩니다.
configmap 작성
configmap은 Code Engine을 사용하여 작성합니다.
콘솔에서 configmap 작성
Code Engine 콘솔을 사용하여 configmap을 작성합니다.
시작하기 전에 프로젝트를 작성하십시오.
- 프로젝트가 활성 상태가 되면 Code Engine 프로젝트 페이지에서 프로젝트의 이름을 클릭하십시오.
- 개요 페이지에서 시크릿 및 configmap을 클릭하십시오.
- 시크릿 및 configmap 페이지에서 시크릿을 클릭하여 configmap을 작성하십시오.
- 시크릿 또는 configmap 작성 페이지에서 다음 단계를 완료하십시오.
- Configmap 을 클릭하고 다음을 클릭하십시오.
- 이름을 제공하십시오. 예:
myconfigmap. - 키-값 쌍 추가를 클릭하십시오. 이 configmap에 대해 하나 이상의 키-값 쌍을 지정하십시오. 예를 들어
key1값이 있는value1로서 키를 지정하고,key2값이 있는value2로서 다른 키를 지정하십시오. 하나 이상의 행에 값을 지정할 수 있습니다. 키에 대해 선택하는 이름은 환경 변수 이름과 같을 필요가 없습니다. - 작성을 클릭하여 configmap을 작성하십시오.
이제 콘솔에서 configmap이 작성되었으므로 시크릿 및 configmaps 페이지로 이동하여 정의된 시크릿 및 configmap의 목록을 보십시오. 필터를 적용하여 필요에 맞게 목록을 사용자 정의할 수 있습니다.
CLI를 사용하여 configmap 작성
Code Engine CLI를 사용하여 configmap을 작성합니다.
여러 가지 방법으로 configmap을 채울 수 있습니다. 이를 위해 명령행에서 직접 키-값 쌍을 지정하여 configmap을 채울 수 있거나 파일을 지정할 수 있습니다.
시작하기 전에
- Code Engine CLI 환경을 설정하십시오.
- 프로젝트를 작성하고 작업하십시오.
파일에서 configmap을 작성(또는 업데이트)할 경우 --from-file FILE 또는 --from-file KEY=FILE 형식이어야 합니다. Code Engine에서 파일을 사용하여 configmap 값을 지정하면 파일 내의 모든 컨텐츠가 키-값 쌍의 값이 됩니다. --from-file KEY=FILE 의 옵션 형식을 사용하는 경우
KEY 은 앱, 작업 또는 기능 워크로드에 알려진 환경 변수의 이름입니다. --from-file FILE 의 옵션 형식을 사용하는 경우 FILE 은 작업, 앱 또는 기능에 알려진 환경 변수의 이름입니다. 파일에 하나 이상의 키-값 쌍이 있으면, --from-env-file 옵션을 사용하여 지정된 파일에 있는 각 키-값 쌍에 대해
환경 변수를 추가하십시오. 지정된 파일에서 비어 있거나 #으로 시작하는 행은 무시됩니다.
CLI를 사용하여 configmap 작성
다음 방법 중 하나로 configmap create 명령을 사용하여 configmap을 작성하십시오.
-
--from-literal형식으로KEY=VALUE옵션을 사용하여 명령행에서 직접 configmap을 작성하십시오. 예를 들면 다음과 같습니다.ibmcloud ce configmap create --name myliteralconfigmap --from-literal TARGET=Sunshine -
--from-file옵션을 사용하여 파일을 가리킴으로써 configmap을 작성하십시오. 이 옵션을 사용하면 파일의 모든 컨텐츠가 키-값 쌍의 값이 됩니다. 이 예제에서는colors.txt파일을 사용하며, 여기에는blue, green, red텍스트가 포함되어 있습니다.-
다음 예제에서는
--from-file KEY=FILE명령에configmap create형식을 사용합니다.ibmcloud ce configmap create --name mycolorconfigmap --from-file TARGET=colors.txt -
다음 예제는
--from-file FILE명령에configmap create형식을 사용합니다. 이 예제에서TARGET(확장자 없음)은 파일 이름이고, 이는 예제myjob작업에 알려진 환경 변수 이름과 동일합니다.ibmcloud ce configmap create --name mycolorconfigmap2 --from-file TARGET
-
-
--from-env-file옵션을 사용하여KEY=VALUE형식과 일치하는 하나 이상의 행이 포함된 파일을 가리키는 configmap을 작성하십시오. 지정된 파일의 각 행은 키-값 쌍으로 추가됩니다. 지정된 파일에서 비어 있거나#으로 시작하는 행은 무시됩니다. 이 예제의 경우, 키-값 쌍(colors_multi.txt,color1=yellow,color2=orange)이 포함된color3=purple파일을 사용하십시오.ibmcloud ce configmap create --name mycolorconfigmapmulti --from-env-file colors_multi.txt
CLI를 사용하여 configmap 나열
configmap이 작성되었으므로 configmap list 명령을 사용하여 프로젝트에 있는 모든 configmap을 나열하거나, configmap get 명령을 사용하여 특정 configmap에 대한 세부사항을 표시하십시오. 예를 들면 다음과 같습니다.
ibmcloud ce configmap get --name mycolorconfigmap
출력 예
Getting configmap 'mycolorconfigmap'...
OK
Name: mycolorconfigmap
ID: abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f
Project Name: myproject
Project ID: 01234567-abcd-abcd-abcd-abcdabcd1111
Age: 11s
Created: 2020-10-14 14:10:57 -0400 EDT
Data:
---
TARGET: blue, green, red
configmap 업데이트
기존 configmap의 키-값 쌍을 변경할 수 있습니다.
콘솔에서 configmap 업데이트
콘솔에서 기존 configmap과 해당 키-값 쌍을 업데이트할 수 있습니다.
-
다음 중 한 가지 방식으로 콘솔에서 정의된 configmap의 키-값 쌍을 업데이트할 수 있습니다.
- 프로젝트의 시크릿 및 configmap 페이지로 이동하여 업데이트하려는 configmap을 찾으십시오. 업데이트하려는 configmap 이름을 클릭하여 여십시오.
- 앱, 작업 또는 기능 워크로드에서 configmap을 참조하는 경우 워크로드의 환경 변수 탭에 있는 환경 변수 테이블의 링크를 사용하십시오. 이 링크는 configmap으로 직접 이동합니다.
-
편집을 클릭하고 사용자 configmap을 업데이트하십시오.
-
저장을 클릭하고 사용자 configmap 변경사항을 저장하십시오.
업데이트된 configmap이앱, 작업 또는 기능 워크로드에서 참조되는 경우 새 데이터를 적용하려면 워크로드를 다시 시작해야 합니다.
- 앱 - 앱의 페이지에서 새 개정판을 클릭한 후 저장 및 배치를 클릭하십시오. 또는 앱의 크기가 0이 될 때까지 기다린 다음 앱을 다시 키울 때 앱은 업데이트된 configmap을 사용합니다.
- 작업 - 작업 페이지에서 작업 제출을 클릭하여 작업을 실행하십시오. 또는 작업을 재실행할 수 있습니다. 이 새 작업 실행에서는 업데이트된 configmap을 사용합니다.
- 함수-함수가 다시 호출되면 다시 시작됩니다. 기능 페이지에서 기능 테스트 를 클릭하여 기능을 테스트할 수 있습니다.
CLI를 사용하여 configmap 업데이트
CLI를 사용하여 기존 configmap 및 해당 키-값 쌍을 업데이트할 수 있습니다.
-
configmap에서 키-값 쌍의 값을 변경하려면
configmap update명령을 사용하십시오.myliteralconfigmap키의 값을TARGET에서Sunshine로 변경하도록Strangerconfigmap을 업데이트합니다.ibmcloud ce configmap update --name myliteralconfigmap --from-literal "TARGET=Stranger" -
configmap이 업데이트되었으므로
configmap get명령을 사용하여 특정 configmap에 대한 세부사항을 표시하십시오. 예를 들면 다음과 같습니다.ibmcloud ce configmap get --name myliteralconfigmap출력 예
Getting configmap 'myliteralconfigmap'... OK Name: myliteralconfigmap ID: abcdefgh-abcd-abcd-abcd-c88e2775388e Project Name: myproject Project ID: 01234567-abcd-abcd-abcd-abcdabcd1111 Age: 21m Created: 2021-05-14T07:57:11-04:00 Data: --- TARGET: Stranger
configmap 참조
앱, 작업 또는 기능 워크로드는 환경 변수를 사용하여 configmap에 저장된 정보를 이용하고 사용할 수 있습니다.
콘솔에서 configmap 참조
콘솔을 사용하여 configmap의 개별 키를 참조하거나 configmap을 완전히 참조하는 앱, 작업 또는 기능 워크로드에 대한 환경 변수를 작성할 수 있습니다.
configmap을 참조하기 전에 이미 존재해야 합니다. configmap 작성을 참조하십시오.
콘솔에서 환경 변수마다 정의된 configmap의 개별 키를 하나만 참조할 수 있습니다. configmap의 둘 이상의 키를 참조해야 하는 경우 단계를 반복하여 다른 키를 참조하는 다른 환경 변수를 정의하십시오.
-
앱, 작업 또는 기능 워크로드에서 정의된 configmap을 참조하려면 환경 변수를 작성 하십시오. 환경 변수는 기존 configmap을 완전히 참조하거나 기존 configmap에 있는 개별 키를 참조할 수 있습니다. 예를 들어,
myapp애플리케이션에서myconfigmapconfigmap을 완전히 참조해 보겠습니다. configmap 또는 시크릿을 완전히 참조하는 경우 선택적으로prefix를 지정할 수 있습니다.myconfigmap_과 같은 접두부를 사용하면 각 키에myconfigmap_이 접두부로 추가됩니다. -
환경 변수를 작성한 후 변경사항을 적용하려면 앱, 작업 또는 함수 워크로드를 다시 시작해야 합니다. 앱의 경우 앱을 저장 후 배치하여 사용자가 정의한 환경 변수로 앱을 업데이트하십시오. 작업 및 기능의 경우, 다음에 워크로드가 사용자가 정의한 환경 변수로 호출될 때 워크로드가 업데이트됩니다.
-
애플리케이션 상태가 준비로 변경되면 애플리케이션을 테스트할 수 있습니다. 애플리케이션 테스트를 클릭한 후 애플리케이션 테스트 분할창에서 요청 전송을 클릭하십시오. 애플리케이션을 웹 페이지에서 열려면 애플리케이션 URL을 클릭하십시오. 이
myapp예에서 완전히 참조된myconfigmapconfigmap에 대해 접두부를 지정했기 때문에 이 configmap의 모든 키가 환경 변수로 참조되고myconfigmap_이 접두부로 추가됩니다. 예를 들어, 이러한 환경 변수는myconfigmap_key1=value1및myconfigmap_key2=value2로 표시됩니다.
configmap을 참조하는 환경 변수를 업데이트하려면 환경 변수 업데이트 및 환경 변수 업데이트 고려사항을 참조하십시오.
configmap을 참조하는 환경 변수를 제거하려면 환경 변수 삭제를 참조하십시오.
CLI를 사용하여 configmap 참조
앱, 작업 또는 기능 워크로드와 함께 configmap을 사용하기 위해 CLI를 사용하여 configmap의 개별 키를 참조하거나 configmap을 완전히 참조하는 환경 변수를 설정할 수 있습니다.
CLI를 사용하여 기존 configmap 참조
CLI를 사용하여 앱, 작업 또는 기능 워크로드와 함께 configmap을 사용하려면 다음 명령에 --env-from-configmap 옵션을 지정하십시오.
다음 예에서는 CLI를 사용하여 앱에서 기존 configmap을 참조하는 방법에 대해 설명합니다.
-
configmap create명령을 사용하여 이 시나리오에 대해 다음과 같은 두 개의 configmap을 작성하십시오.ibmcloud ce configmap create --name myliteralconfigmap --from-literal TARGET=Sunshineibmcloud ce configmap create --name myliteralconfigmap2 --from-literal TARGET=Stranger -
앱을 배치하고
myliteralconfigmapconfigmap을 참조하십시오. 이 예에서는hello이미지를 사용하는 앱을 작성합니다. 요청이 이 샘플 앱으로 전송되면 앱에서 환경 변수TARGET을 읽고Hello ${TARGET}을 출력합니다. 이 환경 변수가 비어 있으면Hello World가 리턴됩니다.myliteralconfigmapconfigmap을 참조하십시오. 이 예제에 사용되는 코드에 대한 자세한 정보는hello의 내용을 참조하십시오.ibmcloud ce app create --name myhelloapp --image icr.io/codeengine/hello --env-from-configmap myliteralconfigmap -
애플리케이션을 호출하십시오. 앱은
Hello Sunshine을 리턴합니다. 이는TARGETconfigmap에 지정된myliteralconfigmap키의 값입니다.curl https://myhelloapp.d484a5d6-d10d.us-south.codeengine.appdomain.cloud출력 예
Hello Sunshine -
앱을 다시 업데이트하여
myliteralconfigmap2configmap을 사용하십시오.다른 configmap (또는 시크릿) 을 완전히 참조하기 위해 configmap (또는 시크릿) 을 완전히 참조하는 환경 변수를 사용하여 앱, 작업 또는 기능을 업데이트하는 경우, 전체 참조는 설정된 순서대로 다른 전체 참조를 대체합니다 (마지막 참조된 세트가 첫 번째 세트를 대체함).
ibmcloud ce app update --name myhelloapp --env-from-configmap myliteralconfigmap2출력 예
Updating application 'myhelloapp' to latest revision. [...] Run 'ibmcloud ce application get -n myhelloapp' to check the application status. OK https://myhelloapp.d484a5d6-d10d.us-south.codeengine.appdomain.cloud -
애플리케이션을 다시 호출하십시오. 이번에는 앱이
Hello Stranger를 리턴합니다. 이는myliteralconfigmap2configmap에 지정된 값입니다.curl https://myhelloapp.d484a5d6-d10d.us-south.codeengine.appdomain.cloud출력 예
Hello Stranger -
myliteralconfigmap2를 업데이트하여 키-값 쌍을 변경하십시오.ibmcloud ce configmap update --name myliteralconfigmap2 --from-literal "TARGET=Happy day"ibmcloud ce configmap get -n myliteralconfigmap2명령을 실행하여 configmap의 세부사항을 표시하십시오.출력 예
Name: myliteralconfigmap2 [...] Data: --- TARGET: Happy day -
새 데이터를 적용하려면 애플리케이션을 다시 시작하십시오.
ibmcloud ce app update --name myhelloapp -
애플리케이션을 다시 호출하십시오. 이번에는 앱이
Hello Happy day를 리턴합니다. 이는myliteralconfigmap2configmap에 지정된 값입니다.curl https://myhelloapp.d484a5d6-d10d.us-south.codeengine.appdomain.cloud출력 예
Hello Happy day
CLI를 사용하여 아직 정의되지 않은 configmap 참조
configmap이 참조되기 전에 존재하지 않으면 앱, 작업 또는 기능 워크로드가 성공적으로 배치되지 않으며 참조된 configmap이 작성될 때까지 작업 또는 기능이 성공적으로 실행되지 않습니다.
앱, 작업 또는 기능 워크로드에 대해 작업 중이고 참조된 configmap이 아직 정의되지 않은 경우 --force 옵션을 사용하여 참조된 configmap의 존재 여부를 확인하지 않을 수 있습니다. --force 옵션은 다음 명령과 함께 사용할 수 있습니다.
이러한 명령에 --force 옵션을 사용하면 워크로드를 작성, 업데이트 또는 실행하는 조치가 완료됩니다. 그러나 참조된 configmap이 존재할 때까지 앱, 작업 또는 워크로드가 성공적으로 실행되지 않습니다. 명령에 --force 옵션 외에 --no-wait 옵션을 추가하면 시스템이 조치를 완료하고 워크로드가 성공적으로 실행될 때까지 대기하지 않습니다.
다음 예에서는 CLI를 사용하여 아직 앱에서 정의되지 않은 configmap을 참조하는 방법에 대해 설명합니다.
-
앱을 작성하고 정의되지 않은
myliteralconfigmap3configmap을 참조하십시오. 이 예에서는icr.io/codeengine/hello이미지를 사용하는 Code Engine 앱을 작성합니다. 요청이 이 샘플 앱으로 전송되면 앱에서 환경 변수TARGET을 읽고Hello ${TARGET}을 출력합니다. 이 환경 변수가 비어 있으면Hello World가 리턴됩니다.myliteralconfigmap3configmap을 참조하십시오. 이 예제에 사용되는 코드에 대한 자세한 정보는hello의 내용을 참조하십시오.app create명령에--no-wait옵션을 사용하면 앱이 작성되고 앱이 준비될 때까지 기다리지 않습니다.ibmcloud ce app create --name myapp --image icr.io/codeengine/hello --env-from-configmap myliteralconfigmap3 --force --no-wait -
app get명령을 사용하여 환경 변수 정보를 포함한 작업 실행의 세부사항을 표시하십시오. 앱이 작성되었지만 아직 완전히 배치되지는 않았습니다.ibmcloud ce app get --name myapp출력 예
Name: myapp [...] Status Summary: Application is deploying Environment Variables: Type Name Value ConfigMap full reference myliteralconfigmap3 Image: icr.io/codeengine/hello Resource Allocation: CPU: 1 Ephemeral Storage: 400M Memory: 4G Runtime: Concurrency: 100 Maximum Scale: 10 Minimum Scale: 0 Timeout: 300 Conditions: Type OK Age Reason ConfigurationsReady false 10s Ready false 10s RevisionMissing : Configuration "myapp" is waiting for a Revision to become ready. RoutesReady false 10s RevisionMissing : Configuration "myapp" is waiting for a Revision to become ready. Events: Type Reason Age Source Messages Normal Created 12s service-controller Created Configuration "myapp" Normal Created 12s service-controller Created Route "myapp" Instances: Name Revision Running Status Restarts Age myapp-00001-deployment-566d5c79b9-wttqs myapp-00001 0/2 Pending 0 11s -
configmap을 작성하십시오.
ibmcloud ce configmap create --name myliteralconfigmap3 --from-literal TARGET=Everyone -
새 데이터를 적용하려면 애플리케이션을 다시 시작하십시오.
ibmcloud ce app update --name myapp -
애플리케이션을 호출하십시오. 앱은
Hello Everyone을 리턴합니다. 이는myliteralconfigmap3configmap에 지정된 값입니다.curl https://myapp.d484a5d6-d10d.us-south.codeengine.appdomain.cloud출력 예
Hello Everyone -
기존
myliteralconfigmap2configmap을 참조하도록 앱을 업데이트하십시오.myliteralconfigmap2는TARGET=Stranger값으로 정의됩니다. 앱을 업데이트하면 새 데이터가 적용되도록 앱이 다시 시작됩니다.다른 configmap(또는 시크릿)을 완전히 참조하기 위해 configmap(시크릿)을 참조하는 환경 변수로 애플리케이션 또는 작업을 업데이트하면 전체 참조는 설정된 순서 대로 다른 전체 참조를 대체합니다(마지막으로 참조된 세트가 첫 번째 세트를 대체함).
ibmcloud ce app update --name myapp --env-from-configmap myliteralconfigmap2 -
애플리케이션을 다시 호출하십시오. 이번에는 앱이
Hello Stranger를 리턴합니다. 이는myliteralconfigmap2configmap에 지정된 값입니다.curl https://myapp.d484a5d6-d10d.us-south.codeengine.appdomain.cloud출력 예
Hello Stranger
전체 시크릿 및 configmap을 환경 변수로 참조하고, 참조를 대체하며, CLI에서 참조를 제거하는 방법에 대한 자세한 시나리오는 시크릿 및 configmap 참조를 참조하십시오.
구성 맵 삭제
더 이상 configmap이 필요하지 않으면 이를 삭제할 수 있습니다.
콘솔에서 configmap 삭제
- 콘솔에서 configmap을 삭제하려면 다음을 수행하십시오.
- Code Engine 프로젝트 페이지에서 시크릿 및 configmaps 페이지로 이동하십시오.
- 삭제할 configmap을 클릭하여 해당 페이지를 여십시오.
- 특정 configmap에 대한 페이지에서 조치 > configmap 삭제를 클릭하십시오.
- 콘솔에서 특정 configmap에 대한 키-값 쌍을 삭제하려면 다음을 수행하십시오.
- Code Engine 프로젝트 페이지에서 시크릿 및 configmaps 페이지로 이동하십시오.
- 변경하려는 configmap을 클릭하여 해당 페이지를 여십시오.
- 특정 configmap에 대한 페이지에서 제거할 키-값 쌍을 삭제하십시오.
시크릿 및 configmap을 참조하는 정의된 환경 변수도 삭제할 수 있습니다. 정의된 환경 변수를 삭제하려면 앱, 작업 또는 기능의 환경 변수 탭에서 삭제할 환경 변수를 삭제하십시오. 정의된 환경 변수를 삭제한 후 저장 을 클릭하여 변경사항을 앱, 작업 또는 기능에 저장하십시오. 자세한 정보는 환경 변수 삭제를 참조하십시오.
CLI를 사용하여 configmap 삭제
-
CLI를 사용하여 configmap을 삭제하려면
configmap delete명령을 사용하십시오. 예를 들면, 다음과 같습니다.ibmcloud ce configmap delete --name myliteralconfigmap -f출력 예
Deleting configmap 'myliteralconfigmap'... OK
CLI에서 시크릿 및 configmap을 참조하는 환경 변수도 삭제할 수 있습니다.