Mit geheimen Schlüsseln arbeiten

In Code Engineerfahren Sie, wie Sie mit geheimen Schlüsseln arbeiten können. In Code Engine können Sie Ihre Informationen als Schlüssel-Wert-Paare in Secrets speichern, die von Ihrer Funktion, Ihrem Job oder Ihrer Anwendung unter Verwendung von Umgebungsvariablen verwendet werden können.

Was sind Geheimnisse und warum sollte ich sie nutzen?

In Code Enginesind geheime Schlüssel (und ConfigMaps) eine Sammlung von Schlüssel/Wert-Paaren. Wenn sie Umgebungsvariablen zugeordnet sind, werden die NAME=VALUE-Beziehungen so konfiguriert, dass der Name der Umgebungsvariablen dem 'Schlüssel' der einzelnen Einträge in diesen Zuordnungen entspricht und der Wert der Umgebungsvariablen dem 'Wert' des jeweiligen Schlüssels.

Von einem geheimen Schlüssel wird eine Methode zum Einschließen sensibler Konfigurationsinformationen wie Kennwörter oder SSH-Schlüssel bereitgestellt. Indem Sie Werte aus Ihrem Geheimnis referenzieren, können Sie sensible Informationen von Ihrer Bereitstellung entkoppeln, um Ihre Anwendung, Funktion oder Aufgabe portabel zu halten. Alle, die über eine Zugriffsberechtigung für Ihr Projekt verfügen, können auch Ihre geheimen Schlüssel anzeigen; bedenken Sie, dass die Informationen des geheimen Schlüssels mit diesen Benutzern gemeinsam genutzt werden können. Geheime Schlüssel enthalten die Informationen in Form von Schlüssel/Wert-Paaren.

Da Secrets und Configmaps ähnliche Entitäten sind (mit dem Unterschied, dass Secrets sicherer gespeichert werden), ist auch die Art und Weise, wie Sie mit Secrets und Configmaps interagieren und arbeiten, ähnlich. Weitere Informationen zu Konfigurationszuordnungen finden Sie unter Mit Konfigurationszuordnungen arbeiten.

Welche Art von geheimen Schlüsseln kann ich in Code Engineerstellen?

Code Engine unterstützt verschiedene geheime Schlüssel und stellt Optionen zum Erstellen und Arbeiten mit geheimen Schlüsseln bereit.

In der folgenden Tabelle sind die unterstützten geheimen Schlüssel in Code Enginezusammengefasst.

Geheimnisse in Code Engine
Name Beschreibung
Basisauthentifizierung Ein geheimer Schlüssel, der einen Schlüssel username und password enthält.
Verwenden Sie grundlegende Authentifizierungsgeheimnisse, wenn Sie auf einen Dienst zugreifen, der eine grundlegende HTTP Authentifizierung erfordert.
Generisch Ein geheimer Schlüssel, der einfache Schlüssel/Wert-Paare und Code Engine speichert, geht weder von den definierten Schlüssel/Wert-Paaren noch von der beabsichtigten Verwendung des geheimen Schlüssels aus.
Verwenden Sie generische geheime Schlüssel, wenn Sie eigene Schlüssel/Wert-Paare für den Zugriff auf einen Service definieren wollen.
HMAC Ein Geheimnis, das einen access_key_id und einen secret_access_key Schlüssel enthält.
Verwenden Sie HMAC-Anmeldeinformationen, um S3-compatible Tools und Bibliotheken zu verwenden, die eine Authentifizierung erfordern, aber keine IBM Cloud® Identity and Access Management API-Schlüssel unterstützen.
Registry Ein geheimer Schlüssel, der Berechtigungsnachweise für den Zugriff auf eine Container-Registry speichert.
Verwenden Sie geheime Registry-Schlüssel, wenn Sie mit Code Engine-Apps oder -Jobs für den Zugriff auf ein Container-Image arbeiten. Oder Sie verwenden Code Engine, um ein Container-Image zu erstellen, und der geheime Registry-Schlüssel wird von Code Engine verwendet, um auf die Registry zuzugreifen, um das erstellte Container-Image zu speichern.
Dieser geheime Schlüssel wird in der Befehlszeilenschnittstelle auch als Registry access secret bezeichnet.
Servicezugriff Ein geheimer Schlüssel, der Berechtigungsnachweise für den Zugriff auf eine IBM Cloud-Serviceinstanz speichert.
Verwenden Sie Dienstzugriffsgeheimnisse, wenn Sie mit Dienstverknüpfungen in Code Engine arbeiten. Code Engine kann dieses Geheimnis automatisch generieren oder Sie können Ihr eigenes benutzerdefiniertes Dienstzugriffsgeheimnis erstellen.
SSH Ein geheimer Schlüssel, der Berechtigungsnachweise für die Authentifizierung bei einem Service mit einem SSH-Schlüssel speichert, z. B. die Authentifizierung bei einem Git-Repository, z. B. GitHub oder GitLab.
Verwenden Sie geheime SSH-Schlüssel, wenn Code Engine ein Container-Image für Sie erstellen soll. Code Engine verwendet diesen geheimen Schlüssel, um auf Ihren Quellcode in einem Code-Repository zuzugreifen. Verwenden Sie diesen geheimen Schlüssel beispielsweise bei Buildausführungen, um auf Ihren Quellcode in einem Repository wie GitHub oder GitLabzuzugreifen.
Dieser geheime Schlüssel wird auch als Git repository access secret in der Befehlszeilenschnittstelle und Code repo access in der Konsole verwendet.
Transport Layer Security (TLS) Ein geheimer Schlüssel, der ein signiertes TLS-Zertifikat enthält, einschließlich aller Zwischenzertifikate und des zugehörigen privaten Schlüssels von einer Zertifizierungsstelle (CA).
Verwenden Sie geheime TLS-Schlüssel, wenn Sie mit angepassten Domänenzuordnungen in Code Enginearbeiten.

Geheime Schlüssel erstellen

Verwenden Sie Geheimnisse, um Ihren Anwendungen, Aufträgen oder Funktionen sensible Informationen zur Verfügung zu stellen. Geheime Schlüssel sind in Schlüssel/Wert-Paaren definiert und die in den geheimen Schlüsseln gespeicherten Daten sind verschlüsselt.

Geheimen Schlüssel über die Konsole erstellen

In diesem Abschnitt erfahren Sie, wie Sie geheime Schlüssel über die Code Engine-Konsole erstellen können.

In diesem Abschnitt erfahren Sie, wie Sie die folgenden Typen von geheimen Schlüsseln über die Konsole erstellen:

Erstellen eines generischen Geheimnisses von der Konsole aus

Lernen Sie, wie Sie über die Code Engine Konsole generische Secrets erstellen, die von Funktionen, Jobs oder Anwendungen als Umgebungsvariablen verwendet werden können.

Erstellen Sie zunächst ein Projekt, bevor Sie beginnen.

  1. Wenn Ihr Projekt den Status Aktiv hat, klicken Sie auf der Seite Code Engine Projekte auf den Namen Ihres Projekts.
  2. Klicken Sie auf der Seite 'Komponenten' auf Geheime Schlüssel und Konfigurationszuordnungen.
  3. Klicken Sie auf der Seite 'Geheime Schlüssel und Konfigurationszuordnungen' auf Erstellen, um Ihren geheimen Schlüssel zu erstellen.
  4. Führen Sie auf der Seite 'Create secret or configmap' die folgenden Schritte aus:
    1. Wählen Sie Generischer geheimer Schlüssel aus und klicken Sie auf Next.
    2. Geben Sie einen Namen an, z. B. mysecret-generic.
    3. Klicken Sie auf Schlüssel/Wert-Paar hinzufügen. Geben Sie ein oder mehrere Schlüssel/Wert-Paare für diesen geheimen Schlüssel an. Geben Sie zum Beispiel einen Schlüssel als secret1 mit dem Wert mysecret1 und einen anderen Schlüssel als secret2 mit dem Wert target-secret an. Der von Ihnen für den Schlüssel gewählte Namen muss nicht mit dem Namen der Umgebungsvariablen übereinstimmen. Der ausgeblendete Wert für den Schlüssel kann übrigens bei Bedarf angezeigt werden.
    4. Klicken Sie auf Erstellen, um den geheimen Schlüssel zu erstellen.

Nachdem Ihr Geheimnis von der Konsole aus erstellt wurde, gehen Sie zur Seite Secrets and configmaps, um eine Liste der definierten Geheimnisse und configmaps anzuzeigen. Sie können Filter anwenden, um die Liste an Ihre Anforderungen anzupassen.

Erstellen eines HMAC-Geheimnisses über die Konsole

Erfahren Sie, wie Sie HMAC-Geheimnisse über die Konsole Code Engine erstellen, die von Funktionen, Jobs oder Anwendungen als Umgebungsvariablen verwendet werden können. Sie werden mit S3-compatible Tools und Bibliotheken verwendet, die eine Authentifizierung erfordern, aber keine IBM Cloud® Identity and Access Management API-Schlüssel unterstützen.

Erstellen Sie zunächst ein Projekt, bevor Sie beginnen.

  1. Wenn Ihr Projekt den Status Aktiv hat, klicken Sie auf der Seite Code Engine Projekte auf den Namen Ihres Projekts.
  2. Klicken Sie auf der Seite 'Komponenten' auf Geheime Schlüssel und Konfigurationszuordnungen.
  3. Klicken Sie auf der Seite 'Geheime Schlüssel und Konfigurationszuordnungen' auf Erstellen, um Ihren geheimen Schlüssel zu erstellen.
  4. Führen Sie auf der Seite 'Create secret or configmap' die folgenden Schritte aus:
    1. Wählen Sie HMAC secret und klicken Sie auf Next.
    2. Geben Sie einen Namen an, z. B. mysecret-hmac.
    3. Geben Sie die Zugriffsschlüssel-ID an.
    4. Geben Sie den geheimen Zugangsschlüssel an. Der ausgeblendete Wert für den Schlüssel kann übrigens bei Bedarf angezeigt werden.
    5. Klicken Sie auf Erstellen, um den geheimen Schlüssel zu erstellen.

Nachdem Ihr Geheimnis von der Konsole aus erstellt wurde, gehen Sie zur Seite Secrets and configmaps, um eine Liste der definierten Geheimnisse und configmaps anzuzeigen. Sie können Filter anwenden, um die Liste an Ihre Anforderungen anzupassen.

Weitere Informationen über HMAC-Geheimnisse finden Sie unter IBM Cloud Object Storage- API-Schlüssel vs. HMAC.

Erstellen eines Registrierungsgeheimnisses über die Konsole

Hier erfahren Sie, wie Sie geheime Registry-Schlüssel über die Code Engine-Konsole erstellen, die von Funktionen, Jobs, Apps oder Builds für den Zugriff auf ein Container-Image mit einer Pull-oder Push-Operation verarbeitet werden können.

Erstellen Sie zunächst ein Projekt, bevor Sie beginnen.

  1. Wenn Ihr Projekt den Status Aktiv hat, klicken Sie auf der Seite Code Engine Projekte auf den Namen Ihres Projekts.
  2. Klicken Sie auf der Seite 'Komponenten' auf Geheime Schlüssel und Konfigurationszuordnungen.
  3. Klicken Sie auf der Seite 'Geheime Schlüssel und Konfigurationszuordnungen' auf Erstellen, um Ihren geheimen Schlüssel zu erstellen.
  4. Führen Sie auf der Seite 'Create secret or configmap' die folgenden Schritte aus:
    1. Wählen Sie Geheimer Registry-Schlüssel aus und klicken Sie dann auf Next.
    2. Geben Sie einen Namen an, z. B. mysecret-registry.
    3. Geben Sie die Zielregistry für diesen geheimen Schlüssel an, z. B. IBM Cloud Container Registry oder Docker Hub.
    4. Geben Sie die Position der Registry an.
    5. Geben Sie einen Benutzernamen an. Wenn dieser geheime Schlüssel für IBM Cloud Container Registrygilt, lautet der Benutzername iamapikey. Wenn dieser geheime Schlüssel für Docker Hub gilt, ist dies Ihre Docker-ID.
    6. Geben Sie die Berechtigungsnachweise für den Benutzernamen ein. Verwenden Sie für IBM Cloud Container RegistryIhren IAM-API-Schlüssel. Für Docker Hub können Sie Ihr Docker-Hub-Kennwort oder ein Zugriffstoken verwenden. Geben Sie für andere Zielregistrys das Kennwort oder den API-Schlüssel für den Benutzernamen an.
    7. Klicken Sie auf Erstellen, um den geheimen Schlüssel zu erstellen.

Nachdem Ihr Geheimnis von der Konsole aus erstellt wurde, gehen Sie zur Seite Secrets and configmaps, um eine Liste der definierten Geheimnisse und configmaps anzuzeigen. Sie können Filter anwenden, um die Liste an Ihre Anforderungen anzupassen.

Weitere Informationen zum Arbeiten mit Image-Registrys finden Sie unter Auf Container-Registrys zugreifen.

Geheimen SSH-Schlüssel über die Konsole erstellen

Hier erfahren Sie, wie Sie einen geheimen SSH-Schlüssel über die Konsole erstellen, der von Builds für den Zugriff auf private Quellcode-Repositorys verarbeitet werden kann. Ein geheimer SSH-Schlüssel speichert Berechtigungsnachweise für die Authentifizierung bei einem Service mit einem SSH-Schlüssel, wie z. B. die Authentifizierung bei einem Git-Repository, wie z. B. GitHub oder GitLab.

Erstellen Sie zunächst ein Projekt, bevor Sie beginnen.

  1. Wenn Ihr Projekt den Status Aktiv hat, klicken Sie auf der Seite Code Engine Projekte auf den Namen Ihres Projekts.
  2. Klicken Sie auf der Seite 'Komponenten' auf Geheime Schlüssel und Konfigurationszuordnungen.
  3. Klicken Sie auf der Seite 'Geheime Schlüssel und Konfigurationszuordnungen' auf Erstellen, um Ihren geheimen Schlüssel zu erstellen.
  4. Führen Sie auf der Seite 'Create secret or configmap' die folgenden Schritte aus:
    1. Wählen Sie Geheimer SSH-Schlüssel aus und klicken Sie dann auf Next.
    2. Geben Sie einen Namen an, z. B. mysecret-ssh.
    3. Fügen Sie den privaten SSH-Schlüssel für diesen geheimen Schlüssel hinzu.
    4. Klicken Sie auf Erstellen, um den geheimen Schlüssel zu erstellen.

Nachdem Ihr Geheimnis von der Konsole aus erstellt wurde, gehen Sie zur Seite Secrets and configmaps, um eine Liste der definierten Geheimnisse und configmaps anzuzeigen. Sie können Filter anwenden, um die Liste an Ihre Anforderungen anzupassen.

Verwenden Sie Ihren geheimen SSH-Schlüssel, wenn Sie mit privaten Code-Repositorys wie Git-Repositorys arbeiten. Siehe Zugriff auf private Code-Repositories.

Erstellen eines TLS-Geheimnisses über die Konsole

Hier erfahren Sie, wie Sie einen geheimen TLS-Schlüssel über die Konsole erstellen, der von Apps verarbeitet werden kann, wenn Sie mit angepassten Domänenzuordnungen in Code Enginearbeiten. Ein geheimer TLS-Schlüssel (Transport Layer Security) enthält ein signiertes TLS-Zertifikat, einschließlich aller Zwischenzertifikate und des zugehörigen privaten Schlüssels von einer Zertifizierungsstelle (CA).

Erstellen Sie zunächst ein Projekt, bevor Sie beginnen.

  1. Wenn Ihr Projekt den Status Aktiv hat, klicken Sie auf der Seite Code Engine Projekte auf den Namen Ihres Projekts.
  2. Klicken Sie auf der Seite 'Komponenten' auf Geheime Schlüssel und Konfigurationszuordnungen.
  3. Klicken Sie auf der Seite 'Geheime Schlüssel und Konfigurationszuordnungen' auf Erstellen, um Ihren geheimen Schlüssel zu erstellen.
  4. Führen Sie auf der Seite 'Create secret or configmap' die folgenden Schritte aus:
    1. Wählen Sie Geheimer TLS-Schlüssel aus und klicken Sie auf Next.
    2. Geben Sie einen Namen an, z. B. mysecret-tls.
    3. Fügen Sie die Zertifikatskette und den zugehörigen privaten Schlüssel hinzu. Beachten Sie, dass Sie die Zertifikate verketten können, indem Sie jedes in einer neuen Zeile beginnen. Sie können diese Informationen in einer Datei angeben.
    4. Klicken Sie auf Erstellen, um den geheimen Schlüssel zu erstellen.

Nachdem Ihr Geheimnis von der Konsole aus erstellt wurde, gehen Sie zur Seite Secrets and configmaps, um eine Liste der definierten Geheimnisse und configmaps anzuzeigen. Sie können Filter anwenden, um die Liste an Ihre Anforderungen anzupassen.

Verwenden Sie Ihren geheimen TLS-Schlüssel bei der Arbeit mit angepassten Domänenzuordnungen in Code Engine.

Erstellen von Geheimnissen mit der CLI

Lernen Sie, wie Sie mit der Code Engine CLI Secrets erstellen, die von Anwendungen, Jobs oder Funktionen als Umgebungsvariablen verwendet werden können.

Vorbereitende Schritte

Seit der CLI-Version 1.42.0 sind die Definition und die Arbeit mit Secrets in der CLI unter der secret befehlsgruppe zusammengefasst. Siehe ibmcloud ce secret-Befehle. Verwenden Sie die Option --format, um die Kategorie des Geheimnisses anzugeben, z. B. basic_auth, generic, hmac, ssh, tls oder registry. Der Standardwert für die Option --format ist generic.

Mit dem Befehl secret create können Sie verschiedene Formate für geheime Schlüssel erstellen und verwalten. Beschreibungen der verschiedenen Formate für geheime Schlüssel finden Sie unter Welche Art von geheimen Schlüsseln kann ich in Code Engine?

Hier erfahren Sie, wie Sie die folgenden Typen von geheimen Schlüsseln mit der Befehlszeilenschnittstelle erstellen:

Erstellen eines grundlegenden Authentifizierungsgeheimnisses mit der CLI

Ein grundlegendes Authentifizierungsgeheimnis enthält einen Benutzernamen und einen Kennwortschlüssel und wird für den Zugriff auf einen Dienst verwendet, der eine grundlegende HTTP Authentifizierung erfordert. Im folgenden Beispiel wird ein geheimer Basisauthentifizierungsschlüssel mit Berechtigungsnachweisen für myusername erstellt und das zugehörige Kennwort wird in einer Datei auf der lokalen Workstation bereitgestellt.

ibmcloud ce secret create --name mysecret-basicauth --format basic_auth --username myusername --password-from-file ./password.txt

So zeigen Sie die Details dieses geheimen Schlüssels an:

ibmcloud ce secret get --name mysecret-basicauth

Beispielausgabe

Getting secret 'mysecret-basicauth'...
OK

Name:          mysecret-basicauth
ID:            abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f
Format:        basic_auth
Project Name:  myproject
Project ID:    01234567-abcd-abcd-abcd-abcdabcd1111
Age:           66s
Created:       2021-03-10T18:44:18-05:00

Data:    
---
password: REDACTED
username: bXl1c2VybmFtZQ==

Beachten Sie, dass der Wert des Schlüssels username für diesen geheimen Schlüssel für die Basisauthentifizierung codiert und der Wert von password neu bearbeitet wird. Verwenden Sie zum Anzeigen der Daten des geheimen Schlüssels in der entschlüsselten Form die Option --decode mit dem Befehl secret get.

Erstellen eines generischen Geheimnisses mit der CLI

Ein generischer geheimer Schlüssel speichert einfache Schlüssel/Wert-Paare und Code Engine geht weder von den definierten Schlüssel/Wert-Paaren noch von der beabsichtigten Verwendung des geheimen Schlüssels aus.

Sie können ein allgemeines Geheimnis mit dem secret create befehl auf eine der folgenden Arten erstellen. Standardmäßig wird ein generischer geheimer Schlüssel erstellt, wenn die Option --format nicht angegeben ist.

  • Erstellen Sie direkt in der Befehlszeile einen geheimen Schlüssel, indem Sie die Option --from-literal im Format KEY=VALUE verwenden. Beispiel:

    ibmcloud ce secret create --name myliteralsecret --from-literal "TARGET=My literal secret"
    
  • Erstellen Sie einen geheimen Schlüssel, indem Sie mithilfe der Option --from-file auf eine Datei verweisen. Wenn Sie diese Option verwenden, wird der gesamte Inhalt der Datei zum Wert für das Schlüssel/Wert-Paar. Verwenden Sie für das folgende Beispiel eine Datei namens secrets.txt mit dem Inhalt my little secret1.

    • Bei dem folgenden Beispiel wird das Format --from-file KEY=FILE mit dem Befehl secret create verwendet:

      ibmcloud ce secret create --name mysecretmsg1 --from-file TARGET=secrets.txt
      
    • Im folgenden Beispielbefehl wird das Format --from-file FILE mit dem Befehl secret create verwendet. In diesem Beispiel ist TARGET (ohne Erweiterung) der Name der Datei, wobei dieser Name mit dem Namen der Umgebungsvariablen übereinstimmt, die dem Job bekannt ist.

      ibmcloud ce secret create --name mysecretmsg2  --from-file TARGET
      
  • Erstellen Sie einen geheimen Schlüssel, indem Sie mit der Option --from-env-file auf eine Datei verweisen, die mindestens eine Zeile enthält, die dem Format KEY=VALUE entspricht. Jede Zeile der angegebenen Datei wird als Schlüssel/Wert-Paar hinzugefügt. Zeilen in der angegebenen Datei, die leer sind oder mit # beginnen, werden ignoriert. Verwenden Sie für dieses Beispiel eine Datei mit dem Namen secrets_multi.txt, die die Schlüssel/Wert-Paare enthält: sec1=mysec1, sec2=mysec2und sec3=mysec3.

    ibmcloud ce secret create --name mysecretmulti --from-env-file secrets_multi.txt
    

Wenn Sie einen generischen geheimen Schlüssel aus einer Datei erstellen (oder aktualisieren) wollen, verwenden Sie die Option --from-file mit einem der folgenden Formate: --from-file FILE oder --from-file KEY=FILE Wenn Sie in Code Enginedie Option --from-file verwenden, um geheime Werte anzugeben, ist der gesamte Inhalt in der Datei der Wert für das Schlüssel/Wert-Paar. Wenn Sie das Optionsformat --from-file KEY=FILE verwenden, ist KEY der Name der Umgebungsvariablen, die Ihrem Auftrag, Ihrer Funktion oder Ihrer Anwendung bekannt ist. Wenn Sie das Optionsformat --from-file FILE verwenden, ist FILE der Name der Umgebungsvariablen, die Ihrem Auftrag, Ihrer Funktion oder Ihrer Anwendung bekannt ist. Enthält Ihre Datei Schlüssel/Wert-Paare, fügen Sie mithilfe der Option --from-env-file eine Umgebungsvariable für jedes Schlüssel/Wert-Paar in der angegebenen Datei hinzu. Alle Zeilen in der angegebenen Datei, die leer sind oder mit # beginnen, werden ignoriert.

Um die Details des generischen geheimen Schlüssels anzuzeigen, myliteralsecret,

ibmcloud ce secret get --name myliteralsecret

Beispielausgabe

Getting secret 'myliteralsecret'...
OK

Name:          myliteralsecret
ID:            abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f
Format:        generic
Project Name:  myproject
Project ID:    01234567-abcd-abcd-abcd-abcdabcd1111
Age:           66s
Created:       2023-03-07 21:06:34 +0000 UTC  

Data:    
---
TARGET: TXkgbGl0ZXJhbCBzZWNyZXQ=

Beachten Sie, dass der Wert des Schlüssels TARGET für dieses generische Geheimnis verschlüsselt ist. Verwenden Sie zum Anzeigen der Daten des geheimen Schlüssels in der entschlüsselten Form die Option --decode mit dem Befehl secret get.

Erstellen eines HMAC-Geheimnisses mit der CLI

Ein HMAC-Geheimnis enthält einen access_key_id und einen secret_access_key Schlüssel und wird mit S3-compatible Tools und Bibliotheken verwendet, die eine Authentifizierung erfordern, aber keine IBM Cloud® Identity and Access Management API-Schlüssel unterstützen. Siehe IBM Cloud Object Storage- API-Schlüssel vs. HMAC, wenn Sie IBM Cloud® Identity and Access Management API-Schlüssel oder HMAC-Anmeldeinformationen verwenden möchten. Im folgenden Beispiel wird ein HMAC-Geheimnis mit Musteranmeldeinformationen erstellt, die nach Aufforderung angegeben werden müssen.

ibmcloud ce secret create --name mysecret-hmac --format hmac --access-key-id-prompt --secret-access-key-prompt

So zeigen Sie die Details dieses geheimen Schlüssels an:

ibmcloud ce secret get --name mysecret-hmac

Beispielausgabe

Getting secret 'mysecret-hmac'...
OK

Name:          mysecret-hmac
ID:            abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f
Format:        hmac_auth
Project Name:  myproject
Project ID:    01234567-abcd-abcd-abcd-abcdabcd1111
Age:           86s
Created:       2025-05-15T12:41:15-05:00

Data:
---
access_key_id: MWEyYjNjNGQ1ZTZmMWEyYjNjNGQ1ZTZmMWEyYjNjNGQK
secret_access_key: REDACTED

Beachten Sie, dass der Wert des Schlüssels access_key_id für dieses HMAC-Geheimnis verschlüsselt ist und der Wert von secret_access_key unkenntlich gemacht wurde. Verwenden Sie zum Anzeigen der Daten des geheimen Schlüssels in der entschlüsselten Form die Option --decode mit dem Befehl secret get.

Erstellen eines Registrierungsgeheimnisses mit der CLI

Ein geheimer Registry-Schlüssel speichert Berechtigungsnachweise für den Zugriff auf eine Container-Registry.

Im folgenden Beispiel wird ein geheimer Registry-Schlüssel mit dem Namen mysecret-registry erstellt, um auf eine IBM Cloud Container Registry-Instanz zuzugreifen, die sich auf dem us.icr.io-Registry-Server befindet und Berechtigungsnachweise für username und password angibt.

ibmcloud ce secret create --name mysecret-registry --format registry --server us.icr.io --username iamapikey --password API_KEY

So zeigen Sie die Details dieses geheimen Schlüssels an:

ibmcloud ce secret get --name mysecret-registry

Beispielausgabe

Getting secret 'mysecret-registry'...
OK

Name:          mysecret-registry
ID:            abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f
Format:        registry
Project Name:  myproject
Project ID:    01234567-abcd-abcd-abcd-abcdabcd1111
Age:           66s
Created:       2023-03-07 20:00:45 +0000 UTC  

Data:    
---
email: ""
password: REDACTED
server: dXMuaWNyLmlv
username: aWFtYXBpa2V5

Beachten Sie, dass der Wert der Schlüssel username und server für diesen geheimen Registry-Schlüssel codiert ist und der Wert von password neu bearbeitet wird. Verwenden Sie zum Anzeigen der Daten des geheimen Schlüssels in der entschlüsselten Form die Option --decode mit dem Befehl secret get.

Geheimen SSH-Schlüssel über die Befehlszeilenschnittstelle erstellen

Ein geheimer SSH-Schlüssel speichert Berechtigungsnachweise für die Authentifizierung bei einem Service mit einem SSH-Schlüssel, z. B. für die Authentifizierung bei einem Git-Repository, z. B. GitHub oder GitLab.

Im folgenden Beispiel wird ein geheimer SSH-Schlüssel mit dem Namen mysecret-ssh erstellt, um auf einen Host zuzugreifen, der in der Datei known_hosts enthalten ist, indem eine Authentifizierung mit einer unverschlüsselten privaten SSH-Schlüsseldatei durchgeführt wird, die sich im Verzeichnis /<filepath>/.ssh/<key_name> befindet. Dabei ist <filepath> der Pfad auf Ihrer lokalen Workstation. Dieser Befehl erfordert einen Namen und einen Schlüsselpfad und lässt auch weitere optionale Argumente zu, wie z. B. den Pfad zur Datei für bekannte Hosts.

ibmcloud ce secret create --name mysecret-ssh --format ssh --key-path ~/.ssh/<key_name> --known-hosts-path  ~/.ssh/known_hosts

So zeigen Sie die Details dieses geheimen Schlüssels an:

ibmcloud ce secret get --name mysecret-ssh

Beispielausgabe

Getting secret 'mysecret-ssh'...
OK

Name:          mysecret-ssh'
ID:            abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f
Format:        ssh
Project Name:  myproject
Project ID:    01234567-abcd-abcd-abcd-abcdabcd1111
Age:           66s
Created:       2023-03-07 19:19:59 +0000 UTC  

Data:    
---
known_hosts: fDF8bGh0ekpiSFVXdXRxZWg1NUlrWTk4RjdOdjJZPXxsUmhZd0txVmIwd3dSV2xzcjEySFdoWURUTG89IHNzaC1yc2EgQUFBQUIzTnphQzF5YzJFQUFBQUJJd0FBQVFFQXEyQTdoUkdtZG5tOXRVRGJPOUlEU3dCSzZUYlFhK1BYWVBDUHk2cmJUclR0dzdQSGtjY0tycHAweVZocDVIZEVJY0tyNnBMbFZEQmZPTFg5UVVzeUNPVjB3emZqSUpObEdFWXNkbExKaXpIaGJuMm1VanZTQUhRcVpFVFlQODFlRnpMUU5uUEh0NEVWVlVoN1ZmREVTVTg0S2V6bUQ1UWxXcFhMbXZVMzEveU1mK1NlOHhoSFR2S1NDWklGSW1Xd29HNm1iVW9XZjluenBJb2FTakIrd2VxcVVVbXBhYWFzWFZhbDcySitVWDJCKzJSUFczUmNUMGVPelFncWxKTDNSS3JUSnZkc2pFM0pFQXZHcTNsR0hTWlh5MjhHM3NrdWEyU21WaS93NHlDRTZnYk9EcW5UV2xnNyt3QzYwNHlkR1hBOFZKaVM1YXA0M0pYaVVGRkFhUT09CnwxfEpUSjI4MCt0RkFSMGcxZ3VrZW56U3ZBYm5sQT18RDlSUWppenZlR3UxS0FnNjhNeisrUHM3RmZrPSBlY2RzYS1zaGEyLW5pc3RwMjU2IEFBQUFFMlZqWkhOaExYTm9ZVEl0Ym1semRIQXlOVFlBQUFBSWJtbHpkSEF5TlRZQUFBQkJCRW1LU0VOalFFZXpPbXhrWk15N29wS2d3RkI5bmt0NVlScllNak51RzVOODd1UmdnNkNMcmJvNXdBZFQveTZ2MG1LVjBVMncwV1oyWUIvKytUcG9ja2c9CnwxfDhIOXpNb0VORklZVDNPeVZYWlQrY25wb0srND18dVdhVThFV1FPc0ttSDMzREVVd0xnNUtiUk44PSBzc2gtZWQyNTUxOSBBQUFBQzNOemFDMWxaREkxTlRFNUFBQUFJT01xcW5rVnpybTBTZEc2VU9vcUtMc2FiZ0g1Qzlva1dpMGRoMmw5R0tKbAo=
ssh-privatekey: REDACTED

Beachten Sie, dass der Wert des known_hosts-Schlüssels für diesen geheimen SSH-Schlüssel codiert ist und der Wert von ssh-privatekey neu bearbeitet wird. Verwenden Sie zum Anzeigen der Daten des geheimen Schlüssels in der entschlüsselten Form die Option --decode mit dem Befehl secret get.

Erstellen eines TLS-Geheimnisses mit der CLI

Ein geheimer TLS-Schlüssel (Transport Layer Security) enthält ein signiertes TLS-Zertifikat, einschließlich aller Zwischenzertifikate und des zugehörigen privaten Schlüssels von einer Zertifizierungsstelle (CA). Verwenden Sie geheime TLS-Schlüssel, wenn Sie mit angepassten Domänenzuordnungen arbeiten.

Im folgenden Beispiel wird ein geheimer TLS-Schlüssel mit dem Namen mysecret-tls erstellt. Die Zertifikatskette, die der angepassten Domäne entspricht, ist in der Datei certificate.txt und die entsprechende Datei mit privatem Schlüssel in der Datei privatekey.txt enthalten. In diesem Beispiel befinden sich beide Dateien im Stammverzeichnis der lokalen Workstation.

ibmcloud ce secret create --name mysecret-tls  --format tls  --cert-chain-file certificate.txt --private-key-file privatekey.txt

So zeigen Sie die Details dieses geheimen Schlüssels an:

ibmcloud ce secret get --name mysecret-tls

Beispielausgabe

Getting secret 'mysecret-tls'...
OK

Name:          mysecret-tls'
ID:            abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f
Format:        tls
Project Name:  myproject
Project ID:    01234567-abcd-abcd-abcd-abcdabcd1111
Age:           66s
Created:       2023-03-07 16:14:46 +0000 UTC  

Data:    
---
tls.crt: REDACTED
tls.key: REDACTED

Geheime Schlüssel über die Befehlszeilenschnittstelle auflisten

Verwenden Sie nach der Erstellung geheimer Schlüssel den Befehl secret list, um alle geheimen Schlüssel in Ihrem Projekt aufzulisten. Beispiel:

ibmcloud ce secret list

Beispielausgabe

Listing secrets...
OK

Name                          Format          Data  Age  
ce-auto-icr-private-us-south  registry        4     333d  
ce-auto-private-icr-us-south  registry        4     335d  
myregistry-seccmd             registry        4     3h31m  
mysecret-basicauth            basic_auth      2     7m37s  
mysecret-generic              generic         1     7m7s  
mysecret-genericfromfile      generic         2     2m29s  
mysecret-hmac                 hmac_auth       2     21m
mysecret-registry             registry        4     111s  
mysecret-ssh                  ssh_auth        2     42m  
mysecret-tls                  tls             2     3h47m

Geheime Schlüssel aktualisieren

Sie können Schlüssel/Wert-Paare für vorhandene geheime Schlüssel ändern.

Geheime Schlüssel über die Konsole aktualisieren

Sie können Schlüssel/Wert-Paare für Ihre definierten geheimen Schlüssel über die Konsole aktualisieren.

  1. Sie können Schlüssel/Wert-Paare für Ihre definierten geheimen Schlüssel auf eine der folgenden Arten über die Konsole aktualisieren.

    • Rufen Sie die Seite 'Geheime Schlüssel und Konfigurationszuordnungen' für Ihr Projekt auf und suchen Sie den zu aktualisierenden geheimen Schlüssel. Klicken Sie auf den Namen des geheimen Schlüssels, der aktualisiert werden soll, um den Schlüssel zu öffnen.
    • Wenn Ihr Geheimnis von einer Anwendung, einem Job oder einer Funktion referenziert wird, dann verwenden Sie die Links in der Tabelle der Umgebungsvariablen auf der Registerkarte Umgebungsvariablen Ihrer Anwendung, Ihres Jobs oder Ihrer Funktion. Diese Links führen Sie direkt zu Ihrem Geheimnis. Sie können stattdessen auch zur Seite 'Geheime Schlüssel und Konfigurationszuordnungen' für Ihr Projekt wechseln und den zu aktualisierenden geheimen Schlüssel auf dieser Seite suchen. Klicken Sie auf den Namen des geheimen Schlüssels, der aktualisiert werden soll, um den Schlüssel zu öffnen.
  2. Klicken Sie auf Bearbeiten und nehmen Sie die Aktualisierungen für Ihren geheimen Schlüssel vor.

  3. Klicken Sie auf Speichern, um die Änderungen an Ihrem geheimen Schlüssel zu speichern.

Wenn Ihr aktualisiertes Geheimnis von einem Auftrag, einer Funktion oder einer Anwendung referenziert wird, muss der Auftrag, die Funktion oder die Anwendung neu gestartet werden, damit die neuen Daten wirksam werden.

  • Apps-Klicken Sie auf der Seite für Ihre App auf Neue Überarbeitung und anschließend auf Speichern und implementieren. Sie können stattdessen auch warten, bis Ihre App auf null skaliert ist. Beim anschließenden Scale-up für die App verwendet die App dann den aktualisierten geheimen Schlüssel.
  • Jobs-Klicken Sie auf der Seite für Ihren Job auf Job übergeben , um Ihren Job auszuführen, oder Sie können einen Job erneut ausführen. Bei dieser neuen Jobausführung wird der aktualisierte geheime Schlüssel verwendet.
  • Funktionen-Klicken Sie auf der Seite für Ihre Funktion auf Funktion testen. Wenn Sie einen Browser mit der Funktion URL geöffnet haben, aktualisieren Sie den Browser.

Geheime Schlüssel über die Befehlszeilenschnittstelle aktualisieren

Sie können einen vorhandenen geheimen Schlüssel und die zugehörigen Schlüssel/Wert-Paare über die Befehlszeilenschnittstelle aktualisieren.

  1. Verwenden Sie zum Ändern des Werts eines Schlüssel/Wert-Paars in einem definierten geheimen Schlüssel den Befehl secret update. Aktualisieren Sie den geheimen Schlüssel mysecret-registry, um einen anderen Server zu verwenden.

    ibmcloud ce secret update --name mysecret-registry --format registry --server <new_server> --username <new_username> --password <password>
    
  2. Nach der Aktualisierung Ihres geheimen Schlüssels können Sie nun mit dem Befehl secret get Details zu einem bestimmten geheimen Schlüssel anzeigen. Verwenden Sie bei Bedarf die Option --decode, um die geheimen Daten als decodiert anzuzeigen. Beispiel:

    ibmcloud ce secret get --name mysecret-registry --decode
    

    Beispielausgabe

    Getting generic secret 'mysecret-registry'...
    OK
    
    Name:          mysecret-registry
    ID:            abcdefgh-abcd-abcd-abcd-c88e2775388e
    Project Name:  myproject
    Project ID:    01234567-abcd-abcd-abcd-abcdabcd1111
    Age:           21m
    Created:       2023-03-07 20:00:45 +0000 UTC  
    
    Data:    
    ---
    email: ""
    password: REDACTED
    server: newserver
    username: newuser
    

Geheime Schlüssel referenzieren

Ihr Auftrag, Ihre Funktion oder Ihre Anwendung kann die in einem Geheimnis gespeicherten Informationen mithilfe von Umgebungsvariablen abrufen und verwenden.

Geheime Schlüssel über die Konsole referenzieren

Sie können die Konsole verwenden, um Umgebungsvariablen für Ihre Anwendungen, Aufträge und Funktionen zu erstellen, die vollständig auf ein Geheimnis oder auf einzelne Schlüssel in einem Geheimnis verweisen.

Der geheime Schlüssel, der referenziert werden soll, muss vorhanden sein. Weitere Informationen finden Sie unter Geheimen Schlüssel erstellen. Erstellen Sie für dieses Beispiel einen geheimen Schlüssel mit der Bezeichnung target-secret mit dem Schlüssel/Wert-Paar TARGET=Sunshine.

  1. Um über Ihre Apps, Jobs und Funktionen auf einen definierten geheimen Schlüssel zu verweisen, erstellen Sie eine Umgebungsvariable. Die Umgebungsvariable kann einen vollständigen vorhandenen geheimen Schlüssel oder einen einzelnen Schlüssel in einem vorhandenen geheimen Schlüssel referenzieren. Wenn Sie vollständig auf einen geheimen Schlüssel (oder eine Konfigurationszuordnung) verweisen, können Sie optional prefix angeben. Wenn Sie beispielsweise in der myapp-Anwendung vollständig auf den geheimen Schlüssel mysecret verweisen und das Präfix mysecret_ verwenden, erhält jeder Schlüssel im geheimen Schlüssel das Präfix mysecret_.

  2. Nachdem Sie Umgebungsvariablen erstellt haben, müssen Sie Ihre Anwendungen, Aufträge und Funktionen neu starten, damit die Änderungen wirksam werden. Wenn es um eine App geht, speichern Sie die betreffende App und stellen Sie sie bereit, um die App mit den von Ihnen definierten Umgebungsvariablen zu aktualisieren. Wenn es um einen Job geht, übergeben Sie den betreffenden Job, um den Job mit den von Ihnen definierten Umgebungsvariablen zu aktualisieren.

  3. Nachdem der Status der Apps, Jobs und Funktionen in Bereit geändert wurde, können Sie die Anwendung oder Funktion testen oder den Job ausführen. Klicken Sie bei einer App auf Anwendung testen und anschließend im Teilfenster „Testanwendung“ auf Anforderung senden. Um die Anwendung in einer Webseite zu öffnen, klicken Sie auf Anwendungs-URL. Da im Beispiel myapp ein Präfix für das vollständig referenzierte Geheimnis mysecret angegeben wurde, werden alle Schlüssel dieses Geheimnisses als Umgebungsvariablen referenziert und mit mysecret_ vorangestellt. Diese Umgebungsvariablen werden beispielsweise als mysecret_secret1=mysecret1 und mysecret_secret2=mysecret2angezeigt.

Um eine Umgebungsvariable zu aktualisieren, die auf einen geheimen Schlüssel verweist, siehe Aktualisieren von Umgebungsvariablen und Überlegungen zum Aktualisieren von Umgebungsvariablen.

Informationen zum Entfernen einer Umgebungsvariablen, die einen geheimen Schlüssel referenziert, finden Sie unter Umgebungsvariablen löschen.

Im folgenden Beispiel wird der zuvor definierte geheime Schlüssel mysecret verwendet, den Sie über die Konsole in Verbindung mit einem Job definiert haben, und dieser geheime Schlüssel wird vollständig mithilfe einer Umgebungsvariablen referenziert.

  1. Erstellen Sie einen Job und führen Sie ihn aus. Erstellen Sie für dieses Beispiel einen Code Engine-Job, der das icr.io/codeengine/codeengine-Image verwendet, und führen Sie dann den Job aus. Wenn eine Anfrage an diesen Beispielauftrag gesendet wird, liest der Auftrag die Umgebungsvariable TARGET, druckt Hello ${TARGET} from Code Engine und gibt eine Liste der Umgebungsvariablen aus. Ist die Umgebungsvariable TARGET leer, wird Hello World from Code Engine zurückgegeben.

    Ausgehend von der Seite 'Jobs'

    1. Erstellen Sie einen Job, z. B. myjob.
    2. Geben Sie icr.io/codeengine/codeengine als Imagereferenz an.
    3. Klicken Sie auf Erstellen, um den Job zu erstellen.

    Wenn der Workload, den Sie mit dem Geheimnis verwenden möchten, bereits in Code Engine definiert ist, gehen Sie auf die Seite Anwendungen, Jobs oder Funktionen und klicken Sie auf den Namen Ihrer Anwendung, Ihres Jobs oder Ihrer Funktion, um die Komponente zu öffnen.

  2. Wenn der Job erstellt ist, klicken Sie auf der Seite 'Jobs' auf den Namen des Jobs, um den Job zu öffnen.

  3. Aktualisieren Sie den Job so, dass ein geheimer Schlüssel als Umgebungsvariable hinzugefügt wird. Klicken Sie auf Umgebungsvariablen, um die Registerkarte zu öffnen, und klicken Sie auf Hinzufügen, um Ihre Umgebungsvariable hinzuzufügen.

  4. Ausgehend von der Seite 'Umgebungsvariablen hinzufügen'

    1. Wählen Sie zum Verwenden des zuvor definierten geheimen Schlüssels die Option Vollständigen geheimen Schlüssel referenzieren aus.
    2. Wählen Sie im Menü den Namen des gewünschten geheimen Schlüssels aus, z. B. target-secret.
    3. Klicken Sie auf Hinzufügen, um die Umgebungsvariable hinzuzufügen.
    4. Klicken Sie auf Speichern, um die Änderungen an Ihrem Job zu speichern.
  5. Klicken Sie zum Ausführen des Jobs mit der Umgebungsvariable, die auf einen geheimen Schlüssel verweist, auf Job übergeben. Im vorliegenden Beispiel zeigen die Protokolle für die Ausführung des Jobs myjob den Text Hello Sunshine from Code Engine an und es werden die Umgebungsvariablen, einschließlich von Werten geheimer Schlüssel, die über Umgebungsvariablen referenziert werden, ausgegeben.

Geheime Schlüssel über die Befehlszeilenschnittstelle referenzieren

Um Geheimnisse mit Anwendungen, Jobs und Funktionen zu verwenden, können Sie Umgebungsvariablen setzen, die vollständig auf ein Geheimnis verweisen, oder einzelne Schlüssel in einem Geheimnis mit der Befehlszeile referenzieren.

Verweis auf bestehende geheime Schlüssel mit der CLI

Die folgenden Beispiele verweisen auf einen generischen geheimen Schlüssel. Dies ist der standardmäßige geheime Schlüssel, wenn die Option --format nicht angegeben ist. Verwenden Sie die Option --format, um die Kategorie des geheimen Schlüssels anzugeben, beispielsweise basic_auth, generic, ssh, tls oder registry.

Wenn Sie einen geheimen Schlüssel mit einer Workload über die Befehlszeilenschnittstelle verwenden möchten, geben Sie die Option --env-from-secret in den folgenden Befehlen an.

Im folgenden Beispiel wird beschrieben, wie ein vorhandenes generisches Geheimnis mit einem Auftrag über die Befehlszeile referenziert werden kann.

  1. Verwenden Sie den secret create um die folgenden zwei generischen Geheimnisse für dieses Szenario zu erstellen. Standardmäßig wird ein generischer geheimer Schlüssel erstellt, wenn die Option --format nicht angegeben ist.

    ibmcloud ce secret create --name myliteralsecret --from-literal "TARGET=My big literal secret"
    
    ibmcloud ce secret create --name myliteralsecret2 --from-literal "TARGET=My little literal secret"
    
  2. Erstellen Sie einen Job und verweisen Sie auf das Geheimnis von myliteralsecret. Erstellen Sie für dieses Beispiel einen Code Engine-Job, der das icr.io/codeengine/codeengine-Image verwendet, und führen Sie dann den Job aus. Wenn eine Anfrage an diesen Beispielauftrag gesendet wird, liest der Auftrag die Umgebungsvariable TARGET, druckt Hello ${TARGET} from Code Engine und gibt eine Liste der Umgebungsvariablen aus. Ist die Umgebungsvariable TARGET leer, wird Hello World from Code Engine zurückgegeben.

    ibmcloud ce job create --name myjob --image icr.io/codeengine/codeengine --array-indices 2-3 --env-from-secret myliteralsecret
    
  3. Führen Sie den Job myjob aus.

    ibmcloud ce jobrun submit --name myjobrun --job myjob
    
  4. Verwenden Sie den Befehl jobrun get, um die Details der Jobausführung einschließlich der Instanzen der Jobausführung anzuzeigen.

    ibmcloud ce jobrun get --name myjobrun
    

    Beispielausgabe

    Getting jobrun 'myjobrun'...
    Getting instances of jobrun 'myjobrun'...
    Getting events of jobrun 'myjobrun'...
    Run 'ibmcloud ce jobrun events -n myjobrun' to get the system events of the job run instances.
    Run 'ibmcloud ce jobrun logs -f -n myjobrun' to follow the logs of the job run instances.
    OK
    
    Name:               myjobrun
    [...]
    Job Ref:                myjob
    Environment Variables:
        Type                   Name          Value
        Secret full reference  myliteralsecret
    Image:                  icr.io/codeengine/codeengine
    Resource Allocation:
        CPU:                1
        Ephemeral Storage:  4G
        Memory:             4G
    
    Runtime:
        Mode:                  task
        Array Indices:         2-3
        Array Size:            2
        JOP_ARRAY_SIZE Value:  2
        Max Execution Time:    7200
        Retry Limit:           3
    
    Status:
        Completed:          9s
        Instance Statuses:
            Succeeded:  2
        Conditions:
            Type      Status  Last Probe  Last Transition
            Pending   True    13s         13s
            Running   True    9s          9s
            Complete  True    9s          9s
    
    Events:
        Type    Reason     Age                Source                Messages
        Normal  Updated    10s (x4 over 14s)  batch-job-controller  Updated JobRun "myjobrun"
        Normal  Completed  10s                batch-job-controller  JobRun completed successfully
    
    Instances:
        Name          Running  Status     Restarts  Age
        myjobrun-2-0  0/1      Succeeded  0         14s
        myjobrun-3-0  0/1      Succeeded  0         14s
    
  5. Zeigen Sie die Protokolle der Jobausführung myjobrun an. Sie können Protokolle aller Instanzen einer Jobausführung oder Protokolle einer bestimmten Instanz einer Jobausführung anzeigen. Zeigen Sie dieses Mal die Protokolle aller Instanzen der Jobausführung an. Das Protokoll zeigt Hello my big literal secret! an, das durch die Verwendung einer Umgebungsvariablen mit einem geheimen Schlüssel angegeben wurde. Hinweis: Für diesen Job, der mit dem icr.io/codeengine/codeengine-Image definiert ist, gibt die Ausgabe der Jobausführung die Umgebungsvariablen aus, einschließlich aller Werte für geheime Schlüssel, die mit Umgebungsvariablen referenziert werden.

    ibmcloud ce jobrun logs --jobrun myjobrun
    

    Beispielausgabe

    Getting logs for all instances of job run 'myjobrun'...
    Getting jobrun 'myjobrun'...
    Getting instances of jobrun 'myjobrun'...
    OK
    
    myjobrun-2-0/myjob:
    Hello from helloworld! I'm a batch job! Index: 2
    
    Hello My big literal secret from:
    . ___  __  ____  ____
    ./ __)/  \(    \(  __)
    ( (__(  O )) D ( ) _)
    .\___)\__/(____/(____)
    .____  __ _   ___  __  __ _  ____
    (  __)(  ( \ / __)(  )(  ( \(  __)
    .) _) /    /( (_ \ )( /    / ) _)
    (____)\_)__) \___/(__)\_)__)(____)
    
    Some Env Vars:
    --------------
    HOME=/root
    HOSTNAME=myjobrun-2-0
    JOB_INDEX=2
    KUBERNETES_PORT=tcp://172.21.0.1:443
    KUBERNETES_PORT_443_TCP=tcp://172.21.0.1:443
    KUBERNETES_PORT_443_TCP_ADDR=172.21.0.1
    KUBERNETES_PORT_443_TCP_PORT=443
    KUBERNETES_PORT_443_TCP_PROTO=tcp
    KUBERNETES_SERVICE_HOST=172.21.0.1
    KUBERNETES_SERVICE_PORT=443
    KUBERNETES_SERVICE_PORT_HTTPS=443
    PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
    PWD=/
    SHLVL=1
    TARGET=My big literal secret
    
    myjobrun-3-0/myjob:
    Hello from helloworld! I'm a batch job! Index: 3
    
    Hello My big literal secret from:
    . ___  __  ____  ____
    ./ __)/  \(    \(  __)
    ( (__(  O )) D ( ) _)
    .\___)\__/(____/(____)
    .____  __ _   ___  __  __ _  ____
    (  __)(  ( \ / __)(  )(  ( \(  __)
    .) _) /    /( (_ \ )( /    / ) _)
    (____)\_)__) \___/(__)\_)__)(____)
    
    Some Env Vars:
    --------------
    HOME=/root
    HOSTNAME=myjobrun-3-0
    JOB_INDEX=3
    KUBERNETES_PORT=tcp://172.21.0.1:443
    KUBERNETES_PORT_443_TCP=tcp://172.21.0.1:443
    KUBERNETES_PORT_443_TCP_ADDR=172.21.0.1
    KUBERNETES_PORT_443_TCP_PORT=443
    KUBERNETES_PORT_443_TCP_PROTO=tcp
    KUBERNETES_SERVICE_HOST=172.21.0.1
    KUBERNETES_SERVICE_PORT=443
    KUBERNETES_SERVICE_PORT_HTTPS=443
    PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
    PWD=/
    SHLVL=1
    TARGET=My big literal secret
    
  6. Senden Sie den Auftragslauf erneut und geben Sie an, dass der geheime Schlüssel myliteralsecret2 für diesen Joblauf verwendet werden soll.

    ibmcloud ce jobrun resubmit  --jobrun myjobrun  --name myjobrunresubmit  --env-from-secret myliteralsecret2
    

    Wenn Sie einen Auftrag, eine Anwendung oder eine Funktion mit einer Umgebungsvariablen aktualisieren, die ein Geheimnis vollständig referenziert, um ein anderes Geheimnis vollständig zu referenzieren, überschreiben vollständige Referenzen andere vollständige Referenzen in der Reihenfolge, in der sie gesetzt wurden (der zuletzt referenzierte Satz überschreibt den ersten Satz).

  7. Verwenden Sie den Befehl jobrun get, um die Details der Jobausführung einschließlich der Instanzen der Jobausführung anzuzeigen. Beachten Sie, dass der Joblauf auf die beiden geheimen Schlüssel myliteralsecret und myliteralsecret2 verweist.

    ibmcloud ce jobrun get --name myjobrunresubmit
    

    Beispielausgabe

    Getting jobrun 'myjobrunresubmit'...
    Getting instances of jobrun 'myjobrunresubmit'...
    Getting events of jobrun 'myjobrunresubmit'...
    [...]
    
    Name:          myjobrunresubmit
    ID:            79f01367-932b-4a76-be18-b1e68790a85b
    Project Name:  myproject
    Project ID:    841f0f38-420d-4388-b5d8-f230657d7dc6
    Age:           14s
    Created:       2021-06-15T21:15:37-04:00
    
    Job Ref:                myjob
        Environment Variables:
        Type                   Name              Value
        Secret full reference  myliteralsecret
        Secret full reference  myliteralsecret2
    Image:                  icr.io/codeengine/codeengine
        Resource Allocation:
        CPU:                1
        Ephemeral Storage:  4G
        Memory:             4G
    
    Runtime:
        Mode:                  task
        Array Indices:         2-3
        Array Size:            2
        JOP_ARRAY_SIZE Value:  2
        Max Execution Time:    7200
        Retry Limit:           3
    
    Status:
        Completed:          11s
        Instance Statuses:
            Succeeded:  2
        Conditions:
            Type      Status  Last Probe  Last Transition
            Pending   True    14s         14s
            Running   True    12s         12s
            Complete  True    11s         11s
    
    Events:
        Type    Reason     Age                Source                Messages
        Normal  Updated    13s (x4 over 16s)  batch-job-controller  Updated JobRun "myjobrunresubmit"
        Normal  Completed  13s                batch-job-controller  JobRun completed successfully
    
    Instances:
        Name                  Running  Status     Restarts  Age
        myjobrunresubmit-2-0  0/1      Succeeded  0         16s
        myjobrunresubmit-3-0  0/1      Succeeded  0         16s
    
  8. Anzeige der Job-Laufprotokolle einer Instanz des Job-Laufs myjobrunresubmit. Diesmal zeigen Sie die Protokolle der Instanz myjobrunresubmit-3-0 an. Das Protokoll zeigt Hello My little literal secret! an, also den Wert, der im myliteralsecret2geheimen Schlüssel angegeben ist. Verwenden Sie den Befehl jobrun get, um die Details der Jobausführung einschließlich der aktiven Instanzen der Jobausführung anzuzeigen.

    ibmcloud ce jobrun logs --instance myjobrunresubmit-3-0
    

    Beispielausgabe

    Getting logs for job run instance 'myjobrunresubmit-3-0'...
    OK
    
    myjobrunresubmit-3-0/myjob:
    Hello from helloworld! I'm a batch job! Index: 3
    
    Hello My little literal secret from:
    . ___  __  ____  ____
    ./ __)/  \(    \(  __)
    ( (__(  O )) D ( ) _)
    .\___)\__/(____/(____)
    .____  __ _   ___  __  __ _  ____
    (  __)(  ( \ / __)(  )(  ( \(  __)
    .) _) /    /( (_ \ )( /    / ) _)
    (____)\_)__) \___/(__)\_)__)(____)
    
    Some Env Vars:
    --------------
    HOME=/root
    HOSTNAME=myjobrunresubmit-3-0
    JOB_INDEX=3
    KUBERNETES_PORT=tcp://172.21.0.1:443
    KUBERNETES_PORT_443_TCP=tcp://172.21.0.1:443
    KUBERNETES_PORT_443_TCP_ADDR=172.21.0.1
    KUBERNETES_PORT_443_TCP_PORT=443
    KUBERNETES_PORT_443_TCP_PROTO=tcp
    KUBERNETES_SERVICE_HOST=172.21.0.1
    KUBERNETES_SERVICE_PORT=443
    KUBERNETES_SERVICE_PORT_HTTPS=443
    PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
    PWD=/
    SHLVL=1
    TARGET=My little literal secret
    
  9. Verwenden Sie zum Ändern des Werts eines Schlüssel/Wert-Paars in einem geheimen Schlüssel den Befehl secret update. Aktualisieren wir den geheimen Schlüssel myliteralsecret, um den Wert des TARGET-Schlüssels von My big literal secret in My new big literal secret zu ändern.

    ibmcloud ce secret update --name myliteralsecret --from-literal "TARGET=My new big literal secret"
    
  10. Führen Sie Ihren Job erneut aus, damit die neuen Daten wirksam werden. Übergeben Sie die Jobausführung erneut und geben Sie an, dass für diese Jobausführung der geheime Schlüssel myliteralsecret verwendet werden soll.

ibmcloud ce jobrun resubmit  --jobrun myjobrun  --name myjobrunresubmit2 --env-from-secret myliteralsecret
  1. Zeigen Sie die Protokolle der Jobausführung myjobrunresubmit2 an. Diesmal zeigt das Auftragsprotokoll Hello My new big literal secret! an, was dem Wert im aktualisierten myliteralsecretgeheimen Schlüssel entspricht. Sie können den Befehl jobrun get verwenden, um die Details der Jobausführung einschließlich der aktiven Instanzen der Jobausführung anzuzeigen. Zeigen Sie die Protokolle für eine aktive Instanz der Jobausführung an.
ibmcloud ce jobrun logs --instance myjobrunresubmit2-2-0

Beispielausgabe

Getting logs for job run instance 'myjobrunresubmit2-2-0'...
OK

myjobrunresubmit2-2-0/myjob:
Hello from helloworld! I'm a batch job! Index: 2

Hello My new big literal secret from:
. ___  __  ____  ____
./ __)/  \(    \(  __)
( (__(  O )) D ( ) _)
.\___)\__/(____/(____)
.____  __ _   ___  __  __ _  ____
(  __)(  ( \ / __)(  )(  ( \(  __)
.) _) /    /( (_ \ )( /    / ) _)
(____)\_)__) \___/(__)\_)__)(____)

Some Env Vars:
--------------
HOME=/root
HOSTNAME=myjobrunresubmit2-2-0
JOB_INDEX=2
KUBERNETES_PORT=tcp://172.21.0.1:443
KUBERNETES_PORT_443_TCP=tcp://172.21.0.1:443
KUBERNETES_PORT_443_TCP_ADDR=172.21.0.1
KUBERNETES_PORT_443_TCP_PORT=443
KUBERNETES_PORT_443_TCP_PROTO=tcp
KUBERNETES_SERVICE_HOST=172.21.0.1
KUBERNETES_SERVICE_PORT=443
KUBERNETES_SERVICE_PORT_HTTPS=443
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
PWD=/
SHLVL=1
TARGET=My new big literal secret

Zusammenfassend lässt sich sagen, dass Sie grundlegende Szenarien abgeschlossen haben, um zu demonstrieren, wie Geheimnisse mit einem Auftrag verwendet werden können, indem Sie auf ein bestehendes vollständiges Geheimnis verweisen und Schlüssel innerhalb eines Geheimnisses aktualisieren.

Verweis auf Geheimnisse, die noch nicht mit der CLI definiert sind

Wenn ein Geheimnis nicht existiert, bevor es referenziert wird, kann eine Anwendung nicht erfolgreich bereitgestellt werden, und ein Auftrag oder eine Funktion kann nicht erfolgreich ausgeführt werden, bis das referenzierte Geheimnis erstellt wurde.

Wenn Sie mit einer Anwendung, einem Job oder einer Funktion arbeiten und das referenzierte Geheimnis noch nicht definiert ist, verwenden Sie die Option --force, um die Überprüfung der Existenz des referenzierten Geheimnisses zu vermeiden. Die Option --force kann mit den folgenden Befehlen verwendet werden:

Wenn Sie die Option --force mit diesen Befehlen verwenden, wird die Aktion zum Erstellen, Aktualisieren oder Ausführen der Anwendung, des Auftrags oder der Funktion abgeschlossen. Die Anwendung, der Auftrag oder die Funktion wird jedoch erst dann erfolgreich ausgeführt, wenn das referenzierte Geheimnis existiert. Wenn Sie dem Befehl zusätzlich zur Option --force die Option --no-wait hinzufügen, führt das System die Aktion aus und wartet nicht darauf, dass die Anwendung, der Auftrag oder die Funktion erfolgreich ausgeführt wird.

Das folgende Beispiel beschreibt, wie man mit Hilfe der CLI auf einen geheimen Schlüssel verweist, der noch nicht mit einer App definiert ist.

  1. Erstellen Sie einen Job. Erstellen Sie für dieses Beispiel einen Code Engine-Job, der das icr.io/codeengine/codeengine-Image verwendet, und führen Sie dann den Job aus. Wenn eine Anfrage an diesen Beispielauftrag gesendet wird, liest der Auftrag die Umgebungsvariable TARGET, druckt Hello ${TARGET} from Code Engine und gibt eine Liste der Umgebungsvariablen aus. Ist die Umgebungsvariable TARGET leer, wird Hello World from Code Engine zurückgegeben.

    ibmcloud ce job create --name myjob --image icr.io/codeengine/codeengine
    
  2. Verwenden Sie den Befehl jobrun submit, um den Job myjob auszuführen. Beachten Sie, dass das mynewliteralsecret nicht existiert. Wenn Sie die Option --no-wait mit dem Befehl jobrun submit verwenden, wird der Joblauf übermittelt und wartet nicht auf die Beendigung der Instanzen dieses Joblaufs.

    ibmcloud ce jobrun submit --name myjobrun1 --job myjob --env-from-secret mynewliteralsecret --force --no-wait
    
  3. Verwenden Sie den Befehl jobrun get, um Details zum Auftragsdurchlauf anzuzeigen, einschließlich der Informationen zu den Umgebungsvariablen. Beachten Sie, dass sich der Joblauf im Status pending befindet.

    ibmcloud ce jobrun get --name myjobrun1
    

    Beispielausgabe

    Getting jobrun 'myjobrun1'...
    Getting instances of jobrun 'myjobrun1'...
    Getting events of jobrun 'myjobrun1'...
    [...]
    
    Name:          myjobrun1
    [...]
    
    Job Ref:                myjob
    Environment Variables:
        Type                   Name                Value
        Secret full reference  mynewliteralsecret
    Image:                  icr.io/codeengine/codeengine
    Resource Allocation:
        CPU:                1
        Ephemeral Storage:  400M
        Memory:             4G
    
    Runtime:
        Mode:                  task
        Array Indices:         0
        Array Size:            1
        JOP_ARRAY_SIZE Value:  1
        Max Execution Time:    7200
        Retry Limit:           3
    
    Status:
        Instance Statuses:
            Pending:  1
        Conditions:
            Type     Status  Last Probe  Last Transition
            Pending  True    100s        100s
    
    Events:
        Type    Reason   Age                   Source                Messages
        Normal  Updated  108s (x5 over 2m29s)  batch-job-controller  Updated JobRun "myjobrun1"
    
    Instances:
        Name           Running  Status   Restarts  Age
        myjobrun1-0-0  0/1      Pending  0         2m29s
    
  4. Geheimen Schlüssel erstellen

    ibmcloud ce secret create --name mynewliteralsecret --from-literal "TARGET=Fun secret"
    
  5. Führen Sie den Job myjobrun1 erneut aus.

    ibmcloud ce jobrun resubmit --jobrun myjobrun1 --name myjobrunresubmit1
    

    Führen Sie den Befehl ibmcloud ce jobrun get -n myjobrunresubmit1 aus, um den Status dieses Joblaufs zu überprüfen.

  6. Zeigen Sie die Protokolle der Jobausführung myjobrunresubmit1 an. In den Protokollen wird Hello Fun secret from Code Engine angezeigt, was bestätigt, dass der Joblauf auf das myliteralsecret verwiesen hat.

    ibmcloud ce jobrun logs --jobrun myjobrunresubmit1
    

    Beispielausgabe

    Getting logs for all instances of job run 'myjobrunresubmit1'...
    Getting jobrun 'myjobrunresubmit1'...
    Getting instances of jobrun 'myjobrunresubmit1'...
    OK
    
    myjobrunresubmit1-0-0/myjob:
    Hello from helloworld! I'm a batch job! Index: 0
    
    Hello Fun secret from:
    . ___  __  ____  ____
    ./ __)/  \(    \(  __)
    ( (__(  O )) D ( ) _)
    .\___)\__/(____/(____)
    .____  __ _   ___  __  __ _  ____
    (  __)(  ( \ / __)(  )(  ( \(  __)
    .) _) /    /( (_ \ )( /    / ) _)
    (____)\_)__) \___/(__)\_)__)(____)
    
    Some Env Vars:
    --------------
    HOME=/root
    HOSTNAME=myjobrunresubmit1-0-0
    JOB_INDEX=0
    KUBERNETES_PORT=tcp://172.21.0.1:443
    KUBERNETES_PORT_443_TCP=tcp://172.21.0.1:443
    KUBERNETES_PORT_443_TCP_ADDR=172.21.0.1
    KUBERNETES_PORT_443_TCP_PORT=443
    KUBERNETES_PORT_443_TCP_PROTO=tcp
    KUBERNETES_SERVICE_HOST=172.21.0.1
    KUBERNETES_SERVICE_PORT=443
    KUBERNETES_SERVICE_PORT_HTTPS=443
    PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
    PWD=/
    SHLVL=1
    TARGET=Fun secret
    

Weitere detaillierte Szenarios zum Verweisen auf vollständige geheime Schlüssel und Konfigurationszuordnungen als Umgebungsvariablen, Überschreiben von Verweisen und Entfernen von Verweisen in der Befehlszeilenschnittstelle finden Sie unter Auf geheime Schlüssel und Konfigurationszuordnungen verweisen.

Geheime Schlüssel löschen

Wenn Sie ein Geheimnis nicht mehr benötigen, können Sie es löschen.

Löschen von Geheimnissen aus der Konsole

  1. So löschen Sie ein Geheimnis von der Konsole aus,
    1. Rufen Sie die Seite Secrets and configmaps auf Ihrer Projektseite Code Engine auf.
    2. Klicken Sie auf das zu löschende Geheimnis, um dessen Seite zu öffnen.
    3. Klicken Sie auf der Seite für den jeweiligen geheimen Schlüssel auf Aktionen > Geheimen Schlüssel löschen.
  2. So löschen Sie ein Schlüssel-Wert-Paar für ein bestimmtes Geheimnis aus der Konsole,
    1. Rufen Sie die Seite Secrets and configmaps auf Ihrer Projektseite Code Engine auf.
    2. Klicken Sie auf das Geheimnis, das Sie ändern möchten, um die entsprechende Seite zu öffnen.
    3. Löschen Sie auf der Seite für das jeweilige Geheimnis das Schlüssel-Wert-Paar, das Sie entfernen möchten.

Sie können auch definierte Umgebungsvariablen löschen, die geheime Schlüssel oder Konfigurationszuordnungen referenzieren. Um eine definierte Umgebungsvariable zu löschen, gehen Sie auf die Registerkarte Umgebungsvariablen Ihrer Anwendung, Ihres Jobs oder Ihrer Funktion und löschen Sie die Umgebungsvariable, die Sie löschen möchten. Nachdem Sie eine definierte Umgebungsvariable gelöscht haben, müssen Sie auf Speichern klicken, um die Änderungen in Ihrer Anwendung, Ihrem Job oder Ihrer Funktion zu speichern. Weitere Informationen hierzu finden Sie unter Umgebungsvariable löschen.

Löschen von Geheimnissen mit der CLI

Wenn Sie einen geheimen Schlüssel in der Befehlszeilenschnittstelle löschen möchten, verwenden Sie den Befehl secret delete; Beispiel:

ibmcloud ce secret delete --name myliteralsecret -f

Beispielausgabe

Deleting secret myliteralsecret...
OK

Sie können zum Löschen von Umgebungsvariablen, die geheime Schlüssel und Konfigurationszuordnungen referenzieren, auch die Befehlszeilenschnittstelle verwenden.