Mit Umgebungsvariablen auf geheime Schlüssel und Konfigurationszuordnungen verweisen (Befehlszeilenschnittstelle)

Nachdem Sie Secrets und Configmaps in Code Engine erstellt haben, können die als Schlüssel-Wert-Paare gespeicherten Informationen von Ihrer Anwendung, Ihrem Job oder Ihrem Funktions-Workload als Umgebungsvariable verwendet werden, indem auf das vollständige Secret oder die Configmap oder auf einzelne Schlüssel verwiesen wird.

Das Arbeiten mit geheimen Schlüsseln in Form von Umgebungsvariablen ähnelt dem Arbeiten mit Konfigurationszuordnungen in Form von Umgebungsvariablen. Bei der Arbeit mit geheimen Schlüsseln werden die Daten verschlüsselt.

Beachten Sie die folgenden Informationen, wenn Sie eine Anwendung, einen Auftrag oder eine Funktion aktualisieren, die eine Umgebungsvariable enthält, die auf configmaps oder secrets verweist.

Wenn Sie eine Anwendung, einen Job oder eine Funktion aktualisieren, die eine Umgebungsvariable hat, die eine Configmap (oder ein Geheimnis) vollständig referenziert, um eine andere Configmap (oder ein Geheimnis) vollständig zu referenzieren, überschreiben vollständige Referenzen andere vollständige Referenzen in der Reihenfolge, in der sie gesetzt wurden (der letzte referenzierte Satz überschreibt den ersten Satz).

Wenn Sie eine Anwendung, einen Job oder eine Funktion aktualisieren, die eine Umgebungsvariable hat, die einen Schlüssel in einer configmap (oder secret) referenziert, um denselben Schlüssel in einer anderen configmap (oder secret) zu referenzieren, dann wird der zuletzt referenzierte Schlüssel verwendet.

Wenn Sie eine Anwendung, einen Job oder eine Funktion mit einer Umgebungsvariablen aktualisieren, die vollständig auf eine Configmap (oder ein Geheimnis) verweist, um einen Verweis auf einen bestimmten Schlüssel hinzuzufügen, dann überschreibt der Verweis auf den bestimmten Schlüssel den Verweis auf die vollständige Configmap (oder das Geheimnis).

Grundlegende Informationen zum Verweisen auf Configmaps oder geheime Schlüssel mit der CLI finden Sie unter Verweisen auf configmaps mit der CLI und Verweisen auf geheime Schlüssel mit der CLI.

Bei geheimen Schlüsseln und Konfigurationszuordnungen kommen folgende Szenarios infrage:

In Befehlszeilenschnittstelle auf vollständigen geheimen Schlüssel verweisen

Geheime Schlüssel und Konfigurationszuordnungen bestehen aus Schlüssel-/Wert-Paaren. Umgebungsvariablen sind das Ergebnis der Bereitstellung eines Eintrags pro Schlüssel, wenn auf den vollständigen geheimen Schlüssel oder die Konfigurationszuordnung verwiesen wird. Wenn mehrere geheime Schlüssel (oder Konfigurationszuordnungen) denselben benannten Schlüssel enthalten, erhalten Sie nur einen der Schlüssel im referenzierten geheimen Schlüssel oder in der Konfigurationszuordnung.

In diesem Szenario wird ein geheimer Schlüssel erstellt, in dem Schlüssel/Wert-Paare für Benutzernamen und Kennwörter enthalten sind; anschließend wird auf den vollständigen geheimen Schlüssel verwiesen, wenn ein Job ausgeführt wird. Sie können den geheimen Schlüssel aktualisieren und einen Schlüssel hinzufügen; danach wird die Verwendung des neuen Schlüssels in einem Job veranschaulicht. In diesem Szenario wird zwar ein geheimer Schlüssel verwendet, Sie können anhand derselben Schritte auch auch vollständig auf eine Konfigurationszuordnung verweisen; hierzu müssen Sie configmap anstatt secret in den Befehlen verwenden.

  1. Erstellen Sie den geheimen Schlüssel mydatabasesec und geben Sie die Schlüssel/Wert-Paare für Benutzername und Kennwort mit der Option --from-literal an.

    ibmcloud ce secret create -n mydatabasesec --from-literal username=reader --from-literal password=abcd
    
  2. Zeigen Sie Details zum geheimen Schlüssel mydatabasesec mit dem Befehl secret get an. Die Werte für die Schlüssel password und username des geheimen Schlüssels werden verschlüsselt.

    ibmcloud ce secret get -n mydatabasesec
    

    Beispielausgabe

    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. Legen Sie eine Umgebungsvariable für einen Job fest, um auf den vollständigen geheimen Schlüssel mydatabasesec zu verweisen. In diesem Beispiel wird die Option --env-from-secret PREFIX=NAME verwendet, wobei PREFIX=NAME angibt, dass auf die vollständige Konfigurationszuordnung verwiesen werden soll, wobei jedem Schlüssel das Präfix PREFIX vorangestellt wird. Bei Verwendung des Präfix read_ wird jedem Schlüssel das Präfix read_vorangestellt. Da das Image busybox standardmäßig keine Ausgabe druckt, gibt die Option -c env an, dass alle Umgebungsvariablen in dem Container gedruckt werden sollen.

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

    Sie können ein Präfix verwenden, um sicherzustellen, dass alle Umgebungsvariablen in Ihrem Job oder in Ihrer App eindeutig sind. Wenn Sie beispielsweise über einen geheimen Schlüssel mit den Schlüsseln a, b und c verfügen, werden diese Umgebungsvariablen als a, b und c angezeigt. Wenn Sie jedoch ein Präfix wie read_ hinzufügen, werden die Schlüssel mit dem Präfix angezeigt, wie z. B. read_a, read_b und read_c. Die Verwendung eines Präfix gruppiert auch Ihre Umgebungsvariablen in der referenzierenden App, im referenzierenden Job oder in der referenzierenden Jobausführung und hilft Ihnen, Duplikate von Schlüsseln in Konfigurationszuordnungen oder geheimen Schlüsseln zu vermeiden.

  4. (Optional) Zeigen Sie die Details des Jobs demo an. In der Ausgabe wird der vollständige Verweis auf den geheimen Schlüssel mydatabasesec angezeigt.

    ibmcloud ce job get -n demo
    

    Beispielausgabe

    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. Führen Sie einen Job aus, von dem die Konfiguration des Jobs demo verwendet wird.

    ibmcloud ce jobrun submit --name demo1 --job demo
    
  6. Zeigen Sie die Protokolle der Jobausführung an. Sie können Protokolle aller Instanzen einer Jobausführung oder Protokolle einer bestimmten Instanz einer Jobausführung anzeigen. In diesem Beispiel werden die Protokolle der demo1-Jobausführung angezeigt. Beachten Sie in der Protokollausgabe, dass die Schlüssel des vollständigen geheimen Schlüssels mydatabasesec mit dem Präfix read_ angezeigt werden. Die Werte der geheimen Schlüssel werden der Umgebung entschlüsselt hinzugefügt.

    ibmcloud ce jobrun logs --jobrun demo1
    

    Beispielausgabe

    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. Aktualisieren Sie den geheimen Schlüssel mydatabasesec, um einen Schlüssel mit der Option --from-file hinzuzufügen. Für diese Option wird das Format --from-file FILE oder --from-file KEY=FILE verwendet. Im folgenden Befehl steht certificate für den Schlüssel und cert.pem für den Namen der Datei.

    ibmcloud ce secret update -n mydatabasesec --from-file certificate=cert.pem
    
  8. Zeigen Sie die Details des aktualisierten geheimen Schlüssel mydatabasesec mit dem Befehl secret get an. Der geheime Schlüssel enthält jetzt die drei Schlüssel certificate, password und username. Die Werte der geheimen Schlüssel sind verschlüsselt.

    ibmcloud ce secret get -n mydatabasesec
    

    Beispielausgabe

    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. Führen Sie einen Job aus, von dem der Job demo verwendet wird. Vorher haben Sie den vollständigen geheimen Schlüssel mydatabasesec über den Job demo referenziert. Übergeben Sie eine neue Jobausführung, damit vom Job der aktualisierte geheime Schlüssel mit dem hinzufügten Schlüssel/Wert-Paar certificate verwendet wird. Wenn Sie eine App aktualisieren möchten, damit von ihr der aktualisierte geheime Schlüssel verwendet wird, starten Sie die App erneut.

    ibmcloud ce jobrun submit --name demo2 --job demo
    
  10. Zeigen Sie die Protokolle der Jobausführung an, indem Sie den Befehl ibmcloud ce jobrun logs verwenden. Sie können Protokolle aller Instanzen einer Jobausführung oder Protokolle einer bestimmten Instanz einer Jobausführung anzeigen. Wenn Sie die Protokolle einer bestimmten Instanz des Joblaufs anzeigen möchten, verwenden Sie die Option --instance mit dem Befehl jobrun logs. Falls erforderlich, verwenden Sie den Befehl jobrun get --name demo2, um Details zu dieser Jobausführung anzuzeigen, einschließlich der Instanzen der Jobausführung. Zeigen Sie im folgenden Beispiel die Protokolle der aktiven Instanz von demo2-0-0 an; hierbei steht demo2 für den Namen der Jobausführung, 0 steht für arrayindex und 0 für retryindex. Beachten Sie, dass in der Ausgabe die Schlüssel certificate, username und password des vollständigen geheimen Schlüssels mydatabasesec angezeigt werden. Die Werte der geheimen Schlüssel werden der Umgebung entschlüsselt hinzugefügt.

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

Beispielausgabe

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

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

In Befehlszeilenschnittstelle auf einzelne Schlüssel einer Konfigurationszuordnung verweisen

Im folgenden Szenario wird eine Konfigurationszuordnung erstellt, in der mehrere Schlüssel/Wert-Paare enthalten sind. Anschließend werden bestimmte Schlüssel in einem Job referenziert. In diesem Szenario wird zwar eine Konfigurationszuordnung verwendet, Sie können anhand derselben allgemeinen Schritte aber auch auf einzelne Schlüssel in einem geheimen Schlüssel verweisen. Hierzu müssen Sie secret anstatt configmap in den Befehlen verwenden.

  1. Erstellen Sie die Konfigurationszuordnung mydatabase und geben Sie die Schlüssel/Wert-Paare für einen Namen und eine URL mithilfe der Option --from-literal KEY=VALUE an.

    ibmcloud ce configmap create -n mydatabasecm --from-literal name=myname --from-literal url=myurl
    
  2. Zeigen Sie die Details der Konfigurationszuordnung mydatabasecm mit dem Befehl configmap get an.

    ibmcloud ce configmap get -n mydatabasecm
    

    Beispielausgabe

    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. Legen Sie eine Umgebungsvariable für einen Job fest, um auf den Schlüssel url in der Konfigurationszuordnung mydatabasecm zu verweisen. Verwenden Sie hierzu die Option --env-from-configmap NAME:KEY_A,KEY_B, wobei NAME:KEY_A angibt, dass KEY_A der Konfigurationszuordnung referenziert werden soll.

    ibmcloud ce job create --name keydemo --image busybox --command env --env-from-configmap mydatabasecm:url
    
  4. Führen Sie einen Job aus, von dem der Job keydemo verwendet wird.

    ibmcloud ce jobrun submit --name keydemo1 --job keydemo
    
  5. Zeigen Sie die Protokolle der Jobausführung an, indem Sie den Befehl ibmcloud ce jobrun logs verwenden. Sie können Protokolle aller Instanzen einer Jobausführung oder Protokolle einer bestimmten Instanz einer Jobausführung anzeigen. Wenn Sie die Protokolle einer bestimmten Instanz des Joblaufs anzeigen möchten, verwenden Sie die Option --instance mit dem Befehl jobrun logs. Falls erforderlich, verwenden Sie den Befehl jobrun get --name keydemo1, um Details zu dieser Jobausführung anzuzeigen, einschließlich der Instanzen der Jobausführung. Beachten Sie in der Ausgabe, dass url der einzige referenzierte Schlüssel ist und dass vom Job nicht der Schlüssel name referenziert wird.

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

    Beispielausgabe

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

In Befehlszeilenschnittstelle Verweise überschreiben

Sie können referenzierte geheime Schlüssel und Konfigurationszuordnungen überschreiben. Bei geheimen Schlüsseln und Konfigurationszuordnungen kommen folgende Szenarios infrage:

Szenario A. Einen vollständig referenzierten geheimen Schlüssel mit einem anderen vollständig referenzierten geheimen Schlüssel überschreiben

Im folgenden Szenario wird der neue geheime Schlüssel mydatabasesec-writer mit den Schlüsseln username und password erstellt und die Schlüssel username und password im zuvor erstellten geheimen Schlüssel mydatabasesec werden überschrieben. Im geheimen Schlüssel mydatabasesec sind die Schlüssel username=reader und password=abcd enthalten.

Durch vollständige Referenzen werden andere vollständige Referenzen in der Reihenfolge überschrieben, in der sie festgelegt wurden (der zuletzt referenzierte Satz überschreibt den zuerst festgelegten Satz).

  1. Legen Sie eine Umgebungsvariable für den Job writerjob fest, um auf den vollständigen geheimen Schlüssel mydatabasesec zu verweisen. Im geheimen Schlüssel mydatabasesec sind die Schlüssel username=reader und password=abcd enthalten.

    ibmcloud ce job create -n writerjob -i busybox -c env --env-from-secret mydatabasesec
    
  2. (Optional) Zeigen Sie die Details des Jobs writerjob an. In der Ausgabe wird der vollständige Verweis auf den geheimen Schlüssel mydatabasesec angezeigt.

    ibmcloud ce job get -n writerjob
    

    Beispielausgabe

    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. Führen Sie einen Job aus, von dem der Job writerjob verwendet wird.

    ibmcloud ce jobrun submit --name writerjob1 --job writerjob
    
  4. Zeigen Sie die Protokolle der Jobausführung an. Sie können Protokolle aller Instanzen einer Jobausführung oder Protokolle einer bestimmten Instanz einer Jobausführung anzeigen. In diesem Beispiel werden die Protokolle der writerjob1-Jobausführung angezeigt. Beachten Sie, dass in der Ausgabe die Schlüssel username und password des vollständigen geheimen Schlüssels mydatabasesec angezeigt werden. Die Werte der geheimen Schlüssel werden der Umgebung entschlüsselt hinzugefügt.

    ibmcloud ce jobrun logs --jobrun writerjob1
    

    Beispielausgabe

    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. Erstellen Sie den geheimen Schlüssel mydatabasesec-writer und geben Sie die Schlüssel/Wert-Paare für Benutzername und Kennwort mit der Option --from-literal an.

    ibmcloud ce secret create --name mydatabasesec-writer --from-literal username=writer --from-literal password=wxyz
    
  6. Zeigen Sie Details zum geheimen Schlüssel mydatabasesec-writer mit dem Befehl secret get an. Die Werte für die Schlüssel password und username des geheimen Schlüssels werden verschlüsselt.

    ibmcloud ce secret get -n mydatabasesec-writer
    

    Beispielausgabe

    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. Aktualisieren Sie den Job writerjob, um auf den vollständigen geheimen Schlüssel mydatabasesec-writer zu verweisen, und verwenden Sie das Präfix write_.

    ibmcloud ce job update --name writerjob --env-from-secret write_=mydatabasesec-writer
    
  8. (Optional) Zeigen Sie die Details des aktualisierten Jobs writerjob an. Vom Job werden die geheimen Schlüssel mydatabasesec und mydatabase-writer vollständig referenziert.

    ibmcloud ce job get -n writerjob
    

    Beispielausgabe

    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. Führen Sie einen Job aus, von dem der Job writerjob verwendet wird. Da der Job writerjob so aktualisiert wurde, dass sowohl der geheime Schlüssel mydatabasesec als auch der geheime Schlüssel mydatabasesec-writer referenziert wird, und beide geheime Schlüssel die Schlüssel für username und password enthalten, überschreibt der zuletzt referenzierte vollständige geheime Schlüssel mydatabasesec-writer den geheimen Schlüssel mydatabasesec.

    Führen Sie einen neuen Job aus, damit für eine Jobausführung die aktualisierte Konfiguration eines Jobs mit den Aktualisierungen für die vollständig referenzierten geheimen Schlüssel verwendet wird. Wenn Sie eine App aktualisieren möchten, damit von ihr der aktualisierte geheime Schlüssel verwendet wird, starten Sie die App erneut.

    ibmcloud ce jobrun submit --name writerjob2 --job writerjob
    
  10. Zeigen Sie die Protokolle der Jobausführung an, indem Sie den Befehl ibmcloud ce jobrun logs verwenden. Sie können Protokolle aller Instanzen einer Jobausführung oder Protokolle einer bestimmten Instanz einer Jobausführung anzeigen. Verwenden Sie die Option --jobrun im Befehl jobrun logs, um die Protokolle aller Instanzen eines Jobs anzuzeigen. Wenn Sie die Protokolle einer bestimmten Instanz des Joblaufs anzeigen möchten, verwenden Sie die Option --instance mit dem Befehl jobrun logs. Falls erforderlich, verwenden Sie den Befehl jobrun get --name writerjob2, um Details zu dieser Jobausführung anzuzeigen, einschließlich der Instanzen der Jobausführung. Beachten Sie, dass in der Ausgabe die Schlüssel username und password des geheimen Schlüssels mydatabasesec-writer die Schlüssel des geheimen Schlüssels mydatabasesec überschrieben haben. Außerdem werden in der Protokollausgabe die Schlüssel des vollständigen geheimen Schlüssels mydatabasesec-writer mit dem Präfix write_ angezeigt. Geheime Werte werden der decodierten Umgebung hinzugefügt.

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

Beispielausgabe

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
[...]

Szenario B. Vollständig referenzierten geheimen Schlüssel mit einem Schlüsselverweis überschreiben

Durch Verweise auf einen Schlüssel in einem geheimen Schlüssel oder einer Konfigurationszuordnung wird ein vollständiger Verweis auf einen geheimen Schlüssel oder eine Konfigurationszuordnung ohne Beachtung der Reihenfolge überschrieben, wenn sich der verwendete Schlüssel in einem vollständig referenzierten geheimen Schlüssel oder in einer vollständig referenzierten Konfigurationszuordnung befindet.

Im folgenden Szenario werden die vorher erstellten geheimen Schlüssel mydatabasesec und mydatabasesec-writer und Referenzschlüssel in den geheimen Schlüsseln aus einem Job verwendet.

  1. Legen Sie eine Umgebungsvariable für den Job writerpic fest, sodass bestimmte Schlüssel in den geheimen Schlüsseln mydatabasesec und mydatabasesec-writer referenziert werden. Der geheime Schlüssel mydatabasesec enthält die Schlüssel username=reader, password=abcd und certificate=cert.pem. Im geheimen Schlüssel mydatabasesec-writer sind die Schlüssel username=writer und password=wxyz enthalten.

    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. (Optional) Zeigen Sie die Details des Jobs writerpick an. In der Ausgabe werden der vollständige Verweis auf den geheimen Schlüssel mydatabasesec und der Schlüsselverweis auf die Schlüssel password und username des geheimen Schlüssels mydatabasesec-writer angezeigt.

    ibmcloud ce job get -n writerpick
    

    Beispielausgabe

    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. Führen Sie einen Job aus, von dem der Job writerpick verwendet wird.

    ibmcloud ce jobrun submit --name writerpick1 --job writerpick
    
  4. Zeigen Sie die Protokolle der Jobausführung writerpick1 an, indem Sie den Befehl ibmcloud ce jobrun logs verwenden. Sie können Protokolle aller Instanzen einer Jobausführung oder Protokolle einer bestimmten Instanz einer Jobausführung anzeigen. Wenn Sie die Protokolle einer bestimmten Instanz des Joblaufs anzeigen möchten, verwenden Sie die Option --instance mit dem Befehl jobrun logs. Falls erforderlich, verwenden Sie den Befehl jobrun get --name writerpick1, um Details zu dieser Jobausführung anzuzeigen, einschließlich der Instanzen der Jobausführung. Da der Job writerpick so aktualisiert wurde, dass bestimmte Schlüssel im geheimen Schlüssel mydatabasesec-writer und der vollständige geheime Schlüssel mydatabasesec referenziert werden, überschreibt der Verweis auf die Schlüssel username und password im geheimen Schlüssel mydatabasesec-writer den Verweis auf den vollständigen geheimen Schlüssel. Die Werte der geheimen Schlüssel werden der Umgebung entschlüsselt hinzugefügt.

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

    Beispielausgabe

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

Szenario C. Schlüsselverweise mit neuen Schlüsseln überschreiben

Sie können den Verweis auf einen bestimmten Schlüssel in einem geheimen Schlüssel oder in einer Konfigurationszuordnung aktualisieren und den Wert durch einen neuen Wert überschreiben.

Im folgenden Szenario wird die zuvor erstellte Konfigurationszuordnung mydatabasecm verwendet, in der der Schlüssel url:myurl enthalten ist, um den Wert des Schlüssels zu aktualisieren.

  1. Legen Sie eine Umgebungsvariable für den Job keyref fest, um auf bestimmte Schlüssel in der Konfigurationszuordnung mydatabasecm zu verweisen.

    ibmcloud ce job create -n keyref -i busybox -c env --env-from-configmap mydatabasecm:url
    
  2. (Optional) Zeigen Sie die Details des Jobs keyref an. In der Ausgabe wird der Schlüsselverweis auf den Schlüssel url in der Konfigurationszuordnung mydatabasecm angezeigt.

    ibmcloud ce job get -n keyref
    

    Beispielausgabe

    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. Führen Sie einen Job aus, von dem der Job keyref verwendet wird.

    ibmcloud ce jobrun submit --name keyref1 --job keyref
    
  4. Zeigen Sie die Protokolle einer aktiven Instanz der Jobausführung keyref1 an, indem Sie den Befehl ibmcloud ce jobrun logs verwenden. Sie können Protokolle aller Instanzen einer Jobausführung oder Protokolle einer bestimmten Instanz einer Jobausführung anzeigen. Wenn Sie die Protokolle einer bestimmten Instanz des Joblaufs anzeigen möchten, verwenden Sie die Option --instance mit dem Befehl jobrun logs. Falls erforderlich, verwenden Sie den Befehl jobrun get --name keyref1, um Details zu dieser Jobausführung anzuzeigen, einschließlich der Instanzen der Jobausführung. Von der Jobausführung wurde der Schlüsselverweis url=myurl verwendet.

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

    Beispielausgabe

    Getting logs for job run instance 'keyref1-0-0'...
    [...]
    
    url=myurl
    [...]
    
  5. Aktualisieren Sie den Job keyref so, dass url=myurl durch einen neuen Schlüssel überschrieben wird. Verwenden Sie die Option --env, um den Schlüssel url zu aktualisieren. Die Option --env des Befehls job update setzt Umgebungsvariablen für den Auftrag im Format NAME=VALUE.

    ibmcloud ce job update --name keyref --env url=newurl  
    
  6. (Optional) Zeigen Sie die Details des Jobs keyref an. In der Ausgabe wird der Schlüsselverweis auf den Schlüssel url in der Konfigurationszuordnung mydatabasecm angezeigt.

    ibmcloud ce job get -n keyref
    

    Beispielausgabe

    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
    

Entfernen von vollständig referenzierten Geheimnisse oder configmaps mit der CLI

Sie können einen vollständig referenzierten geheimen Schlüssel oder eine vollständig referenzierte Konfigurationszuordnung aus einem Job oder einer App entfernen.

Im folgenden Szenario wird der vollständig referenzierte geheime Schlüssel mydatabasesec aus dem Job demo entfernt.

  1. Aktualisieren Sie den Job demo so, dass der Verweis auf den geheimen Schlüssel mydatabasesec entfernt wird.

    ibmcloud ce job update -n demo --env-from-secret-rm mydatabasesec
    
  2. Zeigen Sie die Details des Jobs demo an. Aus der Ausgabe ist ersichtlich, dass der Verweis auf den geheimen Schlüssel mydatabasesec entfernt wurde.

    ibmcloud ce job get -n demo
    

    Beispielausgabe

    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
    

In Befehlszeilenschnittstelle Schlüsselverweise entfernen

Sie können einen referenzierten Schlüssel in einem geheimen Schlüssel oder in einer Konfigurationszuordnung aus einem Job oder einer App entfernen.

Im folgenden Szenario wird der Schlüssel url aus dem Job keyref entfernt.

Auch wenn die Option --env-from-configmap für einen Job zum Referenzieren des Schlüssels url in der Konfigurationszuordnung mydatabasecm verwendet wurde, können Sie die Option --env-rm zum Entfernen einzelner Schlüssel verwenden. Sie können die Option --env-rm mit dem Befehl job update oder app update verwenden, um Schlüsselreferenzen zu entfernen; dies ist unabhängig davon, ob es sich bei den Schlüsseln um einzelne Schlüsselverweise in einem geheimen Schlüssel oder in einer Konfigurationszuordnung handelt oder ob die Schlüssel direkt für einen Job oder eine App mit der Option --env festgelegt wurden.

  1. Aktualisieren Sie den Job keydef so, dass der Verweis auf den Schlüssel url entfernt wird.

    ibmcloud ce job update --name keyref --env-rm url
    
  2. Zeigen Sie die Details des Jobs keyref an. Aus der Ausgabe ist ersichtlich, dass der Verweis auf den Schlüssel url entfernt wurde.

    ibmcloud ce job get -n keyref
    

    Beispielausgabe

    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