Bindung von Dienstanmeldeinformationen an Ihren Cluster
Fügen Sie IBM Cloud-Services hinzu, um Ihren Kubernetes-Cluster mit zusätzlichen Funktionen in Bereichen wie Watson AI, Daten, Sicherheit und Internet of Things (IoT) zu erweitern.
Ab dem 04. August 2025 macht IBM Cloud die einmalige Ansicht zum Standardverhalten für alle Ressourcenanmeldeinformationen in neuen Dienstinstanzen. Anstatt die service bind CLI zum Hinzufügen von Dienstanmeldeinformationen
zu Ihrem Cluster zu verwenden, folgen Sie den Schritten zum manuellen Hinzufügen von Dienstanmeldeinformationen zu Ihrem Cluster. Weitere Informationen finden Sie unter Einmalige Berechtigungsnachweise.
- Was ist eine IBM Cloud-Servicebindung?
- Die Servicebindung ist eine schnelle Methode zum Erstellen von Serviceberechtigungsnachweisen für einen IBM Cloud-Service unter Verwendung des zugehörigen Public-Cloud-Serviceendpunkts und zum Speichern dieser Berechtigungsnachweise in einem
geheimen Kubernetes-Schlüssel in Ihrem Cluster. Zum Binden eines Service an Ihren Cluster müssen Sie zuerst eine Instanz des Service bereitstellen. Anschließend können Sie die Dienste entweder manuell an Ihren Cluster binden oder den CLI-Befehl
service bindverwenden, um die Zugangsdaten für den Dienst und das Geheimnis Kubernetes zu erstellen. - Welche Arten von Services kann ich an meinen Cluster binden?
- Sie können Dienste binden, die für IBM Cloud Identity and Access Management (IAM) aktiviert sind. IAM-fähige Services bieten eine differenziertere Zugriffssteuerung und können in einer IBM Cloud-Ressourcengruppe verwaltet werden. Weitere Informationen finden Sie unter Zugriff auf Ressourcen verwalten. Eine Liste der unterstützten IBM Cloud-Services finden Sie im IBM Cloud-Katalog.
- Wie kann ich die Geheimnisse meines Clusters noch sicherer machen?
- Wenden Sie sich zur Aktivierung eines Key Management Service-Providers in Ihrem Cluster an Ihren Clusteradministrator, um neue und vorhandene geheime Schlüssel zu verschlüsseln (z. B. den geheimen Schlüssel, in dem die Berechtigungsnachweise Ihrer IBM CloudServiceinstanzen gespeichert werden).
- Kann ich alle IBM Cloud-Services in meinem Cluster verwenden?
- Sie können die Servicebindung nur für Services verwenden, die Serviceschlüssel unterstützen, sodass die Serviceberechtigungsnachweise automatisch erstellt und in einem geheimen Kubernetes-Schlüssel gespeichert werden können. Informationen zum Verbinden des Dienstes mit einer App finden Sie unter Verbinden von Diensten mit Apps.
- Services, die Serviceschlüssel nicht unterstützen, stellen normalerweise eine API bereit, die Sie in Ihrer App verwenden können. Die Servicebindungsmethode konfiguriert den API-Zugriff für Ihre App nicht automatisch. Lesen Sie die API-Dokumentation zu Ihrem Service und implementieren Sie die API-Schnittstelle in Ihrer App.
- Kann ich eine bestehende IBM Cloud Service-Instanz an meinen Cluster binden?
- Ja, Sie können Dienste verwenden, die den Benennungsanforderungen entsprechen, und die Dienstanmeldeinformationen wiederverwenden, wenn Sie sie mit Ihrem Cluster verbinden. Stellen Sie sicher, dass der Dienstname das folgende Regex-Format hat.
[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?). Beispiele für zulässige Namen sindmyserviceoderexample.com. Nicht zulässige Zeichen sind Leerzeichen und Unterstreichungszeichen. - Kann ich mehrere IBM Cloud-Services auf einmal an mehrere Cluster binden?
- Die IBM Cloud-Servicebindung erfolgt pro Cluster und Service und funktioniert, indem ein geheimer Kubernetes-Schlüssel erstellt wird, den Ihre Pods über eine Mountoperation entsprechend zuordnen können.
- Bei mehreren Clustern und Services können Sie stattdessen vertrauenswürdige IAM-Profile verwenden. In IAM erstellen Sie ein vertrauenswürdiges Profil mit Zugriffsrichtlinien für
die IBM Cloud Services, die Sie wünschen. Anschließend verknüpfen Sie das vertrauenswürdige Profil mit beliebig vielen Clustern, basierend auf Bedingungen wie allen
prod-Kubernetes-Namensbereichen in Clustern in einer Ressourcengruppe. Anschließend verbinden Ihre Pods das projizierte Volume des Kubernetes-Servicekontos, um ein Token zu erhalten, das gegen ein IAM-Token ausgetauscht werden kann, welches Ihre Apps zur Authentifizierung bei den IBM Cloud-Services verwenden.
Manuelles Binden von Dienstanmeldeinformationen an Ihren Cluster
Vorbereitende Schritte:
- Stellen Sie sicher, dass Sie die folgenden Rollen innehaben:
- Editor oder Administrator IBM Cloud IAM-Plattform-Zugriffsrolle für den Cluster, in dem Sie einen Dienst binden möchten.
- Writer oder Manager IBM Cloud IAM-Dienst-Zugriffsrolle für den Kubernetes-Namensraum, an den Sie den Dienst binden möchten.
- Melden Sie sich an Ihrem Konto an. If applicable, target the appropriate resource group. Legen Sie den Kontext für den Cluster fest.
Sie können Ihrem Cluster manuell Dienstanmeldeinformationen hinzufügen, indem Sie die folgenden Schritte ausführen.
-
Ermitteln Sie den Instanznamen des Dienstes, den Sie Ihrem Cluster hinzufügen möchten.
ibmcloud resource service-instances -
Einen Serviceschlüssel erstellen. Weitere Informationen finden Sie in der Befehlsreferenz.
ibmcloud resource service-key-create NAME [ROLE] --instance-name SERVICE_INSTANCE -
Kopieren Sie den Abschnitt
Credentialsund speichern Sie ihn in einer Datei ohne Erweiterung mit dem Namencreds. -
Erstellen Sie ein Kubernetes-Geheimnis, das die von Ihnen erstellte Anmeldedatei verwendet.
kubectl create secret generic my-secret --from-file=path/to/creds
Hinzufügen von Diensten zu Clustern mit Hilfe der service bind CLI
- Kann ich bei der Anbindung vorhandene Dienstanmeldedaten verwenden?
- Sie können optional den Parameter
--keyangeben, wenn Sie den Befehlservice bindausführen, und den Namen Ihrer vorhandenen Dienstanmeldeinformationen angeben. IBM Cloud service binding erstellt automatisch ein Kubernetes secret mit Ihren vorhandenen Dienstanmeldeinformationen. - Was ist, wenn es sich bei meinen bestehenden Anmeldedaten um einmalige Anmeldedaten handelt?
- Der Befehl
service bindunterstützt nicht das Mitbringen eigener Anmeldedaten für die einmalige Ansicht. Wenn Sie also den Befehlservice bindverwenden möchten, geben Sie den Parameter--keynicht an. Wenn Sie den Befehl ohne--keyausführen, wird ein neuer Satz von Anmeldeinformationen für Sie erstellt. - Wenn Sie Anmeldeinformationen verwenden möchten, die nur einmalig gültig sind, müssen Sie den Dienst manuell an Ihren Cluster binden. Mit dieser Option können Sie Ihre vorhandenen Anmeldedaten für die einmalige Ansicht verwenden.
- Was ist, wenn ich Serviceberechtigungsnachweise, die den privaten Cloud-Service-Endpunkt verwenden, benutzen möchte?
- Standardmäßig erstellt der Befehl
service bindDienstanmeldeinformationen mit dem Endpunkt des öffentlichen Cloud-Dienstes. Wenn Sie den Private-Cloud-Serviceendpunkt verwenden möchten, müssen Sie manuell Serviceberechtigungsnachweise für Ihren Service erstellen, die den Private-Cloud-Serviceendpunkt verwenden; anschließend müssen Sie die Option--keyverwenden, um den Namen der bestehenden Serviceberechtigungsnachweise anzugeben. Wenn Sie Ihre eigenen Anmeldedaten mitbringen möchten, stellen Sie sicher, dass Ihre vorhandenen Anmeldedaten keine Einmal-Anmeldedaten sind. Weitere Informationen finden Sie unter Einmalige Berechtigungsnachweise. - Ihr Service unterstützt möglicherweise noch keine Private-Cloud-Serviceendpunkte. Wenn Sie einen ausschließlich privaten Cluster (private-only) haben, müssen Sie Serviceberechtigungsnachweise nutzen, die den Private-Cloud-Serviceendpunkt verwenden, oder Sie müssen die öffentliche IP-Adresse und den Port für die Verbindung zu Ihrem Service öffnen.
Lesen Sie in den folgenden Abschnitten nach, wie Sie Dienstanmeldeinformationen an Ihren Cluster binden.
Verwenden Sie die IBM Cloud-Servicebindung, um automatisch Serviceberechtigungsnachweise für Ihre IBM Cloud-Services zu erstellen und diese in einem geheimen Kubernetes-Schlüssel zu speichern.
Wenn Ihr Dienst private Cloud-Service-Endpunkte unterstützt, können Sie die Dienstanmeldedaten manuell mit dem privaten Cloud-Service-Endpunkt erstellen und dann die Option --key verwenden, um den Namen Ihrer Anmeldedaten anzugeben.
Vorbereitende Schritte:
- Stellen Sie sicher, dass Sie die folgenden Rollen innehaben:
- Editor oder Administrator IBM Cloud IAM-Plattform-Zugriffsrolle für den Cluster, in dem Sie einen Dienst binden möchten.
- Writer oder Manager IBM Cloud IAM-Dienst-Zugriffsrolle für den Kubernetes-Namensraum, an den Sie den Dienst binden möchten.
- Melden Sie sich an Ihrem Konto an. If applicable, target the appropriate resource group. Legen Sie den Kontext für den Cluster fest.
Gehen Sie wie folgt vor, um Ihrem Cluster einen IBM Cloud-Service hinzuzufügen:
-
Erstellen Sie eine Instanz des IBM Cloud-Service.
- Bestimmte IBM Cloud-Services sind nur in ausgewählten Regionen verfügbar. Sie können einen Service nur an Ihren Cluster binden, wenn der Service in derselben Region wie Ihr Cluster verfügbar ist. Wenn Sie eine Serviceinstanz in der Zone 'Washington DC' erstellen wollen, müssen Sie außerdem die CLI verwenden.
- Für IAM-fähige Services: Sie müssen die Serviceinstanz in derselben Ressourcengruppe wie den Cluster erstellen. Ein Service kann in nur einer Ressourcengruppe erstellt werden; eine Änderung ist danach nicht mehr möglich.
- Stellen Sie sicher, dass der Servicename das Format
myserviceoderexample.comhat. Leerzeichen und Unterstreichungszeichen sind nicht zulässig.
-
Überprüfen Sie den Servicetyp, den Sie erstellt haben, und notieren Sie die Serviceinstanz Name.
ibmcloud resource service-instancesBeispielausgabe
NAME Location State Type Tags <iam_service_instance_name> <region> active service_instance -
Geben Sie den Clusternamensbereich an, den Sie verwenden wollen, um Ihren Service hinzuzufügen.
kubectl get namespaces -
Binden Sie den Service an Ihren Cluster, um Serviceberechtigungsnachweise für Ihren Service zu erstellen, die den Public-Cloud-Serviceendpunkt verwenden und die Berechtigungsnachweise in einem geheimen Kubernetes-Schlüssel speichern. Wenn Sie über vorhandene Dienstanmeldeinformationen verfügen, verwenden Sie die Option
--key, um den Namen der Anmeldeinformationen anzugeben. Für IAM-aktivierte Dienste werden die Anmeldeinformationen automatisch mit der Dienstzugriffsrolle Writer erstellt, aber Sie können die Option--roleverwenden, um eine andere Dienstzugriffsrolle anzugeben. Wenn Sie die Option--keyverwenden, schließen Sie die Option--rolenicht ein.Wenn Sie Ihre eigenen Anmeldeinformationen mitbringen möchten, stellen Sie sicher, dass Ihre vorhandenen Anmeldeinformationen keine Einmal-Anmeldeinformationen sind, oder verwenden Sie die empfohlene Methode, die Dienstanmeldeinformationen manuell in Ihrem Cluster zu speichern. Weitere Informationen finden Sie unter Einmalige Berechtigungsnachweise.
ibmcloud ks cluster service bind --cluster <cluster_name_or_ID> --namespace <namespace> --service <service_instance_name> [--key <service_instance_key>] [--role <IAM_service_role>]Nach erfolgreicher Erstellung der Serviceberechtigungsnachweise wird ein geheimer Kubernetes-Schlüssel namens
binding-<service_instance_name>erstellt.Beispielausgabe
ibmcloud ks cluster service bind --cluster mycluster --namespace mynamespace --service cleardb Binding service instance to namespace... OK Namespace: mynamespace Secret name: binding-<service_instance_name> -
Überprüfen Sie die Serviceberechtigungsnachweise in Ihrem geheimen Kubernetes-Schlüssel.
- Rufen Sie die Details des geheimen Schlüssels ab und notieren Sie den binding-Wert. Der binding-Wert ist Base64-codiert und enthält die Berechtigungsnachweise für Ihre Serviceinstanz im JSON-Format.
Beispielausgabekubectl get secrets binding-<service_instance_name> --namespace=<namespace> -o yamlapiVersion: v1 data: binding: <binding> kind: Secret metadata: annotations: service-instance-id: 1111aaaa-a1aa-1aa1-1a11-111aa111aa11 service-key-id: 2b22bb2b-222b-2bb2-2b22-b22222bb2222 creationTimestamp: 2018-08-07T20:47:14Z name: binding-<service_instance_name> namespace: <namespace> resourceVersion: "6145900" selfLink: /api/v1/namespaces/default/secrets/binding-mycloudant uid: 33333c33-3c33-33c3-cc33-cc33333333c type: Opaque - Decodieren Sie den Bindungswert.
Beispielausgabeecho "<binding>" | base64 -D{"apikey":"<API_key>","host":"<ID_string>-bluemix.cloudant.com","iam_apikey_description":"Auto generated apikey during resource-key operation for Instance - crn:v1:bluemix:public:cloudantnosqldb:us-south:a/<ID_string>::","iam_apikey_name":"auto-generated-apikey-<ID_string>","iam_role_crn":"crn:v1:bluemix:public:iam::::serviceRole:Writer","iam_serviceid_crn":"crn:v1:bluemix:public:iam-identity::a/1234567890brasge5htn2ec098::serviceid:ServiceId-<ID_string>","password":"<ID_string>","port":443,"url":"https://<ID_string>-bluemix.cloudant.com","username":"123b45da-9ce1-4c24-ab12-rinwnwub1294-bluemix"} - Optional: Vergleichen Sie die Serviceberechtigungsnachweise, die Sie im vorherigen Schritt decodiert haben, mit den Serviceberechtigungsnachweisen, die Sie für Ihre Serviceinstanz im IBM Cloud-Dashboard finden.
- Rufen Sie die Details des geheimen Schlüssels ab und notieren Sie den binding-Wert. Der binding-Wert ist Base64-codiert und enthält die Berechtigungsnachweise für Ihre Serviceinstanz im JSON-Format.
-
Ihr Service ist nun an Ihren Cluster gebunden und Sie müssen Ihre App für den Zugriff auf die Serviceberechtigungsnachweise im geheimen Kubernetes-Schlüssel konfigurieren.
Über Apps auf Serviceberechtigungsnachweise zugreifen
Um über Ihre App auf eine IBM Cloud-Serviceinstanz zuzugreifen, müssen Sie die im geheimen Kubernetes-Schlüssel gespeicherten Serviceberechtigungsnachweise für Ihre App verfügbar machen.
Die Berechtigungsnachweise einer Serviceinstanz sind Base64-codiert und werden in Ihrem geheimen Schlüssel im JSON-Format gespeichert. Wählen Sie eine der folgenden Optionen aus, um auf die Daten in Ihrem geheimen Schlüssel zuzugreifen:
- Geheimen Schlüssel als Datenträger an den Pod anhängen
- Geheimen Schlüssel in Umgebungsvariablen referenzieren
Vorbereitende Schritte:
- Stellen Sie sicher, dass Sie über die IAM-Service-Zugriffsrolle Writer oder Manager IBM Cloud für den Namensraum
kube-systemverfügen. - Melden Sie sich an Ihrem Konto an. If applicable, target the appropriate resource group. Legen Sie den Kontext für den Cluster fest.
- Fügen Sie einen IBM Cloud-Service zu Ihrem Cluster hinzu.
Geheimen Schlüssel als Datenträger an Ihren Pod anhängen
Wenn Sie den geheimen Schlüssel als Datenträger an Ihren Pod anhängen, wird eine Datei mit dem Namen binding im Mountverzeichnis des Datenträgers gespeichert. Die Datei binding im JSON-Format enthält sämtliche Informationen
und Berechtigungsnachweise, die Sie benötigen, um auf den IBM Cloud-Service zuzugreifen.
-
Listen Sie die verfügbaren geheimen Schlüssel in Ihrem Cluster auf und notieren Sie den Namen Ihres geheimen Schlüssels. Suchen Sie nach einem Schlüssel des Typs Opaque. Sollten mehrere geheime Schlüssel vorhanden sein, wenden Sie sich an Ihren Clusteradministrator, damit dieser den geheimen Schlüssel für den gewünschten Service ermittelt.
kubectl get secretsBeispielausgabe
NAME TYPE DATA AGE binding-<service_instance_name> Opaque 1 3m -
Erstellen Sie eine YAML-Datei für Ihre Kubernetes-Bereitstellung und hängen Sie den geheimen Schlüssel als Datenträger an Ihren Pod an.
apiVersion: apps/v1 kind: Deployment metadata: labels: app: secret-test name: secret-test namespace: <my_namespace> spec: selector: matchLabels: app: secret-test replicas: 1 template: metadata: labels: app: secret-test spec: containers: - image: icr.io/ibm/liberty:latest name: secret-test volumeMounts: - mountPath: <mount_path> name: <volume_name> volumes: - name: <volume_name> secret: defaultMode: 420 secretName: binding-<service_instance_name>volumeMounts.mountPath- Der absolute Pfad des Verzeichnisses, in dem der Datenträger innerhalb des Containers angehängt wird.
volumeMounts.nameundvolumes.name- Der Name des Datenträgers, der an Ihren Pod angehängt werden soll.
secret.defaultMode- Die Lese- und Schreibberechtigungen für den geheimen Schlüssel. Verwenden Sie
420, um Leseberechtigungen festzulegen. secret.secretName- Der Name des geheimen Schlüssels, den Sie im vorherigen Schritt notiert haben.
-
Erstellen Sie den Pod und hängen Sie den geheimen Schlüssel als Datenträger an.
kubectl apply -f secret-test.yaml -
Stellen Sie sicher, dass der Pod erstellt wurde.
kubectl get podsCLI-Beispielausgabe:
NAME READY STATUS RESTARTS AGE secret-test-1111454598-gfx32 1/1 Running 0 1m -
Greifen Sie auf die Serviceberechtigungsnachweise zu.
-
Melden Sie sich bei Ihrem Pod an.
kubectl exec <pod_name> -it bash -
Navigieren Sie zu Ihrem Datenträgermountpfad, den Sie zuvor definiert haben, und listen Sie die Dateien in Ihrem Datenträgermountpfad auf.
cd <volume_mountpath> && lsBeispielausgabe
bindingDie
binding-Datei enthält die Serviceberechtigungsnachweise, die Sie im geheimen Kubernetes-Schlüssel gespeichert haben. -
Zeigen Sie die Serviceberechtigungsnachweise an. Die Berechtigungsnachweise werden als Schlüssel/Wert-Paare im JSON-Format gespeichert.
cat bindingBeispielausgabe
{"apikey":"<API_key>","host":"<ID_string>-bluemix.cloudant.com","iam_apikey_description":"Auto generated apikey during resource-key operation for Instance - crn:v1:bluemix:public:cloudantnosqldb:us-south:a/<ID_string>:<ID_string>::","iam_apikey_name":"auto-generated-apikey-<ID_string>","iam_role_crn":"crn:v1:bluemix:public:iam::::serviceRole:Writer","iam_serviceid_crn":"crn:v1:bluemix:public:iam-identity::a/<ID_string>::serviceid:ServiceId-<ID_string>","password":"<ID_string>","port":443,"url":"https://<ID_string>-bluemix.cloudant.com","username":"123b45da-9ce1-4c24-ab12-rinwnwub1294-bluemix"} -
Konfigurieren Sie Ihre App, um den JSON-Inhalt zu parsen und die Informationen abzurufen, die Sie für den Zugriff auf den Service benötigen.
-
Auf den geheimen Schlüssel in Umgebungsvariablen verweisen
Sie können die Serviceberechtigungsnachweise und andere Schlüssel/Wert-Paare aus Ihrem geheimen Kubernetes-Schlüssel als Umgebungsvariablen zu Ihrer Bereitstellung hinzufügen.
-
Listen Sie die verfügbaren geheimen Schlüssel in Ihrem Cluster auf und notieren Sie den Namen Ihres geheimen Schlüssels. Suchen Sie nach einem Schlüssel des Typs Opaque. Sollten mehrere geheime Schlüssel vorhanden sein, wenden Sie sich an Ihren Clusteradministrator, damit dieser den geheimen Schlüssel für den gewünschten Service ermittelt.
kubectl get secretsBeispielausgabe
NAME TYPE DATA AGE binding-<service_instance_name> Opaque 1 3m -
Rufen Sie die Details Ihres geheimen Schlüssels ab, um potenzielle Schlüssel/Wert-Paare zu finden, auf die Sie als Umgebungsvariablen in Ihrem Pod verweisen können. Die Serviceberechtigungsnachweise werden im Schlüssel
bindingIhres geheimen Schlüssels gespeichert.kubectl get secrets binding-<service_instance_name> --namespace=<namespace> -o yamlBeispielausgabe
apiVersion: v1 data: binding: <binding> kind: Secret metadata: annotations: service-instance-id: 7123acde-c3ef-4ba2-8c52-439ac007fa70 service-key-id: 9h30dh8a-023f-4cf4-9d96-d12345ec7890 creationTimestamp: 2018-08-07T20:47:14Z name: binding-<service_instance_name> namespace: <namespace> resourceVersion: "6145900" selfLink: /api/v1/namespaces/default/secrets/binding-mycloudant uid: 12345a31-9a83-11e8-ba83-cd49014748f type: Opaque -
Erstellen Sie eine YAML-Datei für Ihre Kubernetes-Bereitstellung und geben Sie eine Umgebungsvariable an, die auf den Schlüssel
bindingverweist.apiVersion: apps/v1 kind: Deployment metadata: labels: app: secret-test name: secret-test namespace: <my_namespace> spec: selector: matchLabels: app: secret-test template: metadata: labels: app: secret-test spec: containers: - image: icr.io/ibm/liberty:latest name: secret-test env: - name: BINDING valueFrom: secretKeyRef: name: binding-<service_instance_name> key: bindingcontainers.env.name- Der Name Ihrer Umgebungsvariablen.
env.valueFrom.secretKeyRef.name- Der Name des geheimen Schlüssels, den Sie im vorherigen Schritt notiert haben.
env.valueFrom.secretKeyRef.key- Der Schlüssel, der Teil Ihres geheimen Schlüssels ist und auf den Sie in Ihrer Umgebungsvariablen verweisen möchten. Zum Referenzieren der Serviceberechtigungsnachweise müssen Sie den Schlüssel der Bindung verwenden.
-
Erstellen Sie den Pod, der auf den Schlüssel
bindingdes geheimen Schlüssels als Umgebungsvariable verweist.kubectl apply -f secret-test.yaml -
Stellen Sie sicher, dass der Pod erstellt wurde.
kubectl get podsCLI-Beispielausgabe:
NAME READY STATUS RESTARTS AGE secret-test-1111454598-gfx32 1/1 Running 0 1m -
Stellen Sie sicher, dass die Umgebungsvariable richtig festgelegt ist.
- Melden Sie sich bei Ihrem Pod an.
kubectl exec <pod_name> -it bash - Listen Sie alle Umgebungsvariablen im Pod auf.
BeispielausgabeenvBINDING={"apikey":"<API_key>","host":"<ID_string>-bluemix.cloudant.com","iam_apikey_description":"Auto generated apikey during resource-key operation for Instance - crn:v1:bluemix:public:cloudantnosqldb:us-south:a/<ID_string>::","iam_apikey_name":"auto-generated-apikey-<ID_string>","iam_role_crn":"crn:v1:bluemix:public:iam::::serviceRole:Writer","iam_serviceid_crn":"crn:v1:bluemix:public:iam-identity::a/1234567890brasge5htn2ec098::serviceid:ServiceId-<ID_string>","password":"<password>","port":443,"url":"https://<ID_string>-bluemix.cloudant.com","username":"<ID_string>-bluemix"}
- Melden Sie sich bei Ihrem Pod an.
-
Konfigurieren Sie Ihre App zum Lesen der Umgebungsvariablen und zum Parsen des JSON-Inhalts, um die Informationen abzurufen, die Sie für den Zugriff auf den Service benötigen.
Beispielcode in Python:
if os.environ.get('BINDING'): credentials = json.loads(os.environ.get('BINDING')) -
Optional: Fügen Sie der App als Vorsichtsmaßnahme eine Fehlerbehandlung hinzu für den Fall, dass die Umgebungsvariable
BINDINGnicht ordnungsgemäß festgelegt ist.Beispielcode in Java:
if (System.getenv("BINDING") == null) { throw new RuntimeException("Environment variable 'SECRET' is not set!"); }Beispielcode in Node.js:
if (!process.env.BINDING) { console.error('ENVIRONMENT variable "BINDING" is not set!'); process.exit(1); }
Service aus einem Cluster entfernen
Wenn Sie keinen IBM Cloud-Service verwenden möchten, den Sie an Ihren Cluster gebunden haben, können Sie den geheimen Kubernetes-Schlüssel und die Pods, die auf den geheimen Schlüssel zugreifen, manuell aus Ihrem Cluster entfernen.
-
Listen Sie die Services auf, die an Ihren Cluster gebunden sind, und notieren Sie den Namen des Service und des Namensbereichs, an den der Service gebunden ist.
ibmcloud ks cluster service ls --clusterBeispielausgabe
OK Service Instance GUID Key Namespace myservice 12345ab1-1234-1abc-a12b-12abc12a12ab kube-a1a12abcd12a123abc1a12ab1a1234ab7.abcdefg0p1abcd123lgg.default default -
Listen Sie die geheimen Kubernetes-Schlüssel in dem Namensbereich auf, an den Ihr Service gebunden ist, und suchen Sie nach dem geheimen Schlüssel mit einem Namen im Format
binding-<service_name>.kubectl get secrets -n <namespace> | grep OpaqueBeispielausgabe
binding-myservice Opaque 1 3d23h -
Rufen Sie alle Pods ab, die auf den geheimen Schlüssel zugreifen.
kubectl get pods --all-namespaces -o=jsonpath='{range .items[*]}{"\n"}{.metadata.name}{":\t"}{range .spec.volumes[*]}{.secret.secretName}{" "}{end}{end}' | grep "<secret_name>"Wenn die CLI-Ausgabe leer ist, sind keine Pods in Ihrem Cluster vorhanden, die auf den geheimen Schlüssel zugreifen.
-
Wenn Sie Pods haben, die auf den geheimen Schlüssel zugreifen, entfernen Sie entweder den Pod oder die Bereitstellung, die den Pod verwaltet, oder Sie aktualisieren den Pod und die YAML-Bereitstellungsdatei so, dass sie einen anderen geheimen Schlüssel verwenden.
- Führen Sie die folgenden Befehle aus, um einen Pod oder eine Bereitstellung zu entfernen:
kubectl delete pod <pod_name> -n <namespace>kubectl delete deployment <deployment_name> -n <namespace> - Gehen Sie wie folgt vor, um einen Pod oder eine Bereitstellung zu aktualisieren:
- Rufen Sie den Pod oder die YAML-Bereitstellungsdatei ab.
kubectl get pod <pod_name> -o yamlkubectl get deployment <deployment_name> -o yaml - Kopieren Sie die YAML-Datei und ändern Sie im Abschnitt
spec.volumesden Namen des geheimen Schlüssels ('secret'), den Sie verwenden wollen. - Wenden Sie die Änderung in Ihrem Cluster an.
kubectl apply -f pod.yamlkubectl apply -f deployment.yaml - Überprüfen Sie, ob ein neuer Pod mit der aktualisierten Datenträgerspezifikation erstellt wurde.
kubectl get podskubectl describe pod <pod_name>
- Rufen Sie den Pod oder die YAML-Bereitstellungsdatei ab.
- Führen Sie die folgenden Befehle aus, um einen Pod oder eine Bereitstellung zu entfernen:
-
Entfernen Sie den geheimen Schlüssel.
kubectl delete secret <secret_name> -n <namespace> -
Überprüfen Sie, ob Ihr geheimer Schlüssel entfernt wurde.
kubectl get secrets -n <namespace> -
Optional. Entfernen Sie die IBM Cloud-Serviceinstanz.
ibmcloud resource service-instance-delete <service_name>