환경 변수에 대한 작업

환경 변수로 작업하는 방법(env variables)은 Code Engine 에서 확인하세요. 애플리케이션, 작업 또는 함수에서 사용할 수 있는 키-값 쌍으로 환경 변수를 설정할 수 있습니다.

환경 변수 작성 및 업데이트

Code Engine으로 환경 변수를 작성하고 관리합니다.

환경 변수를 리터럴 값으로 정의하거나 기존 시크릿 또는 컨피그맵을 참조할 수 있습니다. Code Engine 환경 변수를 사용하여 작업, 애플리케이션 또는 함수에서 시크릿 또는 컨피그맵을 사용할 수 있도록 설정합니다.

콘솔에서 환경 변수 작성

Code Engine 콘솔을 사용하여 환경 변수를 작성하고 업데이트합니다.

콘솔에서 앱, 작업 또는 함수를 만들거나 업데이트할 때 환경 변수를 정의할 수 있습니다.

시작하기 전에

  • 프로젝트를 생성해야 하며 프로젝트가 active 상태여야 합니다.
  • 리터럴 환경 변수를 작성하려는지 또는 기존 시크릿 또는 configmap을 참조하는 환경 변수를 작성하려는지 판별합니다. 기존 시크릿 또는 configmap을 완전히 참조하거나 기존 시크릿 또는 configmap에 있는 개별 키를 참조하는 환경 변수를 원하는 경우, 시크릿 또는 configmap이 존재해야 합니다. 진행하기 전 시크릿 작성 또는 configmap 작성을 참조하여 시크릿 또는 configmap을 정의하십시오.
  1. 환경 변수 추가 페이지에서 환경 변수를 정의하는 대화 상자를 열려면 다음 선택사항 중 하나를 완료하십시오.

    • 앱을 작성하는 경우, 애플리케이션 작성 페이지에서 환경 변수(선택사항) 섹션을 펼치십시오. 작성하는 앱에 하나 이상의 환경 변수를 추가할 수 있습니다. 추가를 클릭하여 환경 변수 추가 페이지를 여십시오.
    • 작업을 작성하는 경우, 작업 작성 페이지에서 환경 변수(선택사항) 섹션을 펼치십시오. 추가를 클릭하여 환경 변수 추가 페이지를 여십시오.
    • 함수를 만드는 경우 함수 만들기 페이지에서 환경 변수(선택 사항) 섹션을 펼칩니다. 추가를 클릭하여 환경 변수 추가 페이지를 여십시오.
    • 환경 변수를 추가하기 위해 기존 워크로드를 업데이트하는 경우 기존 앱, 작업 또는 기능으로 이동합니다. 구성 탭에서 환경 변수를 클릭합니다. 앱, 작업 및 기능의 경우 환경 변수 추가를 클릭하여 환경 변수 추가 페이지를 엽니다.
  2. 환경 변수 추가 페이지에서 다음 중 한 가지 방식으로 환경 변수를 작성하십시오.

    • 리터럴 환경 변수를 작성하려면 Literal value를 선택하고 리터럴 환경 변수의 이름을 지정한 후 값을 제공하십시오. Resulting definition 섹션에서는 환경 변수 이름 및 해당 값을 표시합니다.
    • _configmap을 완전히 참조_하는 환경 변수를 작성하려면 Reference full configmap를 선택한 후 기존 구성 맵을 선택하십시오. 이 경우 선택한 configmap의 모든 키는 환경 변수의 일부로서 참조됩니다. Resulting definition 섹션은 configmap의 키 이름을 표시하지만, configmap 내에서 참조되는 키의 실제 값을 표시하지 않습니다.
    • _정의된 configmap의 개별 키를 참조_하는 환경 변수를 작성하려면 Reference key in configmap를 선택하고 원하는 기존 configmap을 선택한 후 환경 변수의 일부로 참조할 키를 선택하십시오. 참조하려는 configmap에서 개별 키를 선택한 후 Resulting definition 섹션에서는 configmap에서 선택한 키의 이름을 표시하지만 configmap 내에서 참조되는 키의 실제 값을 표시하지 않습니다.
    • _시크릿을 완전히 참조_하는 환경 변수를 작성하려면 Reference full secret을 선택한 후 기존 구성 시크릿을 선택하십시오. 이 경우 선택한 시크릿의 모든 키는 환경 변수의 파트로서 참조됩니다. Resulting definition 섹션에서는 시크릿의 키 이름을 표시하지만, 시크릿 내에서 참조되는 키의 실제 값은 표시하지 않습니다.
    • _정의된 시크릿의 개별 키를 참조_하는 환경 변수를 작성하려면 Reference key in secret를 선택하고 원하는 기존 시크릿을 선택한 후 환경 변수의 일부로 참조할 키를 선택하십시오. 참조하려는 시크릿에서 개별 키를 선택한 후 Resulting definition 섹션은 시크릿에서 선택한 키의 이름을 표시하지만 시크릿 내에서 참조되는 키의 실제 값을 표시하지 않습니다.

    콘솔에서 환경 변수별로 정의된 configmap 또는 시크릿에 대한 하나의 개별 키만을 참조할 수 있습니다. configmap 또는 secret에 대한 둘 이상의 키를 참조해야 하는 경우 단계를 반복하여 다른 키를 참조하는 다른 환경 변수를 정의하십시오.

  3. 완료를 클릭하여 변경사항을 저장하십시오. 이 액션은 환경 변수 탭의 테이블에 환경 변수를 추가합니다. 환경 변수를 계속 추가하려면 추가를 클릭하십시오.

  4. 정의된 환경 변수를 사용하여 앱, 작업 또는 함수에 대한 생성 또는 업데이트를 완료하세요.

    • 워크로드를 만드는 경우 만들기를 클릭하면 앱, 작업 또는 함수가 환경 변수와 함께 배포됩니다.
    • 기존 앱, 작업 또는 함수를 업데이트하여 환경 변수를 추가하는 경우 저장 후 배포를 클릭하여 앱을 업데이트하거나 저장을 클릭하여 새 환경 변수로 작업 또는 함수를 업데이트합니다.
  5. 앱, 작업 또는 함수가 Ready 상태이면 환경 변수로 업데이트됩니다.

다음 테이블은 사용자 환경 변수에 대한 정보에 대해 설명합니다.

환경 변수 테이블
표제 설명
Name 환경 변수의 이름입니다.
Defined by 환경 변수 유형이 literal인지 또는 환경 변수가 완전히 참조되는 configmap 또는 시크릿인지, 시크릿 또는 CONFIGMAP의 특정 키가 참조되는지를 지정합니다.
Value or reference 리터럴 값, 완전히 참조되는 comfigmap 또는 시크릿, comfigmap 또는 시크릿의 참조되는 키를 표시합니다.

예를 들어 앱을 작성하고 앱의 환경 변수를 설정합니다.

  1. icr.io/codeengine/codeengine 이미지를 사용하는 myapp이라는 앱을 작성하십시오. 이 hello-world 앱에는 TARGET 환경 변수가 포함되고, 앱은 Hello ${TARGET} from Code Engine를 인쇄하며 환경 변수 목록을 인쇄합니다. TARGET 환경 변수가 비어 있으면 Hello World from Code Engine가 리턴됩니다.
  2. 콘솔에서 이 앱으로 이동하십시오.
  3. 앱이 Ready 상태인 경우 앱을 테스트할 수 있습니다. 애플리케이션 테스트를 클릭한 후 애플리케이션 테스트 분할창에서 요청 전송을 클릭하십시오. 애플리케이션을 웹 페이지에서 열려면 애플리케이션 URL을 클릭하십시오. myapp 앱은 Hello World from Code Engine 응답을 리턴하고 이 앱에 포함되는 환경 변수를 인쇄합니다.
  4. 환경 변수 탭을 클릭하십시오.
  5. 다음 환경 변수를 작성하십시오.
    • 추가를 클릭하여 환경 변수 추가 페이지를 열고 리터럴 환경 변수를 작성하십시오. 예를 들어 이름은 literalenvvar이고 값은 This is my literal인 리터럴 환경 변수를 작성하십시오. 완료를 클릭하여 변경사항을 저장하십시오.
    • 추가를 클릭하여 환경 변수 추가 페이지를 열고 _configmap을 완전히 참조_하는 환경 변수를 작성하십시오. configmap을 참조하기 전에 이미 존재해야 합니다. 이 예제에서는 이름이 mycolorconfigmap인 confgmap이 존재하고 키-값 쌍(key1=blue, key2=green, key3=yellow)을 포함합니다. 모든 키-값 쌍을 포함하여 mycolorconfigmap configmap을 완전히 참조하는 환경 변수를 작성하십시오. Resulting definition 섹션은 configmap의 키 이름을 표시하지만, configmap 내에서 참조되는 키의 실제 값을 표시하지 않습니다. 완료를 클릭하여 변경사항을 저장하십시오.
    • 추가를 클릭하여 환경 변수 추가 페이지를 열고 _정의된 시크릿의 개별 키를 참조_하는 다른 환경 변수를 작성하십시오. 시크릿을 참조하기 전에 이미 존재해야 합니다. 이 예제에서는 mynewsecret 이름의 시크릿이 존재하고 키-값 쌍(newsec1=mynewsecret1, newsec2=mynewsecret2, newsec3=mynewsecret3)을 포함합니다. newsec2 시크릿의 mynewsecret 키를 참조하는 환경 변수를 작성하십시오. Resulting definition 섹션에서는 시크릿에서 선택한 키 이름을 표시하지만, 시크릿 내에서 참조되는 키의 실제 값은 표시하지 않습니다. 완료를 클릭하여 변경사항을 저장하십시오.
  6. 저장 후 작성을 클릭하여 새 환경 변수로 앱을 업데이트하십시오.
  7. 앱이 Ready 상태이면 앱이 환경 변수로 업데이트됩니다.
  8. 앱을 테스트하려면 애플리케이션 테스트를 클릭한 후 애플리케이션 테스트 분할창에서 요청 전송을 클릭하십시오. 애플리케이션을 웹 페이지에서 열려면 애플리케이션 URL을 클릭하십시오. 이 앱 개정판에서는 이 앱이 Hello World from Code Engine를 출력하고 출력에는 이전 단계에서 추가했던 환경 변수 이름이 포함됩니다.

워크로드에서 환경 변수를 설정할 때 이 작업을 수행하면 새 환경 변수가 추가되거나 기존 환경 변수가 재정의됩니다. 이름이 같은 환경 변수가 있고 이전에 정의한 환경 변수와 다른 값을 지정한 경우 업데이트된 환경 변수가 기존 값을 재정의합니다. 예를 들어 이름이 envvar1이고 값이 myenvar1인 환경 변수가 정의되어 있고, 이름이 envvar1인 다른 환경 변수를 정의하고 해당 값을 mynewenvvar1로 지정하는 경우, 업데이트된 앱을 저장 및 배치하거나 업데이트된 작업을 저장한 후에는 실행 중인 앱 또는 작업에서 envvar1 값이 있는 mynewenvvar1 환경 변수를 사용합니다.

콘솔에서 환경 변수 업데이트

  1. 기존 환경 변수를 업데이트하려면 변경하려는 환경 변수가 포함된 앱, 작업 또는 기능으로 이동하여 환경 변수 탭을 클릭하여 환경 변수 표를 표시합니다.
  2. 환경 변수 테이블에서 업데이트하려는 환경 변수를 클릭하십시오.
  3. 환경 변수 편집 페이지에서 업데이트를 작성한 후 완료를 클릭하여 변경사항을 저장하십시오. 환경 변수를 편집할 때 정의자 값과 해당 필수 필드를 변경할 수 있습니다.
  4. 저장 및 배치를 클릭하여 변경사항과 함께 애플리케이션를 배치하거나 저장을 클릭하여 변경사항과 함께 작업을 실행하십시오. 앱 또는 작업이 Ready 상태이면 앱 또는 작업이 환경 변수로 업데이트됩니다.

CLI를 사용하여 환경 변수 작성 및 업데이트

Code Engine CLI를 사용하여 환경 변수를 작성하고 관리합니다.

CLI로 앱, 작업 또는 함수를 만들거나 업데이트할 때 환경 변수를 정의할 수 있습니다.

CLI를 사용하여 환경 변수를 작성하는 경우, configmap 또는 시크릿을 참조하거나 리터럴 환경 변수를 작성할 수 있습니다. 이 지침은 CLI로 리터럴 환경 변수를 만들고 업데이트하는 방법을 설명합니다.

환경 변수로서 시크릿 및 configmap 완전 참조, 참조 대체, CLI에서 참조 제거에 대한 상세 시나리오는 시크릿 및 configmap 참조를 참조하십시오.

시작하기 전에

앱 환경 변수 작성 및 업데이트

다음과 같이 앱의 환경 변수를 작성하고 업데이트합니다.

  • 앱의 환경 변수를 생성하고 설정하려면 --env 옵션과 함께 app create 또는 app update 명령과 함께 사용합니다. 다음 예에서는 icr.io/codeengine/codeengine 이미지를 사용하는 myapp 애플리케이션을 작성하고 envAenvB 환경 변수를 정의합니다.

    ibmcloud ce application create --name myapp --image icr.io/codeengine/codeengine --env envA=A --env envB=B
    
  • 기존 애플리케이션의 환경 변수를 업데이트하려면 app update 명령에 --env 옵션을 사용하십시오. 다음 예제는 myapp 애플리케이션을 업데이트하여 envA 값을 겹쳐쓰고 envC 환경 변수를 추가합니다.

    ibmcloud ce application update --name myapp  --env envA=AA --env envC=C
    

작업 환경 변수 작성 및 업데이트

다음과 같이 작업의 환경 변수를 설정하고 업데이트합니다.

  • 작업의 환경 변수를 작성하고 설정하려면 --env 옵션과 함께 job create, job update, jobrun submit 또는 jobrun resubmit 명령을 사용하십시오. 다음 예에서는 icr.io/codeengine/codeengine 이미지를 사용하는 myjob 작업을 작성하고 envA 환경 변수를 정의합니다.

    ibmcloud ce job create --name myjob --image icr.io/codeengine/codeengine --env envA=A
    
  • 기존 작업의 환경 변수를 업데이트하려면 --env 옵션과 함께 job update, jobrun submit 또는 jobrun resubmit 명령을 사용하십시오.

예제 1

다음 예제는 myjob 작업을 업데이트하여 envA 값을 겹쳐쓰고 envB 환경 변수를 추가합니다.

ibmcloud ce job update --name myjob  --env envA=AA --env envB=B

job get 명령을 실행하여 환경 변수를 포함하는 작업 세부사항을 표시하십시오.

ibmcloud ce job get --name myjob

출력 예

Getting job 'myjob'...
OK

Name:          myjob
[...]
Environment Variables:
    Type     Name  Value
    Literal  envA  AA
    Literal  envB  B
Image:                  icr.io/codeengine/codeengine
[...]

예제 2

다음 예제는 myjob 작업을 실행하고, envA 값을 겹쳐쓰고, 이 작업 실행을 위한 envD 환경 변수를 추가합니다.

ibmcloud ce jobrun submit --job myjob  --name myjobrun1 --env envB=BB --env envC=C

jobrun get 명령을 실행하여 환경 변수를 포함하는 작업 실행의 세부사항을 표시하십시오.

ibmcloud ce jobrun get --name myjobrun1

출력 예

[...]
Name:          myjobrun1
[...]
Job Ref:                myjob
Environment Variables:
    Type     Name  Value
    Literal  envA  AA
    Literal  envB  BB
    Literal  envC  C
Image:                  icr.io/codeengine/codeengine
[...]

Instances:
Name           Running  Status   Restarts  Age
myjobrun1-0-0  0/1      Succeeded  0         17s

함수에 대한 환경 변수 생성 및 업데이트

함수에 대한 환경 변수를 다음과 같이 설정하고 업데이트합니다.

  • 함수에 대한 환경 변수를 생성하고 설정하려면 --env 옵션과 함께 function create 또는 function update 명령과 함께 사용합니다. 다음 예제에서는 https://github.com/IBM/CodeEngine 소스 코드를 사용하는 myfunction 함수를 만들고 envA 환경 변수를 정의합니다.

    ibmcloud ce function create --name myfunction --runtime nodejs --build-source https://github.com/IBM/CodeEngine --build-context-dir /helloworld-samples/function-codebundle-nodejs  --env envA=A
    

    명령의 출력 예시 fn get 명령의 출력 예시.

    Environment Variables:
    Type     Name  Value
    Literal  envA  A
    
  • 기존 함수에 대한 환경 변수를 업데이트하려면 --env 옵션과 함께 function update 명령과 함께 사용하세요. 다음 예제는 envA 값을 덮어쓰도록 myfunction 함수를 업데이트하고 envC 환경 변수를 추가합니다.

    ibmcloud ce fn update --name myfunction  --env envA=AA --env envC=C
    

    명령의 출력 예시 fn get 명령의 출력 예시.

    Environment Variables:
    Type     Name  Value
    Literal  envA  AA
    Literal  envC  C
    

환경 변수로 워크로드 업데이트 시 고려 사항

구성 맵 또는 비밀을 참조하는 환경 변수가 있는 앱, 작업 또는 함수를 업데이트할 때 다음 정보를 고려하세요.

구성 맵(또는 시크릿)을 완전히 참조하는 환경 변수가 있는 앱, 작업 또는 함수를 다른 구성 맵(또는 시크릿)을 완전히 참조하도록 업데이트하면 전체 참조가 설정된 순서대로 다른 전체 참조를 재정의합니다(마지막 참조된 집합이 첫 번째 집합보다 우선).

한 구성 맵(또는 비밀)의 키를 참조하는 환경 변수가 있는 앱, 작업 또는 함수를 다른 구성 맵(또는 비밀)의 동일한 키를 참조하도록 업데이트하는 경우 마지막으로 참조된 키가 사용됩니다.

구성 맵(또는 시크릿)을 완전히 참조하는 환경 변수가 있는 앱, 작업 또는 함수를 업데이트하여 특정 키에 대한 참조를 추가하면 특정 키 참조가 전체 구성 맵(또는 시크릿) 참조를 재정의합니다.

환경 변수 삭제

환경 변수가 더 이상 필요하지 않은 경우 삭제할 수 있습니다.

콘솔에서 환경 변수 삭제

  1. 콘솔에서 삭제하려는 환경 변수가 있는 앱, 작업 또는 함수로 이동합니다. 환경 변수 탭을 클릭하십시오.
  2. 환경 변수 표에서 앱, 작업 또는 함수에서 제거하려는 환경 변수를 삭제합니다.
  3. 저장 후 배포를 클릭하여 앱을 업데이트하거나 저장을 클릭하여 새 환경 변수로 작업 또는 함수를 업데이트합니다. 앱, 작업 또는 함수가 Ready 상태이면 현재 환경 변수로 업데이트됩니다.

CLI를 사용한 환경 변수 삭제

CLI를 사용하여 환경 변수에 대해 작업하는 경우, 기존 configmap 또는 시크릿을 참조하거나 리터럴 환경 변수에 대해 작업할 수 있습니다. 이 지침은 CLI로 리터럴 환경 변수를 삭제하는 방법을 설명합니다.

CLI에서 전체 시크릿 및 configmap에 대한 참조를 제거하는 상세 시나리오는 시크릿 및 configmap 참조를 참조하십시오.

앱 환경 변수 삭제

앱의 환경 변수를 제거하려면 --env-rm 옵션과 함께 app update 명령을 사용하십시오. 다음 예제에서는 myapp 환경 변수를 삭제하도록 envA 애플리케이션을 업데이트합니다.

ibmcloud ce application update --name myapp --env-rm envA

작업 환경 변수 삭제

작업의 환경 변수를 제거하려면 --env-rm 옵션과 함께 job update 또는 jobrun resubmit 명령을 사용하십시오.

--env-rm 옵션과 함께 job update 명령을 사용하여 작업에서 설정된 환경 변수를 제거하십시오. --env-rm 옵션과 함께 jobrun resubmit 명령을 사용하여 지정된 작업 실행에서 설정된 환경 변수를 제거하십시오.

  • 다음 예제에서는 myjob 작업을 업데이트하여 envA 환경 변수를 삭제합니다.

    ibmcloud ce job update --name myjob  --env-rm envA
    

    job get 명령을 사용하여 환경 변수를 포함하는 작업 세부사항을 표시하십시오.

  • 다음 예제는 myjobrun1 작업 실행을 다시 제출하고 envC 환경 변수를 삭제합니다.

    ibmcloud ce jobrun resubmit --jobrun myjobrun1  --name jobrun2resuba--env-rm envC
    

    jobrun get 명령을 실행하여 환경 변수를 포함하는 작업 실행의 세부사항을 표시하십시오.

    ibmcloud ce jobrun get --name jobrun2resuba
    

    출력 예

    Getting jobrun 'jobrun2resuba'...
    Getting instances of jobrun 'jobrun2resuba'...
    Getting events of jobrun 'jobrun2resuba'...
    [...]
    
    Name:          jobrun2resuba
    [...]
    Job Ref:                myjob
    Environment Variables:
        Type     Name  Value
        Literal  envB  BB
    Image:                  icr.io/codeengine/codeengine
    [...]
    
    Instances:
    Name               Running  Status     Restarts  Age
    jobrun2resuba-0-0  0/1      Succeeded  0         21s
    

함수에 대한 환경 변수 삭제

함수에 대한 환경 변수를 제거하려면 --env-rm 옵션과 함께 function update 명령과 함께 사용하세요. 다음 예제는 envA 환경 변수를 삭제하도록 myfunction 함수를 업데이트합니다.

ibmcloud ce function update --name myfunction --env-rm envA