Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Verwenden Sie AWS Secrets Manager Geheimnisse in Amazon Elastic Kubernetes Service
Um Geheimnisse aus Secrets Manager als in EKSAmazon-Pods gemountete Dateien anzuzeigen, können Sie den AWS Secrets and Configuration Provider (ASCP) für den Kubernetes Secrets Store CSI
Wenn Sie einen privaten EKS Amazon-Cluster verwenden, stellen Sie sicher, VPC dass der Cluster, in dem sich der Cluster befindet, über einen Secrets Manager Manager-Endpunkt verfügt. Der Secrets Store CSI Driver verwendet den Endpunkt, um Secrets Manager aufzurufen. Hinweise zum Erstellen eines Endpunkts in einem VPC finden Sie unterVPCEndpunkt.
Wenn Sie die automatische Rotation von Secrets Manager für Ihre Secrets Manager verwenden, können Sie auch die Funktion zum Abgleich der Rotation von Secrets Store CSI Driver verwenden, um sicherzustellen, dass Sie das neueste Geheimnis von Secrets Manager abrufen. Weitere Informationen finden Sie unter Automatische Rotation bereitgestellter Inhalte und synchronisierter Kubernetes Secrets
Themen
Schritt 1: Einrichten der Zugriffssteuerung
Der ASCP ruft die EKS Amazon-Pod-Identität ab und tauscht sie gegen eine IAM Rolle ein. Sie legen Berechtigungen in einer IAM Richtlinie für diese IAM Rolle fest. Wenn der die IAM Rolle ASCP übernimmt, erhält er Zugriff auf die von Ihnen autorisierten Geheimnisse. Andere Container können nicht auf die Geheimnisse zugreifen, es sei denn, Sie verknüpfen sie ebenfalls mit der IAM Rolle.
Wenn Aufrufe von Kubernetes ASCP zum Nachschlagen der Region und der IAM Rolle, die dem Pod zugeordnet sind, von Kubernetes gedrosselt werden, können Sie die Drosselungsquoten wie in Schritt 2 gezeigt wie in Schritt 2 gezeigt helm install
ändern.
So gewähren Sie Ihrem EKS Amazon-Pod Zugriff auf Secrets Manager
-
Erstellen Sie eine Berechtigungsrichtlinie, die Zugriff auf die Geheimnisse gewährt
secretsmanager:GetSecretValue
, auf die der Pod zugreifen muss.secretsmanager:DescribeSecret
Eine Beispielrichtlinie finden Sie unter Beispiel: Erlaubnis, einzelne Geheimnisse zu lesen und zu beschreiben. -
Erstellen Sie einen IAM OpenID Connect (OIDC) -Anbieter für den Cluster, falls Sie noch keinen haben. Weitere Informationen finden Sie unter Einen IAM OIDC Anbieter für Ihren Cluster erstellen im EKSAmazon-Benutzerhandbuch.
-
Erstellen Sie eine IAMRolle für ein Servicekonto und fügen Sie die Richtlinie hinzu. Weitere Informationen finden Sie unter Eine IAM Rolle für ein Servicekonto erstellen im EKSAmazon-Benutzerhandbuch.
-
Wenn Sie einen privaten EKS Amazon-Cluster verwenden, stellen Sie sicher, VPC dass der Cluster, in dem sich der Cluster befindet, einen AWS STS Endpunkt hat. Informationen zum Erstellen eines Endpunkts finden Sie unter VPCInterface-Endpoints im AWS Identity and Access Management Benutzerhandbuch.
Schritt 2: Installieren und konfigurieren Sie ASCP
Das ASCP ist GitHub im secrets-store-csi-provider-aws-Repository verfügbar
Während der Installation können Sie den so konfigurieren, ASCP dass er einen FIPS Endpunkt verwendet. Eine Liste der Endpunkte finden Sie unter AWS Secrets Manager Endpunkte.
Um das ASCP mit Helm zu installieren
Um sicherzustellen, dass das Repo auf die neuesten Charts verweist, verwenden Sie
helm repo update.
-
Fügen Sie das Secrets Store CSI Driver-Diagramm hinzu.
helm repo add secrets-store-csi-driver https://kubernetes-sigs.github.io/secrets-store-csi-driver/charts
-
Installieren Sie das Diagramm. Um die Drosselung zu konfigurieren, fügen Sie das folgende Kennzeichen hinzu:
--set-json 'k8sThrottlingParams={"qps": "
<number of queries per second>
", "burst": "<number of queries per second>
"}'helm install -n kube-system csi-secrets-store secrets-store-csi-driver/secrets-store-csi-driver
-
Fügen Sie das ASCP Diagramm hinzu.
helm repo add aws-secrets-manager https://aws.github.io/secrets-store-csi-driver-provider-aws
-
Installieren Sie das Diagramm. Um einen FIPS Endpunkt zu verwenden, fügen Sie das folgende Flag hinzu:
--set useFipsEndpoint=true
helm install -n kube-system secrets-provider-aws aws-secrets-manager/secrets-store-csi-driver-provider-aws
Zur Installation mit dem YAML im Repo
Verwenden Sie die folgenden Befehle.
helm repo add secrets-store-csi-driver https://kubernetes-sigs.github.io/secrets-store-csi-driver/charts helm install -n kube-system csi-secrets-store secrets-store-csi-driver/secrets-store-csi-driver kubectl apply -f https://raw.githubusercontent.com/aws/secrets-store-csi-driver-provider-aws/main/deployment/aws-provider-installer.yaml
Schritt 3: Identifizieren Sie, welche Secrets bereitgestellt werden sollen
Um festzustellen, welche ASCP Geheimnisse in Amazon EKS als Dateien im Dateisystem bereitgestellt werden, erstellen Sie eine SecretProviderClass YAML Datei. Die SecretProviderClass
listet die Geheimnisse auf, die gemountet werden sollen, und den Dateinamen, unter dem sie gemountet werden sollen. Der SecretProviderClass
muss sich im selben Namespace befinden wie der EKS Amazon-Pod, auf den er verweist.
Die folgenden Beispiele zeigen, wie Sie die Secrets beschreibenSecretProviderClass
, die Sie mounten möchten, und wie die im EKS Amazon-Pod gemounteten Dateien benannt werden sollen.
Beispiele:
Beispiel: Hängen Sie Geheimnisse nach Namen ein oder ARN
Das folgende Beispiel zeigt eineSecretProviderClass
, die drei Dateien in Amazon EKS mountet:
Ein mit full ARN spezifiziertes Geheimnis.
Ein durch den Namen spezifiziertes Secret.
Eine bestimmte Version eines Secrets.
apiVersion: secrets-store.csi.x-k8s.io/v1 kind: SecretProviderClass metadata: name: aws-secrets spec: provider: aws parameters: objects: | - objectName: "arn:aws:secretsmanager:us-east-2:
111122223333
:secret:MySecret2-d4e5f6" - objectName: "MySecret3" objectType: "secretsmanager" - objectName: "MySecret4" objectType: "secretsmanager" objectVersionLabel: "AWSCURRENT"
Beispiel: Schlüssel-/Wert-Paare aus einem Secret mounten
Das folgende Beispiel zeigt eineSecretProviderClass
, die drei Dateien in Amazon EKS mountet:
Ein mit full ARN spezifiziertes Geheimnis.
Das
username
-Schlüssel/Wert-Paar aus demselben Secret.Das
password
-Schlüssel/Wert-Paar aus demselben Secret.
apiVersion: secrets-store.csi.x-k8s.io/v1 kind: SecretProviderClass metadata: name: aws-secrets spec: provider: aws parameters: objects: | - objectName: "arn:aws:secretsmanager:us-east-2:
111122223333
:secret:MySecret-a1b2c3" jmesPath: - path: username objectAlias: dbusername - path: password objectAlias: dbpassword
Beispiel: Definieren einer Failover-Region für ein multiregionales Secret
Um die Verfügbarkeit bei Verbindungsausfällen oder bei Notfallwiederherstellungskonfigurationen zu gewährleisten, ASCP unterstützt der eine automatische Failover-Funktion zum Abrufen von Geheimnissen aus einer sekundären Region.
Das folgende Beispiel zeigt ein SecretProviderClass
, das ein Secret abruft, das in mehrere Regionen repliziert wird. In diesem Beispiel ASCP versucht der, das Geheimnis sowohl von als auch us-east-1
abzurufen. us-east-2
Wenn eine der Regionen einen 4xx-Fehler zurückgibt, z. B. aufgrund eines Authentifizierungsproblems, ASCP wird keines der Secrets bereitgestellt. Wenn das Geheimnis erfolgreich abgerufen wurdeus-east-1
, hängt es diesen ASCP geheimen Wert ein. Wenn das Geheimnis nicht erfolgreich abgerufen wurdeus-east-1
, es aber erfolgreich abgerufen wurdeus-east-2
, hängt er diesen ASCP geheimen Wert an.
apiVersion: secrets-store.csi.x-k8s.io/v1 kind: SecretProviderClass metadata: name: aws-secrets spec: provider: aws parameters: region: us-east-1 failoverRegion: us-east-2 objects: | - objectName: "MySecret"
Beispiel: Ein Failover-Secret zum Mounten auswählen
Das folgende Beispiel zeigt ein SecretProviderClass
, das angibt, welches Secret im Falle eines Failovers gemountet werden soll. Das Failover-Secret ist kein Replikat. In diesem Beispiel ASCP versucht der, die beiden von objectName
angegebenen Secrets abzurufen. Wenn einer von beiden einen 4xx-Fehler zurückgibt, z. B. aufgrund eines Authentifizierungsproblems, hängt ASCP er keines der Geheimnisse ein. Wenn das Geheimnis erfolgreich abgerufen wurdeus-east-1
, hängt es diesen ASCP geheimen Wert ein. Wenn das Geheimnis nicht erfolgreich abgerufen wurdeus-east-1
, es aber erfolgreich abgerufen wurdeus-east-2
, hängt er diesen ASCP geheimen Wert an. Die gemountete Datei in Amazon EKS hat einen NamenMyMountedSecret
.
apiVersion: secrets-store.csi.x-k8s.io/v1 kind: SecretProviderClass metadata: name: aws-secrets spec: provider: aws parameters: region: us-east-1 failoverRegion: us-east-2 objects: | - objectName: "arn:aws:secretsmanager:us-east-1:
111122223333
:secret:MySecret-a1b2c3" objectAlias: "MyMountedSecret" failoverObject: - objectName: "arn:aws:secretsmanager:us-east-2:111122223333
:secret:MyFailoverSecret-d4e5f6"
Schritt 4: Mounten Sie die Geheimnisse als Dateien im EKS Amazon-Pod
Die folgenden Anweisungen zeigen, wie Sie Geheimnisse mithilfe der Beispieldateien ExampleSecretProviderClass.yaml und ExampleDeployment .yaml
Um Geheimnisse in Amazon zu montieren EKS
-
Wenden Sie das mit
SecretProviderClass
dem Befehl auf den Pod ankubectl apply -f ExampleSecretProviderClass.yaml
. -
Stellen Sie Ihren Pod mit dem Befehl bereit
kubectl apply -f ExampleDeployment.yaml
. Der ASCP mountet die Dateien.
Fehlerbehebung
Sie können die meisten Fehler anzeigen, indem Sie die Pod-Bereitstellung beschreiben.
Fehlermeldungen für Ihren Container anzeigen
-
Erstellen Sie mit dem folgenden Befehl eine Liste der Pod-Namen. Wenn Sie nicht den Standard-Namespace verwenden, verwenden Sie
-n <NAMESPACE>
.kubectl get pods
-
Um den Pod im folgenden Befehl zu beschreiben, für
<PODID>
verwenden Sie die Pod-ID der Pods, die Sie im vorherigen Schritt gefunden haben. Wenn Sie nicht den Standard-Namespace verwenden, verwenden Sie-n <NAMESPACE>
.kubectl describe pod/
<PODID>
Um Fehler für das zu sehen ASCP
-
Um weitere Informationen in den Anbieterprotokollen zu finden, geben Sie den folgenden Befehl ein
<PODID>
verwenden Sie die ID des csi-secrets-store-provider-aws-Pods.kubectl -n kube-system get pods kubectl -n kube-system logs pod/
<PODID>