환경 변수를 사용하여 시크릿 및 configmap 참조(CLI)

Code Engine 에서 시크릿과 컨피그맵을 생성한 후 키-값 쌍으로 저장된 정보는 앱, 작업 또는 함수 워크로드에서 전체 시크릿 또는 컨피그맵을 참조하거나 개별 키를 참조하여 환경 변수로서 사용할 수 있습니다.

시크릿을 환경 변수로 작업하는 것은 configmap을 환경 변수로 작업하는 것과 유사합니다. 시크릿에 대해 작업할 때 데이터는 인코딩됩니다.

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

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

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

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

CLI를 사용한 configmap 또는 시크릿 참조에 대한 기본 정보는 CLI를 사용하여 configmap 참조CLI를 사용하여 시크릿 참조를 참조하십시오.

다음 시나리오는 시크릿 또는 configmap에 대해 완료할 수 있습니다.

CLI를 사용하여 전체 시크릿 참조

시크릿 및 configmap은 키-값 쌍으로 구성됩니다. 환경 변수는 전체 시크릿 또는 configmap을 참조할 때 키별로 항목을 제공한 결과입니다. 여러 시크릿 또는 configmap에 동일한 이름의 키가 포함되어 있는 경우에는 참조된 시크릿 또는 configmap의 키 중 하나만 표시됩니다.

이 시나리오에서는 사용자 이름과 비밀번호에 대한 키-값 쌍이 포함된 시크릿을 작성한 다음 작업을 실행할 때 전체 시크릿을 참조하십시오. 시크릿을 업데이트하여 키를 추가한 다음 작업에서 새 키 사용을 시연할 수 있습니다. 이 시나리오에서는 시크릿을 사용하지만, 동일한 단계를 사용하여 configmap을 완전히 참조하려면 명령에서 configmapsecret으로 대체하면 됩니다.

  1. mydatabasesec 시크릿을 작성한 후 --from-literal 옵션을 사용하여 사용자 이름과 비밀번호에 대한 키-값 쌍을 지정하십시오.

    ibmcloud ce secret create -n mydatabasesec --from-literal username=reader --from-literal password=abcd
    
  2. mydatabasesec 명령을 사용하여 secret get 시크릿에 대한 세부사항을 확인하십시오. 시크릿의 passwordusername 키에 대한 값은 인코딩되어 있습니다.

    ibmcloud ce secret get -n mydatabasesec
    

    출력 예

    Getting generic secret 'mydatabasesec'...
    OK
    
    Name:          mydatabasesec
    ID:            abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f
    Project Name:  myproject
    Project ID:    01234567-abcd-abcd-abcd-abcdabcd1111
    Age:           17s
    Created:       2020-10-14 14:07:59 -0400 EDT
    
    Data:
    ---
    password: YWJjZA==
    username: cmVhZGVy
    
  3. 전체 mydatabasesec 시크릿을 참조하도록 작업에 대한 환경 변수를 설정하십시오. 이 예에서는 --env-from-secret PREFIX=NAME 옵션을 사용하겠습니다. 여기서 PREFIX=NAME은 각 키의 접두부가 PREFIX인 전체 configmap을 참조하도록 지정합니다. read_ 접두부를 사용하면 각 키에는 read_가 접두부로 추가됩니다. busybox 이미지는 기본적으로 출력을 인쇄하지 않으므로, -c env 옵션은 컨테이너의 모든 환경 변수를 인쇄하도록 지정합니다.

    ibmcloud ce job create -n demo -i busybox -c env --env-from-secret read_=mydatabasesec
    

    접두부를 사용하면 작업 또는 앱의 모든 환경 변수가 고유하도록 보장됩니다. 예를 들어, a, bc 키가 포함된 시크릿이 있는 경우 이러한 환경 변수는 a, bc로 표시됩니다. 그러나 접두부(예: read_)를 추가하면 read_a, read_bread_c와 같은 접두부가 붙는 키가 표시됩니다. 또한 접두부를 사용하여 참조하는 앱, 작업 또는 작업 실행에서 환경 변수를 그룹화하고 configmap 또는 시크릿에서 키 중복을 방지하는 데 도움이 됩니다.

  4. (선택사항) demo 작업의 세부사항을 확인하십시오. 출력에는 mydatabasesec 시크릿에 대한 전체 참조가 표시됩니다.

    ibmcloud ce job get -n demo
    

    출력 예

    Getting job 'demo'...
    OK
    
    Name:          demo
    ID:            abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f
    Project Name:  myproject
    Project ID:    01234567-abcd-abcd-abcd-abcdabcd1111
    Age:           6s
    Created:      2022-05-04T15:04:16-04:00
    
    Commands:                 
        env  
    Environment Variables:    
        Type                   Name                   Value
        Secret full reference  read_=mydatabasesec
    Image:                  busybox  
    Resource Allocation:      
        CPU:     1  
        Memory:  4G  
    
    Runtime:
        Mode:                  task
        Array Indices:         0
        Array Size:            1
        Max Execution Time:    7200
        Retry Limit:           3
    
  5. demo 작업의 구성을 사용하는 작업을 실행하십시오.

    ibmcloud ce jobrun submit --name demo1 --job demo
    
  6. 작업 실행의 로그를 표시합니다. 작업 실행의 모든 인스턴스에 대한 로그를 표시하거나 작업 실행의 특정 인스턴스에 대한 로그를 표시할 수 있습니다. 이 예에서 demo1 작업 실행의 로그를 표시합니다. 로그 출력에서 전체 시크릿 mydatabasesec의 키가 접두부 read_와 함께 표시됩니다. 시크릿 값은 디코딩된 환경에 추가됩니다.

    ibmcloud ce jobrun logs --jobrun demo1
    

    출력 예

    Getting logs for all instances of job run 'demo1'...
    Getting jobrun 'demo1'...
    Getting instances of jobrun 'demo1'...
    [...]
    
    HOSTNAME=demo1-0-0
    read_username=reader
    read_password=abcd
    JOB_INDEX=0
    CE_SUBDOMAIN=8aaon2dfwa0
    CE_JOBRUN=demo1
    [...]
    
  7. mydatabasesec 옵션을 사용하여 키를 추가하도록 --from-file 시크릿을 업데이트하십시오. 이 옵션은 --from-file FILE 또는 --from-file KEY=FILE 형식을 사용합니다. 다음 명령에서 certificate는 키이고, cert.pem은 파일 이름입니다.

    ibmcloud ce secret update -n mydatabasesec --from-file certificate=cert.pem
    
  8. mydatabasesec 명령을 사용하여 업데이트된 secret get 시크릿에 대한 세부사항을 확인하십시오. 이제 시크릿에는 세 개의 키(certificate, password, username)가 포함되어 있습니다. 시크릿 값은 인코딩되어 있습니다.

    ibmcloud ce secret get -n mydatabasesec
    

    출력 예

    Getting generic secret 'mydatabasesec'...
    OK
    
    Name:          mydatabasesec
    ID:            abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f
    Project Name:  myproject
    Project ID:    01234567-abcd-abcd-abcd-abcdabcd1111
    Age:           4m13s
    Created:       2020-10-14 13:35:43 -0400 EDT
    
    Data:
    ---
    certificate: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tLS0tDQphc2RmO2Frc2pkZmxrYWpzZGZsa2phc2xka2ZqYWxza2RqZmxha3NqZGZsaw0KLS0tLS1FTkQgQ0VSVEZJQ0lBVEUtLS0tLS0tLS0t
    password: YWJjZA==
    username: cmVhZGVy
    
  9. demo 사용하는 작업을 실행하십시오. 앞에서는 mydatabasesec 작업의 전체 시크릿 demo을 참조했습니다. certificate 키-값 쌍이 추가된 업데이트된 시크릿을 작업에 사용하려면 새 작업 실행을 제출하십시오. 업데이트된 시크릿을 사용하도록 앱을 업데이트하려면 앱을 다시 시작하십시오.

    ibmcloud ce jobrun submit --name demo2 --job demo
    
  10. ibmcloud ce jobrun logs 명령을 사용하여 작업 실행의 로그를 표시하십시오. 작업 실행의 모든 인스턴스에 대한 로그를 표시하거나 작업 실행의 특정 인스턴스에 대한 로그를 표시할 수 있습니다. 작업 실행의 특정 인스턴스에 대한 로그를 표시하려면 jobrun logs 명령에 --instance 옵션을 사용하십시오. 필요한 경우 jobrun get --name demo2 명령을 사용하여 작업 실행의 인스턴스를 포함한 이 작업 실행의 세부사항을 표시하십시오. 이 예에서는 demo2-0-0의 실행 중인 인스턴스에 대한 로그를 표시합니다. 여기서 demo2는 작업 실행의 이름이고 0arrayindex이며 0retryindex입니다. 출력에 전체 시크릿 certificateusername, passwordmydatabasesec 키가 표시됩니다. 시크릿 값은 디코딩된 환경에 추가됩니다.

ibmcloud ce jobrun logs --instance demo2-0-0

출력 예

Getting logs for job run instance 'demo2-0-0'...
[...]

read_certificate=-----BEGIN CERTIFICATE--------
asdf;aksjdflkajsdflkjasldkfjalskdjflaksjdflk
-----END CERTFICIATE----------
read_password=abcd
read_username=reader

CLI를 사용하여 configmap의 개별 키 참조

이 시나리오에서는 여러 키-값 쌍이 포함된 configmap을 작성한 다음 작업에서 특정 키를 참조해 보겠습니다. 이 시나리오에서는 configmap을 사용하지만, 동일한 일반 단계를 사용하여 개별 키를 시크릿으로 참조하려면 명령에서 secretconfigmap으로 대체하면 됩니다.

  1. mydatabase configmap을 작성한 후 --from-literal KEY=VALUE 옵션을 사용하여 이름 및 URL에 대한 키-값 쌍을 지정하십시오.

    ibmcloud ce configmap create -n mydatabasecm --from-literal name=myname --from-literal url=myurl
    
  2. mydatabasecm 명령을 사용하여 configmap get configmap에 대한 세부사항을 확인하십시오.

    ibmcloud ce configmap get -n mydatabasecm
    

    출력 예

    Getting configmap 'mydatabasecm'...
    OK
    
    Name:          mydatabasecm
    ID:            abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f
    Project Name:  myproject
    Project ID:    01234567-abcd-abcd-abcd-abcdabcd1111
    Age:           16s
    Created:       2020-10-14 13:31:19 -0400 EDT
    
    Data:
    ---
    name: myname
    url: myurl
    
  3. url configmap의 mydatabasecm 키를 참조하도록 작업에 대한 환경 변수를 설정하십시오. --env-from-configmap NAME:KEY_A,KEY_B 옵션을 사용하십시오. 여기서 NAME:KEY_A는 configmap의 KEY_A를 참조하도록 지정합니다.

    ibmcloud ce job create --name keydemo --image busybox --command env --env-from-configmap mydatabasecm:url
    
  4. keydemo 사용하는 작업을 실행하십시오.

    ibmcloud ce jobrun submit --name keydemo1 --job keydemo
    
  5. ibmcloud ce jobrun logs 명령을 사용하여 작업 실행의 로그를 표시하십시오. 작업 실행의 모든 인스턴스에 대한 로그를 표시하거나 작업 실행의 특정 인스턴스에 대한 로그를 표시할 수 있습니다. 작업 실행의 특정 인스턴스에 대한 로그를 표시하려면 jobrun logs 명령에 --instance 옵션을 사용하십시오. 필요한 경우 jobrun get --name keydemo1 명령을 사용하여 작업 실행의 인스턴스를 포함한 이 작업 실행의 세부사항을 표시하십시오. 출력에서 url이 유일한 참조 키이며, name 키는 작업에서 참조되지 않습니다.

    ibmcloud ce jobrun logs --instance keydemo1-0-0
    

    출력 예

    Getting logs for job run instance 'keydemo1-0-0'...
    [...]
    
    url=myurl
    [...]
    

CLI를 사용하여 참조 대체

참조된 시크릿과 configmap을 대체할 수 있습니다. 다음 시나리오는 시크릿 또는 configmap에 대해 완료할 수 있습니다.

시나리오 A. 완전히 참조된 시크릿을 완전히 참조된 다른 시크릿으로 대체

이 시나리오에서는 mydatabasesec-writerusername 키를 사용하여 password 시크릿을 새로 작성한 다음 앞에서 작성한 usernamepasswordmydatabasesec 키를 대체하겠습니다. mydatabasesec 시크릿에는 username=readerpassword=abcd 키가 포함되어 있습니다.

전체 참조는 설정된 순서대로 다른 전체 참조를 대체합니다. 즉, 마지막 참조 세트가 첫 번째 세트를 대체합니다.

  1. 전체 writerjob 시크릿(앞에서 작성함)을 참조하도록 mydatabasesec 작업에 대한 환경 변수를 설정하십시오. mydatabasesec 시크릿에는 username=readerpassword=abcd 키가 포함되어 있습니다.

    ibmcloud ce job create -n writerjob -i busybox -c env --env-from-secret mydatabasesec
    
  2. (선택사항) writerjob 작업의 세부사항을 확인하십시오. 출력에는 mydatabasesec 시크릿에 대한 전체 참조가 표시됩니다.

    ibmcloud ce job get -n writerjob
    

    출력 예

    Getting job 'writerjob'...
    OK
    
    Name:          writerjob
    ID:            abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f
    Project Name:  myproject
    Project ID:    01234567-abcd-abcd-abcd-abcdabcd1111
    Age:           17s
    Created:       2021-02-12T07:12:08-06:00
    [...]
    
    Commands:                 
        env  
    Environment Variables:    
        Type                   Name           Value  
        Secret full reference  mydatabasesec    
    Image:                  busybox  
    Resource Allocation:      
        CPU:     1  
        Memory:  4G  
    
    Runtime:
        Mode:                  task
        Array Indices:         0
        Array Size:            1
        Max Execution Time:    7200
        Retry Limit:           3
    
  3. writerjob 사용하는 작업을 실행하십시오.

    ibmcloud ce jobrun submit --name writerjob1 --job writerjob
    
  4. 작업 실행의 로그를 표시합니다. 작업 실행의 모든 인스턴스에 대한 로그를 표시하거나 작업 실행의 특정 인스턴스에 대한 로그를 표시할 수 있습니다. 이 예에서 writerjob1 작업 실행의 로그를 표시합니다. 출력에 전체 시크릿 usernamepasswordmydatabasesec 키가 표시됩니다. 시크릿 값은 디코딩된 환경에 추가됩니다.

    ibmcloud ce jobrun logs --jobrun writerjob1
    

    출력 예

    Getting jobrun 'writerjob1'...
    Getting instances of jobrun 'writerjob1'...
    Getting logs for all instances of job run 'writerjob1'...
    OK
    [...]
    
    certificate=-----BEGIN CERTIFICATE--------
    asdf;aksjdflkajsdflkjasldkfjalskdjflaksjdflk
    -----END CERTFICIATE----------
    password=abcd
    username=reader
    [...]
    
  5. mydatabasesec-writer 시크릿을 작성한 후 --from-literal 옵션을 사용하여 사용자 이름과 비밀번호에 대한 키-값 쌍을 지정하십시오.

    ibmcloud ce secret create --name mydatabasesec-writer --from-literal username=writer --from-literal password=wxyz
    
  6. mydatabasesec-writer 명령을 사용하여 secret get 시크릿에 대한 세부사항을 확인하십시오. 시크릿의 passwordusername 키에 대한 값은 인코딩되어 있습니다.

    ibmcloud ce secret get -n mydatabasesec-writer
    

    출력 예

    Getting generic secret 'mydatabasesec-writer'...
    OK
    
    Name:          mydatabasesec-writer
    ID:            abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f
    Project Name:  myproject
    Project ID:    01234567-abcd-abcd-abcd-abcdabcd1111
    Age:           14s
    Created:       2020-10-14 13:44:16 -0400 EDT
    
    Data:
    ---
    password: d3h5eg==
    username: d3JpdGVy
    
  7. 전체 mydatabasesec-writer 시크릿을 참조하고 write_ 접두부를 사용하도록 writerjob 작업을 업데이트하십시오.

    ibmcloud ce job update --name writerjob --env-from-secret write_=mydatabasesec-writer
    
  8. (선택사항) 업데이트된 writerjob 작업의 세부사항을 확인하십시오. 이 작업은 mydatabasesecmydatabase-writer 시크릿을 완전히 참조합니다.

    ibmcloud ce job get -n writerjob
    

    출력 예

    Getting job 'writerjob'...
    OK
    
    Name:          writerjob
    ID:            abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f
    Project Name:  myproject
    Project ID:    01234567-abcd-abcd-abcd-abcdabcd1111
    Age:           4m2s
    Created:       2021-02-12T07:12:08-06:00
    [...]
    
    Commands:                 
        env  
    Environment Variables:    
        Type                   Name                          Value  
        Secret full reference  mydatabasesec           
        Secret full reference  write_=mydatabasesec-writer   
    Image:                  busybox  
    Resource Allocation:      
        CPU:     1  
        Memory:  4G  
    
    Runtime:
        Mode:                  task
        Array Indices:         0
        Array Size:            1
        Max Execution Time:    7200
        Retry Limit:           3
    
  9. writerjob 사용하는 작업을 실행하십시오. writerjob 작업은 mydatabasesec 시크릿과 mydatabasesec-writer 시크릿을 모두 참조하도록 업데이트되었으며 이 두 시크릿 모두에 usernamepassword에 대한 키가 포함되어 있으므로, 마지막으로 참조된 전체 시크릿 mydatabasesec-writermydatabasesec 시크릿을 대체합니다.

    완전히 참조된 시크릿 업데이트가 있는 업데이트된 작업 구성을 작업 실행에 사용하려면 새 작업을 실행하십시오. 업데이트된 시크릿을 사용하도록 앱을 업데이트하려면 앱을 다시 시작하십시오.

    ibmcloud ce jobrun submit --name writerjob2 --job writerjob
    
  10. ibmcloud ce jobrun logs 명령을 사용하여 작업 실행의 로그를 표시하십시오. 작업 실행의 모든 인스턴스에 대한 로그를 표시하거나 작업 실행의 특정 인스턴스에 대한 로그를 표시할 수 있습니다. 모든 작업 인스턴스에 대한 로그를 표시하려면 --jobrun 옵션을 jobrun logs 명령과 함께 사용하십시오. 작업 실행의 특정 인스턴스에 대한 로그를 표시하려면 jobrun logs 명령에 --instance 옵션을 사용하십시오. 필요한 경우 jobrun get --name writerjob2 명령을 사용하여 작업 실행의 인스턴스를 포함한 이 작업 실행의 세부사항을 표시하십시오. 출력에서 username 시크릿의 passwordmydatabasesec-writer 키가 mydatabasesec 시크릿의 키를 대체합니다. 또한 로그 출력에서 전체 시크릿 mydatabasesec-writer의 키가 접두부 write_와 함께 표시됩니다. 시크릿 값은 디코딩된 환경에 추가됩니다.

ibmcloud ce jobrun logs --instance writerjob2-0-0

출력 예

Getting logs for job run instance 'writerjob2-0-0'...
[...]

certificate=-----BEGIN CERTIFICATE--------
asdf;aksjdflkajsdflkjasldkfjalskdjflaksjdflk
-----END CERTFICIATE----------
password=abcd
username=reader
write_password=wxyz
write_username=writer
[...]

시나리오 B. 완전히 참조된 시크릿을 키 참조로 대체

사용되는 키가 완전히 참조된 시크릿 또는 configmap에 상주하는 경우 시크릿 또는 configmap의 키에 대한 참조는 순서에 관계없이 항상 시크릿 또는 configmap에 대한 전체 참조를 재정의합니다.

이 시나리오에서는 앞에서 작성한 mydatabasesecmydatabasesec-writer 시크릿과 참조 키를 작업의 시크릿 내에 사용하겠습니다.

  1. writerpicmydatabasesec 시크릿의 특정 키를 참조하도록 mydatabasesec-writer 작업에 대한 환경 변수를 설정하십시오. mydatabasesec 시크릿에는 username=reader, password=abcdcertificate=cert.pem 키가 포함되어 있습니다. mydatabasesec-writer 시크릿에는 username=writerpassword=wxyz 키가 포함되어 있습니다.

    ibmcloud ce job create -n writerpick -i busybox -c env --env-from-secret mydatabasesec-writer:username --env-from-secret mydatabasesec-writer:password --env-from-secret mydatabasesec
    
  2. (선택사항) writerpick 작업의 세부사항을 확인하십시오. 출력에는 mydatabasesec 시크릿에 대한 전체 참조 및 password 시크릿의 usernamemydatabasesec-writer 키에 대한 키 참조가 표시됩니다.

    ibmcloud ce job get -n writerpick
    

    출력 예

    Getting job 'writerpick'...
    OK
    
    Name:          writerpick
    ID:            abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f
    Project Name:  myproject
    Project ID:    01234567-abcd-abcd-abcd-abcdabcd1111
    Age:           107s
    Created:       2021-02-12T07:16:46-06:00  
    [...]
    
    Commands:                 
        env  
    Environment Variables:    
        Type                   Name           Value  
        Secret full reference  mydatabasesec    
        Secret key reference   password       mydatabasesec-writer.password  
        Secret key reference   username       mydatabasesec-writer.username  
    Image:                  busybox  
    Resource Allocation:      
        CPU:     1  
        Memory:  4G  
    
    Runtime:
        Mode:                  task
        Array Indices:         0
        Array Size:            1
        Max Execution Time:    7200
        Retry Limit:           3
    
  3. writerpick 사용하는 작업을 실행하십시오.

    ibmcloud ce jobrun submit --name writerpick1 --job writerpick
    
  4. ibmcloud ce jobrun logs 명령을 사용하여 writerpick1 작업 실행의 로그를 표시하십시오. 작업 실행의 모든 인스턴스에 대한 로그를 표시하거나 작업 실행의 특정 인스턴스에 대한 로그를 표시할 수 있습니다. 작업 실행의 특정 인스턴스에 대한 로그를 표시하려면 jobrun logs 명령에 --instance 옵션을 사용하십시오. 필요한 경우 jobrun get --name writerpick1 명령을 사용하여 작업 실행의 인스턴스를 포함한 이 작업 실행의 세부사항을 표시하십시오. writerpick 작업은 mydatabasesec-writer 시크릿의 특정 키를 참조하고 전체 시크릿 mydatabasesec을 참조하도록 업데이트되었으므로, username 시크릿의 passwordmydatabasesec-writer 키에 대한 참조는 전체 시크릿에 대한 참조를 대체합니다. 시크릿 값은 디코딩된 환경에 추가됩니다.

    ibmcloud ce jobrun logs --instance writerpick1-0-0
    

    출력 예

    Getting logs for job run instance 'writerpick1-0-0'...
    [...]
    
    username=writer
    certificate=-----BEGIN CERTIFICATE--------
    asdf;aksjdflkajsdflkjasldkfjalskdjflaksjdflk
    -----END CERTFICIATE----------
    password=wxyz
    [...]
    

시나리오 C. 키 참조를 새 키로 대체

시크릿 또는 configmap의 특정 키에 대한 참조를 업데이트하고 값을 새 값으로 대체할 수 있습니다.

이 시나리오에서는 앞에서 작성한 mydatabasecm configmap을 사용하겠습니다. 여기에는 키 값을 업데이트할 url:myurl 키가 포함되어 있습니다.

  1. keyref configmap의 특정 키를 참조하도록 mydatabasecm 작업에 대한 환경 변수를 설정하십시오.

    ibmcloud ce job create -n keyref -i busybox -c env --env-from-configmap mydatabasecm:url
    
  2. (선택사항) keyref 작업의 세부사항을 확인하십시오. url configmap의 mydatabasecm 키에 대한 키 참조가 출력에 표시됩니다.

    ibmcloud ce job get -n keyref
    

    출력 예

    Getting job 'keyref'...
    OK
    
    Name:          keyref
    ID:            abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f
    Project Name:  myproject
    Project ID:    01234567-abcd-abcd-abcd-abcdabcd1111
    Age:           65s
    Created:       2021-02-12T07:18:44-06:00  
    [...]
    
    Commands:                 
        env  
    Environment Variables:    
        Type                     Name  Value  
        ConfigMap key reference  url   mydatabasecm.url  
    Image:                  busybox  
    Resource Allocation:      
        CPU:     1  
        Memory:  4G  
    
    Runtime:
        Mode:                  task
        Array Indices:         0
        Array Size:            1
        Max Execution Time:    7200
        Retry Limit:           3
    
  3. keyref 사용하는 작업을 실행하십시오.

    ibmcloud ce jobrun submit --name keyref1 --job keyref
    
  4. ibmcloud ce jobrun logs 명령을 사용하여 keyref1 작업 실행의 실행 중인 인스턴스에 대한 로그를 표시하십시오. 작업 실행의 모든 인스턴스에 대한 로그를 표시하거나 작업 실행의 특정 인스턴스에 대한 로그를 표시할 수 있습니다. 작업 실행의 특정 인스턴스에 대한 로그를 표시하려면 jobrun logs 명령에 --instance 옵션을 사용하십시오. 필요한 경우 jobrun get --name keyref1 명령을 사용하여 작업 실행의 인스턴스를 포함한 이 작업 실행의 세부사항을 표시하십시오. 작업 실행에 url=myurl 키 참조가 사용되었습니다.

    ibmcloud ce jobrun logs --instance keyref1-0-0
    

    출력 예

    Getting logs for job run instance 'keyref1-0-0'...
    [...]
    
    url=myurl
    [...]
    
  5. keyref 작업을 업데이트하여 url=myurl을 새 키로 대체하십시오. --env 옵션을 사용하여 url 키를 업데이트하십시오. job update 명령의 --env 옵션은 작업에 대한 환경 변수를 NAME=VALUE 형식으로 설정합니다.

    ibmcloud ce job update --name keyref --env url=newurl  
    
  6. (선택사항) keyref 작업의 세부사항을 확인하십시오. url configmap의 mydatabasecm 키에 대한 키 참조가 출력에 표시됩니다.

    ibmcloud ce job get -n keyref
    

    출력 예

    Getting job 'keyref'...
    OK
    
    Name:          keyref
    ID:            abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f
    Project Name:  myproject
    Project ID:    01234567-abcd-abcd-abcd-abcdabcd1111
    Age:           3m6s
    Created:       2021-02-12T07:18:44-06:00  
    
    Commands:                 
        env  
    Environment Variables:    
        Type     Name  Value  
        Literal  url   newurl  
    Image:                  busybox  
    Resource Allocation:      
        CPU:     1  
        Memory:  4G  
    
    Runtime:
        Mode:                  task
        Array Indices:         0
        Array Size:            1
        Max Execution Time:    7200
        Retry Limit:           3
    

CLI를 사용하여 완전히 참조된 시크릿 또는 configmap 제거

완전히 참조된 시크릿 또는 configmap을 작업 또는 앱에서 제거할 수 있습니다.

이 시나리오에서는 완전히 참조된 mydatabasesec 시크릿을 demo 작업에서 제거하겠습니다.

  1. demo 작업을 업데이트하여 mydatabasesec 시크릿에 대한 참조를 제거하십시오.

    ibmcloud ce job update -n demo --env-from-secret-rm mydatabasesec
    
  2. demo 작업의 세부사항을 확인하십시오. mydatabasesec 시크릿에 대한 참조가 제거되었음이 출력에 표시됩니다.

    ibmcloud ce job get -n demo
    

    출력 예

    Getting job 'demo'...
    OK
    
    Name:          demo
    ID:            abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f
    Project Name:  myproject
    Project ID:    01234567-abcd-abcd-abcd-abcdabcd1111
    Age:           19m
    Created:       2021-02-12T07:05:23-06:00  
    [...]
    
    Commands:               
        env  
    Image:                busybox    
    Resource Allocation:    
        CPU:     1  
        Memory:  4G  
    
    Runtime:
        Mode:                  task
        Array Indices:         0
        Array Size:            1
        Max Execution Time:    7200
        Retry Limit:           3
    

CLI를 사용하여 키 참조 제거

시크릿 또는 configmap에서 참조된 키를 작업 또는 앱에서 제거할 수 있습니다.

이 시나리오에서는 url 작업에서 keyref 키를 제거하겠습니다.

--env-from-configmap configmap의 url 키를 참조하기 위해 작업에 mydatabasecm 옵션을 사용했지만, 개별 키를 제거할 때는 --env-rm 옵션을 사용할 수 있습니다. job update 또는 app update 명령에 --env-rm 옵션을 사용하면 키가 시크릿 또는 configmap의 개별 키 참조인지 또는 키가 --env 옵션을 사용하여 작업 또는 앱에 직접 설정되었는지에 관계없이 키 참조를 제거할 수 있습니다.

  1. keydef 작업을 업데이트하여 url 키에 대한 참조를 제거하십시오.

    ibmcloud ce job update --name keyref --env-rm url
    
  2. keyref 작업의 세부사항을 확인하십시오. url 키에 대한 참조가 제거되었음이 출력에 표시됩니다.

    ibmcloud ce job get -n keyref
    

    출력 예

    Getting job 'keyref'...
    OK
    
    Name:          keyref
    ID:            abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f
    Project Name:  myproject
    Project ID:    01234567-abcd-abcd-abcd-abcdabcd1111
    Age:           6m27s
    Created:       2021-02-12T07:18:44-06:00  
    [...]
    
    Commands:               
        env  
    Image:                busybox  
    Resource Allocation:    
        CPU:     1  
        Memory:  4G  
    
    Runtime:
        Mode:                  task
        Array Indices:         0
        Array Size:            1
        Max Execution Time:    7200
        Retry Limit:           3