Schützen Sie vertrauliche Daten für Apps, die in Ihrem Kubernetes-Cluster ausgeführt werden, mithilfe des Trial- und Standard-Tarifs
In diesem Lernprogramm erfahren Sie, wie Sie mithilfe des Open-Source-Tools External Secrets Operator IBM Cloud® Secrets Manager geheime Schlüssel für Anwendungen verwalten, die Ihren IBM Cloud Kubernetes Service-Cluster ausführen.
Alternativ können Sie auch das Kubernetes Service CLI-Plug-in verwenden, um TLS und nicht TLS Geheimnisse zu verwalten. Weitere Informationen zu diesem Ansatz finden Sie unter Einrichten von Kubernetes Ingress.
Sie sind Entwickler in einem Unternehmen, und Ihr Team nutzt Kubernetes Service, um containerisierte Anwendungen und Dienste auf IBM Cloud bereitzustellen. In Ihrem aktuellen Ablauf verwenden Sie Kubernetes-Secrets, um sensible Daten wie Passwörter und API-Schlüssel zu speichern, die von den in Ihrem Cluster ausgeführten Anwendungen und Diensten verwendet werden. Um mehr Kontrolle über Ihre geheimen Schlüssel für Anwendungen zu haben, sollten Sie die Möglichkeit haben, Ihre geheimen Clusterschlüssel in einem externen Service für das Management geheimer Schlüssel zu speichern, wo Sie sie im Ruhezustand verschlüsseln, ihre Aktivität überwachen und sie einfach verwalten können.
Mit Secrets Manager können Sie die geheimen Schlüssel, die von den in Ihren Kubernetes-Clustern ausgeführten Apps verwendet werden, zentralisieren und schützen. Anstatt Ihre geheimen Schlüssel bei der Bereitstellung zu injizieren, können Sie Ihre Apps so konfigurieren, dass sie bei der Ausführung geheime Schlüssel aus Secrets Manager sicher abrufen. Wenn es an der Zeit ist, den geheimen Schlüssel turnusmäßig zu wechseln, können Sie dies von Secrets Manager aus ausführen. Nehmen Sie beispielsweise folgendes Szenario an:
- Als Entwickler verwenden Sie Secrets Manager, um einen geheimen Schlüssel für eine Anwendung zu speichern, die Sie in einem Kubernetes-Cluster bereitstellen möchten.
- Secrets Manager stellt eine ID für den geheimen Schlüssel bereit. Sie schließen die ID in die Konfigurationsdatei
ExternalSecretsfür Ihre App ein und wenden die Konfiguration auf den Cluster an. - Der Controller für externe geheime Schlüssel ruft die
ExternalSecrets-Objekte in der Konfigurationsdatei ab, die Sie mithilfe der Kubernetes-API definiert haben. - Zur Anwendungslaufzeit ruft der Controller die geheimen Daten aus Secrets Manager ab und konvertiert die
ExternalSecrets-Objekte in geheime Kubernetes-Schlüssel für Ihren Cluster.
Dieses Szenario verfügt über ein Tool eines anderen Anbieters, das sich auf die Konformitätsbereitschaft von Workloads auswirken kann, die in Ihrem Kubernetes-Cluster ausgeführt werden. Wenn Sie ein Community-Tool oder ein Tool eines Drittanbieters hinzufügen, beachten Sie bitte, dass Sie für die Einhaltung der Compliance-Vorgaben Ihrer Apps verantwortlich sind und bei der Behebung etwaiger Probleme mit dem entsprechenden Anbieter zusammenarbeiten müssen. Weitere Informationen finden Sie im Abschnitt Ihre Verantwortlichkeiten bei der Verwendung von IBM Cloud Kubernetes Service.
Vorbereitende Schritte
Stellen Sie vor dem ersten Start sicher, dass Sie über den Administrator-Plattformzugriff verfügen, damit Sie Kontoberechtigungsnachweise und Einrichtungsressourcen erstellen können. Außerdem müssen die folgenden Voraussetzungen erfüllt sein:
- Laden Sie die IBM Cloud-CLI herunter und laden und installieren Sie sie.
- Installieren Sie das Secrets Manager-CLI-Plug-in.
- Installieren Sie die Kubernetes-CLI(
kubectl). - Herunterladen und installieren
jq.
jq unterstützt Sie beim Ausschneiden und Filtern von JSON-Daten. Sie verwenden jq in diesem Lernprogramm, um gespeicherte Umgebungsvariablen zu erfassen und zu verwenden.
Umgebung einrichten
Um mit Secrets Manager und Kubernetes Service arbeiten zu können, müssen Sie einen Cluster und eine Secrets Manager-Instanz in Ihrem IBM Cloud-Konto erstellen. Sie müssen ferner Berechtigungen konfigurieren, damit Sie Operationen für beide Services ausführen können.
In diesem Schritt richten Sie eine Zugriffsumgebung ein, indem Sie eine Service-ID und einen API-Schlüssel von IBM Cloud erstellen. Am Ende des Lernprogramms können Sie Ihre Ressourcen leicht entfernen, wenn Sie sie nicht mehr benötigen. Alternativ können Sie ein vertrauenswürdiges Profil verwenden, um den Operator für externe geheime Schlüssel zu berechtigen.
Service-ID und API-Schlüssel erstellen
Beginnen Sie, indem Sie die Kontoberechtigungsnachweise erstellen, die Sie für die Ausführung von Operationen für Secrets Manager und Kubernetes Service benötigen.
-
Melden Sie sich in der Befehlszeile bei IBM Cloud über die IBM Cloud-CLI an.
ibmcloud loginWenn die Anmeldung fehlschlägt, führen Sie den Befehl
ibmcloud login --ssoaus, um es erneut zu versuchen. Der Parameter--ssoist erforderlich, wenn Sie sich mit einer föderierten ID anmelden. Wenn diese Option verwendet wird, rufen Sie den Link auf, der in der Ausgabe der Befehlszeilenschnittstelle aufgelistet ist, um einen einmalig verwendbaren Kenncode zu generieren. -
Erstellen Sie eine Service-ID und legen Sie sie als Umgebungsvariable fest.
export SERVICE_ID=`ibmcloud iam service-id-create kubernetes-secrets-tutorial --description "A service ID for testing ESO integration" --output json | jq -r ".id"`; echo $SERVICE_ID -
Ordnen Sie die Service-ID-Berechtigungen zum Lesen von geheimen Schlüsseln aus Secrets Manager zu.
ibmcloud iam service-policy-create $SERVICE_ID --roles "SecretsReader" --service-name secrets-managerDurch die Zuordnung des Servicezugriffs SecretsReader verfügt der Controller für externe geheime Schlüssel über die richtige Zugriffsebene, um geheime Schlüssel aus Secrets Manager zu lesen und diese in einem Kubernetes-Cluster zu füllen.
-
Erstellen Sie einen IBM Cloud-API-Schlüssel für Ihre Service-ID.
export IBM_CLOUD_API_KEY=`ibmcloud iam service-api-key-create kubernetes-secrets-tutorial $SERVICE_ID --description "An API key for testing ESO integration." --output json | jq -r ".apikey"`Sie verwenden diesen API-Schlüssel später, um Secrets Manager für Ihre Clusterbereitstellung zu konfigurieren.
Kubernetes-Cluster und Secrets Manager-Instanz erstellen
Erstellen Sie einen Kubernetes-Cluster und eine Instanz von Secrets Manager in Ihrem IBM Cloud-Konto.
Sie können einen kostenlosen Kubernetes-Cluster und eine Secrets Manager-Serviceinstanz pro IBM Cloud-Konto erstellen. Wenn Sie bereits über beide Ressourcen in Ihrem Konto verfügen, können Sie den vorhandenen kostenlosen Cluster und die Secrets Manager-Instanz verwenden, um das Lernprogramm abzuschließen.
-
Wählen Sie in der Befehlszeile das Konto, die Region und die Ressourcengruppe aus, in der Sie eine Secrets Manager-Serviceinstanz erstellen möchten.
In diesem Lernprogramm interagieren Sie mit der Region 'Dallas'. Wenn Sie in einer anderen Region angemeldet sind, achten Sie darauf, Dallas als Zielregion festzulegen, indem Sie den folgenden Befehl ausführen.
ibmcloud target -r us-south -g default -
Erstellen Sie einen Kubernetes-Cluster.
ibmcloud ks cluster create classic --zone dal10 --flavor free --name my-test-cluster -
Erstellen Sie eine Secrets Manager-Instanz.
ibmcloud resource service-instance-create my-secrets-manager secrets-manager trial us-southDie Bereitstellung sowohl für Secrets Manager als auch für Ihren Kubernetes-Cluster dauert 5 bis 15 Minuten.
-
Bevor Sie mit dem nächsten Schritt fortfahren, vergewissern Sie sich, dass Ihr Cluster und Ihre Secrets Manager-Instanz erfolgreich bereitgestellt wurden.
- Stellen Sie sicher, dass die Implementierung des Workerknotens abgeschlossen ist.
ibmcloud ks worker ls --cluster my-test-cluster ``` Wenn Einrichtung Ihres Workerknotens abgeschlossen ist, ändert sich der Status in **Bereit**. ```sh {: screen} ID Public IP Private IP Flavor State Status Zone Version kube-c39pf4ld0m87o3fv1utg-mytestclust-default-000000dd 169.xx.xx.xxx 10.xxx.xx.xxx free normal Ready mex01 1.20.7_1543 ``` 2. Stellen Sie anschließend sicher, dass Ihre Secrets Manager-Instanz erfolgreich eingerichtet wurde. ```sh {: pre} ibmcloud resource service-instance my-secrets-manager ``` Wenn die Einrichtung der Instanz abgeschlossen ist, ändert sich der Status in **Aktiv**. ```plaintext {: screen} Name: my-secrets-manager ID: crn:v1:bluemix:public:secrets-manager:us-south:a/f047b55a3362ac06afad8a3f2f5586ea:fe06948b-0c6b-4183-8d4b-e6c1d38ff65f:: GUID: fe06948b-0c6b-4183-8d4b-e6c1d38ff65f Location: us-south Service Name: secrets-manager Service Plan Name: trial Resource Group Name: default State: active Type: service_instance Sub Type: Created at: 2021-01-06T17:11:32Z Created by: zara@example.com Updated at: 2021-03-31T02:33:26Z ``` -
Legen Sie den Kontext für Ihren Kubernetes-Cluster in der Befehlszeilenschnittstelle fest.
ibmcloud ks cluster config --cluster my-test-cluster -
Überprüfen Sie, ob
kubectl-Befehle ordnungsgemäß ausgeführt werden und ob der Kubernetes-Kontext auf Ihren Cluster gesetzt ist.kubectl config current-contextBeispielausgabe:
my-test-cluster/<your_cluster_ID>
Erstellen eines vertrauenswürdigen Profils über CLI
Ein vertrauenswürdiges Profil ermöglicht dem Operator für externe geheime Schlüssel das Lesen aus Secrets Manager, ohne dass eine Service-ID erstellt oder ein API-Schlüssel verwaltet werden muss.
-
Rufen Sie die CRNs für Ihre Secrets Manager-Instanz und Ihren Kubernetes-Cluster ab.
CLUSTER_CRN=$(ibmcloud ks cluster get --cluster my-test-cluster --output json | jq -r '.crn') SECRETS_MANAGER_CRN=$(ibmcloud resource service-instance my-secrets-manager --output JSON | jq -r '.[0].crn') -
Erstellen Sie das Profil.
ibmcloud iam trusted-profile-create 'External Secrets' -
Berechtigen Sie den Kubernetes-Cluster für die Verwendung des vertrauenswürdigen Profils.
Kubernetes
ibmcloud iam trusted-profile-rule-create 'External Secrets' --name kubernetes --type Profile-CR --conditions claim:namespace,operator:EQUALS,value:external-secrets --conditions claim:name,operator:EQUALS,value:external-secrets --conditions claim:crn,operator:EQUALS,value:$CLUSTER_CRN --cr-type IKS_SAOpenShift
ibmcloud iam trusted-profile-rule-create 'External Secrets' --name kubernetes --type Profile-CR --conditions claim:namespace,operator:EQUALS,value:external-secrets-operator --conditions claim:name,operator:EQUALS,value:cluster-external-secrets --conditions claim:crn,operator:EQUALS,value:$CLUSTER_CRN --cr-type IKS_SA -
Erstellen Sie eine Zugriffsrichtlinie, mit der das vertrauenswürdige Profil geheime Schlüssel aus Ihrer Secrets Manager-Instanz lesen kann.
ibmcloud iam trusted-profile-policy-create 'External Secrets' --roles SecretsReader --service-instance $SECRETS_MANAGER_CRN --service-name secrets-manager
Erstellen Sie ein vertrauenswürdiges Profil mit Terraform
Ein vertrauenswürdiges Profil ermöglicht dem Operator für externe geheime Schlüssel das Lesen aus Secrets Manager, ohne dass eine Service-ID erstellt oder ein API-Schlüssel verwaltet werden muss. Sie können diesem Beispiel in Terraform folgen, das alle Schritte zur Erstellung eines vertrauenswürdigen Profils durchführt:
```sh {: pre}
//Get your cluster details
data "ibm_container_vpc_cluster" "cluster" {
name = var.cluster_name
resource_group_id = var.resource_group_id
}
//Get details of Secret Manager Instance
data "ibm_resource_instance" "secrets_manager" {
name = var.sm_name
resource_group_id = var.resource_group_id
service = "secrets-manager"
}
//Create Trusted Profile
resource "ibm_iam_trusted_profile" "eso_profile" {
name = var.profile_name
description = var.profile_description
}
//Attach IAM Policy for Secrets Manager Access
resource "ibm_iam_trusted_profile_policy" "secrets_policy" {
iam_id = ibm_iam_trusted_profile.eso_profile.id
roles = ["SecretsReader"]
resources {
service = "secrets-manager"
resource_instance_id = data.ibm_resource_instance.secrets_manager.guid
}
}
//Add Claim Rule for Kubernetes Service Account
resource "ibm_iam_trusted_profile_claim_rule" "eso_claim_rule" {
profile_id = ibm_iam_trusted_profile.eso_profile.id
type = "Profile-CR"
cr_type = "IKS_SA"
conditions {
claim = "name"
operator = "EQUALS"
value = var.service_account_name
}
conditions {
claim = "namespace"
operator = "EQUALS"
value = var.namespace
}
conditions {
claim = "crn"
operator = "EQUALS"
value = data.ibm_container_vpc_cluster.cluster.crn
}
}
//Variables
variable "resource_group_id" {
description = "Resource Group ID"
type = string
}
variable "sm_name" {
description = "Secret Manager Instance ID"
type = string
}
variable "cluster_name" {
description = "IKS Cluster name"
type = string
}
variable "profile_name" {
type = string
description = "Name of the trusted profile"
}
variable "profile_description" {
type = string
description = "Description of the trusted profile"
}
variable "service_account_name" {
description = "Kubernetes service account name for claim rule"
type = string
}
variable "namespace" {
description = "Kubernetes namespace for claim rule"
type = string
}
```
Secrets Manager-Instanz vorbereiten
Konfigurieren Sie schließlich Ihre Secrets Manager-Instanz, um mit dynamischen geheimen Schlüsseln arbeiten zu können.
-
Überprüfen Sie in der Befehlszeile, ob Sie auf das CLI-Plug-in von Secrets Manager zugreifen können.
ibmcloud secrets-manager --helpHaben Sie das Plug-in noch nicht? Führen Sie zum Installieren des Secrets Manager-CLI-Plug-ins
ibmcloud plugin install secrets-manageraus. -
Exportieren Sie eine Umgebungsvariable mit Ihrer eindeutigen Secrets Manager-API-Endpunkt-URL.
export SECRETS_MANAGER_URL=`ibmcloud resource service-instance my-secrets-manager --output json | jq -r '.[].dashboard_url | .[0:-3]'`; echo $SECRETS_MANAGER_URL -
Erstellen Sie eine Gruppe geheimer Schlüssel für Ihre Instanz.
Gruppen geheimer Schlüssel sind eine Möglichkeit, wie Sie organisieren und steuern können, wer in Ihrem Team Zugriff auf bestimmte geheime Schlüssel in Ihrer Instanz hat. Wenn Sie eine Gruppe von geheimen Schlüsseln über die IBM Cloud-CLI erstellen möchten, verwenden Sie den Befehl
ibmcloud secrets-manager secret-group-createFühren Sie den folgenden Befehl aus, um eine geheime Gruppe zu erstellen und ihre ID als Umgebungsvariable zu speichern.export SECRET_GROUP_ID=`ibmcloud secrets-manager secret-group-create --name my-test-secret-group --description "Read and write to my test app" --output json --service-url $SECRETS_MANAGER_URL | jq -r '.id'`; echo $SECRET_GROUP_IDVerwenden Sie eine Windows™-Eingabeaufforderung (
cmd.exe) oder PowerShell? Wenn bei der Übergabe des JSON-Inhalts über die Befehlszeile Fehler auftreten, müssen Sie möglicherweise die Zeichenfolgen an die Anforderungen an Escape-Zeichen für Anführungszeichen ändern, die für Ihr Betriebssystem spezifisch sind. Weitere Informationen finden Sie im Abschnitt zur Verwendung von Anführungszeichen mit Zeichenfolgen in der Befehlszeilenschnittstelle von IBM Cloud.Erfolgreich! Jetzt können Sie den geheimen Schlüssel in Secrets Manager speichern, den Sie in Ihrem Kubernetes-Cluster füllen möchten. Fahren Sie mit dem nächsten Schritt fort.
Geheimen Schlüssel in Secrets Manager erstellen
Geheime Schlüssel sind anwendungsspezifisch und können je nach der individuellen App oder dem Service variieren, die sie benötigt. Ein geheimer Schlüssel kann aus einem Benutzernamen, einem Kennwort, einem API-Schlüssel oder einer anderen Art von Berechtigungsnachweisen bestehen.
Secrets Manager unterstützt verschiedene Typen von geheimen Schlüsseln, die Sie im Service erstellen und verwalten können. Wenn Sie zum Beispiel einen API-Schlüssel für eine App verwalten müssen, die durch die IAM-Authentifizierung von IBM Cloud geschützt wird, können Sie einen IAM-Berechtigungsnachweis erstellen. Wenn Sie einen geheimen Schlüssel verwalten müssen, der einen beliebigen Typ strukturierter oder unstrukturierter Daten enthalten kann, können Sie einen beliebigen geheimen Schlüssel (arbitrary) erstellen.
In diesem Lernprogramm erstellen Sie als Beispiel einen Benutzernamen und ein Kennwort. Um einen geheimen Schlüssel aus der IBM Cloud-CLI zu erstellen, verwenden Sie den Befehl ibmcloud secrets-manager secret-create.
Führen Sie den folgenden Befehl aus, um den geheimen Schlüssel zu erstellen und seine ID als Umgebungsvariable zu speichern.
export SECRET_ID=`ibmcloud secrets-manager secret-create --secret-type=username_password --secret-name example_username_password --username-password-username user123 --username-password-password cloudy-rainy-coffee-book --secret-labels "my-test-cluster, tutorial" --secret-group-id $SECRET_GROUP_ID --output json $SECRETS_MANAGER_URL | jq -r '.id'`; echo $SECRET_ID
Aktualisieren Sie instance_id und region auf Ihre Version.
Die Ausgabe zeigt die ID Ihres neu erstellten geheimen Schlüssels an. Zum Beispiel:
e0246cea-d668-aba7-eef2-58ca11ad3707
Operator für externe geheime Schlüssel einrichten
Nachdem Sie nun ein Geheimnis für Ihre Anwendung haben, können Sie das External Secrets Operator-Tool für Ihren Cluster einrichten. Dieses Paket konfiguriert
die Verbindung zwischen Secrets Manager und Ihrem Cluster, indem es ExternalSecrets-Objekte erstellt, die in geheime Kubernetes-Schlüssel für Ihre Anwendung konvertiert werden.
External Secrets Operator ist ein Open-Source-Tool, das nicht von IBM verwaltet wird. Weitere Informationen zu diesem Tool oder zur Behebung von Problemen finden Sie in der Projektdokumentation.
Externen Operator für geheime Schlüssel für Ihren Cluster konfigurieren
Kubernetes
Fügen Sie zuerst external-secrets-Ressourcen zu Ihrem Cluster hinzu, indem Sie das offizielle Helm-Chart installieren. Weitere Installationsoptionen finden Sie in der Einführung.
-
Führen Sie den folgenden Befehl aus, um das Helm-Repository des Operators für externe geheime Schlüssel zu installieren:
helm repo add external-secrets https://charts.external-secrets.io -
Konfigurieren Sie die Authentifizierung zwischen dem Operator für externe geheime Schlüssel und Secrets Manager.
Wenn Sie eine Service-ID für die Authentifizierung verwenden:
kubectl -n default create secret generic secret-api-key --from-literal=apikey=$IBM_CLOUD_API_KEY helm install external-secrets external-secrets/external-secrets -n external-secrets --create-namespace --set installCRDs=trueWenn Sie ein vertrauenswürdiges Profil für die Authentifizierung verwenden:
echo ' installCRDs: true extraVolumes: - name: sa-token projected: defaultMode: 420 sources: - serviceAccountToken: path: sa-token expirationSeconds: 3600 audience: iam extraVolumeMounts: - mountPath: /var/run/secrets/tokens name: sa-token webhook: extraVolumes: - name: sa-token projected: defaultMode: 420 sources: - serviceAccountToken: path: sa-token expirationSeconds: 3600 audience: iam extraVolumeMounts: - mountPath: /var/run/secrets/tokens name: sa-token' >values.yml helm install external-secrets external-secrets/external-secrets -n external-secrets --create-namespace -f values.yml
OpenShift
-
Installieren Sie den Operator für externe geheime Schlüssel, indem Sie die folgenden Ressourcen erstellen:
echo ' apiVersion: v1 kind: Namespace metadata: name: external-secrets-operator --- apiVersion: operators.coreos.com/v1 kind: OperatorGroup metadata: name: external-secrets-operator namespace: external-secrets-operator spec: targetNamespaces: - external-secrets-operator --- apiVersion: operators.coreos.com/v1alpha1 kind: Subscription metadata: name: external-secrets-operator namespace: external-secrets-operator spec: channel: stable installPlanApproval: Automatic name: external-secrets-operator source: community-operators sourceNamespace: openshift-marketplace ' | oc create -f- -
Konfigurieren Sie die Authentifizierung zwischen dem Operator für externe geheime Schlüssel und Secrets Manager.
Wenn Sie eine Service-ID für die Authentifizierung verwenden:
echo " apiVersion: operator.external-secrets.io/v1alpha1 kind: OperatorConfig metadata: name: cluster namespace: external-secrets-operator spec: {} --- apiVersion: v1 kind: Secret metadata: name: secret-api-key namespace: default type: Opaque stringData: apikey: $IBM_CLOUD_API_KEY " | oc create -f-Wenn Sie ein vertrauenswürdiges Profil für die Authentifizierung verwenden:
echo ' apiVersion: operator.external-secrets.io/v1alpha1 kind: OperatorConfig metadata: name: cluster namespace: external-secrets-operator spec: extraVolumeMounts: - mountPath: /var/run/secrets/tokens name: sa-token extraVolumes: - name: sa-token projected: defaultMode: 420 sources: - serviceAccountToken: audience: iam expirationSeconds: 3600 path: sa-token webhook: extraVolumeMounts: - mountPath: /var/run/secrets/tokens name: sa-token extraVolumes: - name: sa-token projected: defaultMode: 420 sources: - serviceAccountToken: audience: iam expirationSeconds: 3600 path: sa-token ' | oc create -f-
App-Konfiguration aktualisieren
Nach der Installation von External Secrets Operator in Ihrem Cluster können Sie Secrets Manager als Back-End für geheime Schlüssel für Ihre Anwendung definieren. Beginnen Sie mit der Erstellung einer Konfigurationsdatei, die sich auf den geheimen Schlüssel in Secrets Manager bezieht, den Sie verwenden möchten.
-
Erstellen Sie im Stammverzeichnis Ihrer Anwendung eine Datei
external-secrets-example.yml.touch external-secrets-example.yml -
Ändern Sie die Datei so, dass sie Informationen zu dem geheimen Schlüssel enthält, den Sie von Ihrer Secrets Manager-Instanz abrufen möchten.
apiVersion: external-secrets.io/v1beta1 kind: SecretStore metadata: name: ibmcloud-secrets-manager-example spec: provider: ibm: serviceUrl: <endpoint_url> auth: secretRef: secretApiKeySecretRef: name: secret-api-key key: apikey --- apiVersion: external-secrets.io/v1beta1 kind: ExternalSecret metadata: name: ibmcloud-secrets-manager-example spec: secretStoreRef: name: ibmcloud-secrets-manager-example kind: SecretStore target: name: ibmcloud-secrets-manager-example data: - secretKey: username remoteRef: property: username key: username_password/<SECRET_ID> - secretKey: password remoteRef: property: password key: username_password/<SECRET_ID>Es gibt zwei Modi, nach denen Sie arbeiten können: ID des geheimen Schlüssels oder Name des geheimen Schlüssels. Bei Auswahl des Namens des geheimen Schlüssels ändert sich das Format von
secret_type/secret_idinsecret_group/secret_type/secret_name.Ersetzen Sie
<endpoint_url>durch die Secrets Manager Endpunkt-URL, die Sie abgerufen haben früher. Ersetzen Sie<SECRET_ID>durch die eindeutige ID des geheimen Schlüssels, den Sie im vorherigen Schritt erstellt haben.Wenn Sie ein vertrauenswürdiges Profil für die Authentifizierung verwenden, ersetzen Sie den Block
authdurch das folgende Snippet.auth: containerAuth: profile: "External Secrets" iamEndpoint: https://iam.cloud.ibm.com tokenLocation: /var/run/secrets/tokens/sa-token -
Wenden Sie die Konfiguration auf Ihren Cluster an.
kubectl apply -f external-secrets-example.yml -
Überprüfen Sie, ob der Operator für externe geheime Schlüssel den geheimen Schlüssel abrufen kann, der in Ihrer Secrets Manager -Instanz gespeichert ist.
kubectl get secret ibmcloud-secrets-manager-example -o json | jq '.data | map_values(@base64d)'Beispielausgabe:
{ "password": "cloudy-rainy-coffee-book", "username": "user123" }Erfolgreich! Sie können jetzt die Daten des geheimen Schlüssels abrufen, die in Ihrer Secrets Manager-Instanz gespeichert sind. Fahren Sie mit dem nächsten Schritt fort.
App für den Cluster implementieren
Schließlich können Sie eine Anwendung in Ihrem Cluster bereitstellen, die den geheimen Schlüssel Secrets Manager verwendet, den Sie in der Datei external-secret-example.yml definiert haben. Während der Laufzeit der Anwendung werden
die Daten des geheimen Schlüssels, die aus Secrets Manager abgerufen werden, in einen geheimen Kubernetes-Schlüssel konvertiert, der von Ihrem Cluster verwendet werden kann.
Suchen Sie nach Beispielen, wie Sie eine App implementieren können? Unter Kubernetes-native Apps in Clustern bereitstellen finden Sie weitere Informationen zur Bereitstellung einer einzelnen Instanz einer App.
(Optional) Ressourcen bereinigen
Wenn Sie die Ressourcen, die Sie in diesem Lernprogramm erstellt haben, nicht mehr benötigen, können Sie die folgenden Schritte ausführen, um sie aus Ihrem Konto zu entfernen.
-
Löschen Sie den Test Kubernetes-Cluster.
ibmcloud ks cluster rm --cluster my-test-cluster -
Löschen Sie Ihre Secrets Manager-Testinstanz.
ibmcloud resource service-instance-delete my-secrets-manager -
Löschen Sie Ihre Berechtigung.
Wenn Sie eine Service-ID verwenden.
ibmcloud iam service-id-delete $SERVICE_IDWenn Sie mit einem vertrauenswürdigen Profil arbeiten.
ibmcloud iam trusted-profile-delete 'External Secrets'
Hinweise von Interesse
Beachten Sie beim Erstellen Ihres YAML-Dokuments, dass jeder Schlüssel im Datenabschnitt regelmäßig per REST von der Instanz Secrets Manager abgefragt wird. Beachten Sie Folgendes:
- Standardmäßig ist das Abfrageintervall auf 1 Stunde eingestellt und wird bevorzugt. Sie können diesen Wert mithilfe von in
spec.refreshIntervalder Vorlage External Secrets ändern. Das Intervall kann in Einheiten vons,moderhausgedrückt werden. - Wenn Sie die YAML-Datei so festlegen, dass ein geheimer Secrets Manager-Schlüssel nach Name und nicht nach ID (
keyByName: true) abgerufen wird, wird von der ESO ein zusätzlicher Aufruf zum Abrufen der relevanten ID des geheimen Schlüssels abgesetzt. Weitere Informationen finden Sie im Dokumentation zu externen geheimen Schlüsseln.
Nächste Schritte
Gut gemacht! In diesem Lernprogramm haben Sie erfahren, wie Sie Secrets Manager einrichten, um geheime Schlüssel für Anwendungen sicher in Ihrem Cluster zu füllen. Nutzen Sie weitere Ressourcen, die Sie beim Einstieg in Secrets Manager unterstützen.
- Überprüfen Sie die Typen geheimer Schlüssel in Secrets Manager, die vom Operator für externe geheime Schlüssel unterstützt werden.
- Weitere Informationen zur Secrets Manager-API.
Um mit Vault Dedicated und Kubernetes Service arbeiten zu können, müssen Sie einen Cluster in Ihrem IBM Cloud-Konto erstellen und den Zugriff auf Ihre Vault Dedicated-Instanz konfigurieren.