Verwenden Sie AWS Secrets and Configuration Provider CSI mit IAM Roles for Service Accounts (IRSA) - AWS Systems Manager

AWS Systems ManagerChange Managersteht neuen Kunden nicht mehr offen. Bestandskunden können den Service weiterhin wie gewohnt nutzen. Weitere Informationen finden Sie unter Änderung der AWS Systems ManagerChange Manager Verfügbarkeit.

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 and Configuration Provider CSI mit IAM Roles for Service Accounts (IRSA)

Voraussetzungen

  • Amazon-EKS-Cluster (Version 1.17 oder höher)

  • Zugriff auf die AWS CLI und einen Amazon-EKS-Cluster über kubectl

Einrichten der Zugriffssteuerung

ASCP ruft die Amazon-EKS-Pod-Identität ab und tauscht sie gegen eine IAM-Rolle. Sie legen in einer IAM-Richtlinie Berechtigungen für diese IAM-Rolle fest. Wenn ASCP die IAM-Rolle übernimmt, erhält der Service Zugriff auf die von Ihnen autorisierten Parameter. Andere Container können nur auf die Parameter zugreifen, wenn Sie diese auch der IAM-Rolle zuordnen.

Gewähren Sie Ihrem Amazon-EKS-Pod wie folgt Zugriff auf Parameter in Parameter Store:
  1. Erstellen Sie eine Berechtigungsrichtlinie, die den Parametern, auf die der Pod zugreifen muss, die Berechtigungen ssm:GetParameters und ssm:DescribeParameters gewährt.

  2. Erstellen Sie einen IAM OpenID Connect (OIDC)-Anbieter für den Cluster, wenn Sie noch keinen haben. Weitere Informationen finden Sie unter Erstellen eines IAM-OIDC-Anbieters für Ihren Cluster im Benutzerhandbuch für Amazon EKS.

  3. Erstellen Sie eine IAM-Rolle für das Servicekonto und fügen Sie die Richtlinie an. Weitere Informationen finden Sie unter Erstellen einer IAM-Rolle für ein Servicekonto im Benutzerhandbuch für Amazon EKS.

  4. Wenn Sie einen privaten Amazon-EKS-Cluster verwenden, stellen Sie sicher, dass die VPC, in der sich der Cluster befindet, über einen AWS STS-Endpunkt verfügt. Weitere Informationen zum Erstellen eines Endpunktes finden Sie unter Schnittstellen-VPC-Endpunkte im Benutzerhandbuch für AWS Identity and Access Management.

Identifizieren der Parameter, die gemountet werden sollen

Um zu bestimmen, welche Parameter ASCP in Amazon EKS als Dateien im Dateisystem mountet, erstellen Sie eine SecretProviderClass-YAML-Datei. Die SecretProviderClass listet die zu mountenden Parameter und den Dateinamen auf, unter dem sie gemountet werden sollen. SecretProviderClass muss sich im gleichen Namespace wie der Amazon-EKS-Pod befinden, auf den verwiesen wird.

Mounten der Parameter als Dateien

In der folgenden Anleitung wird gezeigt, wie Sie Parameter mithilfe der YAML-Beispieldateien ExampleSecretProviderClass.yaml und ExampleDeployment.yaml als Dateien mounten.

Mounten Sie Parameter in Amazon EKS wie folgt:
  1. Wenden Sie die SecretProviderClass auf den Pod an:

    kubectl apply -f ExampleSecretProviderClass.yaml
  2. Stellen Sie den Pod bereit:

    kubectl apply -f ExampleDeployment.yaml
  3. ASCP mountet die Dateien.

Fehlerbehebung

Sie können die meisten Fehler anzeigen, indem Sie die Pod-Bereitstellung beschreiben.

Fehlermeldungen für Ihren Container anzeigen
  1. Rufen Sie mit dem folgenden Befehl eine Liste der Pod-Namen ab. Wenn Sie nicht den Standard-Namespace verwenden, verwenden Sie -n name-space.

    kubectl get pods
  2. Um den Pod zu beschreiben, geben Sie im folgenden Befehl für pod-id die Pod-ID aus den Pods an, die Sie im vorherigen Schritt gefunden haben. Wenn Sie nicht den Standard-Namespace verwenden, verwenden Sie -n nameSpace.

    kubectl describe pod/pod-id
Fehler für den ASCP anzeigen
  • Um weitere Informationen in den Anbieterprotokollen zu finden, verwenden Sie im folgenden Befehl fürpod-id die ID des Pods csi-secrets-store-provider-aws.

    kubectl -n kube-system get pods kubectl -n kube-system logs Pod/pod-id
  • Überprüfen Sie, ob die SecretProviderClass-CRD installiert wurde:
    kubectl get crd secretproviderclasses.secrets-store.csi.x-k8s.io

    Dieser Befehl muss Informationen zur benutzerdefinierten Ressourcendefinition von SecretProviderClass zurückgeben.

  • Stellen Sie sicher, dass das SecretProviderClass-Objekt erstellt wurde.
    kubectl get secretproviderclass SecretProviderClassName -o yaml