Verwenden Sie AWS Secrets and Configuration Provider CSI mit IAM-Rollen für Dienstkonten (IRSA) - AWS Systems Manager

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-Rollen für Dienstkonten (IRSA)

Voraussetzungen

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

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

Einrichten der Zugriffssteuerung

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

So gewähren Sie Ihrem Amazon EKS Pod Zugriff auf Parameter in Parameter Store
  1. Erstellen Sie eine Berechtigungsrichtlinie, die den Parametern, auf die der Pod zugreifen muss, Berechtigungen ssm:DescribeParameters erteilt. ssm:GetParameters

  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 Amazon EKS-Benutzerhandbuch.

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

  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. Informationen zum Erstellen eines Endpunkts finden Sie unter Interface VPC Endpoints im AWS Identity and Access Management Benutzerhandbuch.

Identifizieren Sie, welche Parameter bereitgestellt werden sollen

Um zu bestimmen, welche Parameter das ASCP in Amazon EKS als Dateien im Dateisystem einhängt, erstellen Sie eine SecretProviderClass YAML-Datei. Die SecretProviderClass listet die Parameter auf, die gemountet werden sollen, und den Dateinamen, unter dem sie gemountet werden sollen. Der SecretProviderClass muss sich im selben Namespace befinden wie der Amazon EKS-Pod, auf den er verweist.

Hängen Sie die Parameter als Dateien ein

Die folgenden Anweisungen zeigen, wie Parameter mithilfe der YAML-Beispieldateien .yaml und ExampleSecretProviderClass.yaml als Dateien gemountet werden. ExampleDeployment

So hängen Sie Parameter in Amazon EKS ein
  1. Wenden Sie das SecretProviderClass auf den Pod an:

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

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

Fehlerbehebung

Sie können sich die meisten Fehler ansehen, 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, pod-id verwenden Sie im folgenden Befehl 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/pod-id
Fehler für den ASCP anzeigen
  • Um weitere Informationen in den Anbieterprotokollen zu finden, pod-id verwenden Sie im folgenden Befehl die ID des Pods csi-secrets-store-provider-aws.

    kubectl -n kube-system get pods kubectl -n kube-system logs Pod/pod-id
  • Stellen Sie sicher, dass die SecretProviderClass CRD installiert ist:
    kubectl get crd secretproviderclasses.secrets-store.csi.x-k8s.io

    Dieser Befehl sollte Informationen über die SecretProviderClass benutzerdefinierte Ressourcendefinition zurückgeben.

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