Konfiguration pods um mit AWS Dienstkonten auf Dienste zuzugreifen - Amazon EKS

Hilf mit, diese Seite zu verbessern

Möchten Sie zu diesem Benutzerhandbuch beitragen? Scrollen Sie zum Ende dieser Seite und wählen Sie Diese Seite bearbeiten am aus GitHub. Ihre Beiträge werden dazu beitragen, unser Benutzerhandbuch für alle zu verbessern.

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.

Konfiguration pods um mit AWS Dienstkonten auf Dienste zuzugreifen

Wenn ein Pod muss darauf zugreifen AWS-Services, dann müssen Sie es für die Verwendung eines konfigurieren Kubernetes Dienstkonto. Das Dienstkonto muss einer Rolle AWS Identity and Access Management (IAM) zugeordnet sein, die über Zugriffsberechtigungen für verfügt AWS-Services.

Voraussetzungen
  • Einen vorhandenen -Cluster. Wenn Sie keine haben, können Sie eine mit einer der Erste Schritte mit Amazon EKS-Hilfslinien erstellen.

  • Ein vorhandenes Kubernetes Dienstkonto und eine EKS Pod Identity-Zuordnung, die das Dienstkonto einer IAM Rolle zuordnet. Der Rolle muss eine IAM Richtlinie zugeordnet sein, die die Berechtigungen enthält, die Sie benötigen Pods verwenden zu müssen AWS-Services. Weitere Informationen zu Rollen, ihren Vorteilen sowie zu ihrer Erstellung und Konfiguration finden Sie unter Weisen Sie eine zu IAM Rolle einem Kubernetes Dienstkonto.

  • Die neueste Version der auf Ihrem Gerät AWS CLI installierten und konfigurierten Version oder AWS CloudShell. Sie können Ihre aktuelle Version mit aws --version | cut -d / -f2 | cut -d ' ' -f1 überprüfen. Paketmanager wieyum,apt-get, oder Homebrew for macOS liegen oft mehrere Versionen hinter der neuesten Version von AWS CLI. Informationen zur Installation der neuesten Version finden Sie unter Installation, Aktualisierung und Deinstallation von AWS CLI und Schnellkonfiguration mit aws configure im AWS Command Line Interface Benutzerhandbuch. Die in der installierte AWS CLI Version AWS CloudShell kann auch mehrere Versionen hinter der neuesten Version liegen. Informationen zur Aktualisierung finden Sie unter Installation AWS CLI in Ihrem Home-Verzeichnis im AWS CloudShell Benutzerhandbuch.

  • Das kubectl-Befehlszeilen-Tool ist auf Ihrem Gerät oder in der AWS CloudShell installiert. Bei der Version kann es sich um dieselbe oder nur um eine Nebenversion handeln, die früher oder später als die Kubernetes Version Ihres Clusters. Wenn Ihre Clusterversion beispielsweise 1.30 ist, können Sie kubectl-Version 1.29, 1.30, oder 1.31 damit verwenden. Informationen zum Installieren oder Aktualisieren von kubectl finden Sie unter Einrichten kubectl und eksctl.

  • Eine vorhandene kubectl config-Datei, die Ihre Clusterkonfiguration enthält. Informationen zum Erstellen einer kubectl config-Datei finden Sie unter Verbinden kubectl zu einem EKS Cluster durch Erstellen eines kubeconfig file.

Um einen zu konfigurieren Pod um ein Dienstkonto zu verwenden
  1. Verwenden Sie den folgenden Befehl, um ein Bereitstellungsmanifest zu erstellen, das Sie bereitstellen können Pod um die Konfiguration mit zu bestätigen. Ersetzen Sie example values durch Ihre eigenen Werte.

    cat >my-deployment.yaml <<EOF apiVersion: apps/v1 kind: Deployment metadata: name: my-app spec: selector: matchLabels: app: my-app template: metadata: labels: app: my-app spec: serviceAccountName: my-service-account containers: - name: my-app image: public.ecr.aws/nginx/nginx:X.XX EOF
  2. Stellen Sie das Manifest in Ihrem Cluster bereit.

    kubectl apply -f my-deployment.yaml
  3. Vergewissern Sie sich, dass die erforderlichen Umgebungsvariablen für Ihr Pod.

    1. Sehen Sie sich das an Pods die zusammen mit der Bereitstellung im vorherigen Schritt bereitgestellt wurden.

      kubectl get pods | grep my-app

      Eine Beispielausgabe sieht wie folgt aus.

      my-app-6f4dfff6cb-76cv9 1/1 Running 0 3m28s
    2. Bestätigen Sie, dass Pod hat einen Token-Datei-Mount für ein Dienstkonto.

      kubectl describe pod my-app-6f4dfff6cb-76cv9 | grep AWS_CONTAINER_AUTHORIZATION_TOKEN_FILE:

      Eine Beispielausgabe sieht wie folgt aus.

      AWS_CONTAINER_AUTHORIZATION_TOKEN_FILE: /var/run/secrets/pods.eks.amazonaws.com/serviceaccount/eks-pod-identity-token
  4. Bestätigen Sie, dass Ihr Pods kann AWS-Services mithilfe der Berechtigungen, die Sie in der mit Ihrer Rolle verknüpften IAM Richtlinie zugewiesen haben, mit ihnen interagieren.

    Anmerkung

    Wenn ein Pod verwendet AWS Anmeldeinformationen aus einer IAM Rolle, die einem Dienstkonto zugeordnet ist, AWS CLI oder einer anderen Rolle SDKs in den Containern dafür Pod verwendet die Anmeldeinformationen, die von dieser Rolle bereitgestellt werden. Wenn Sie den Zugriff auf die Anmeldeinformationen, die für die EKSIAMAmazon-Knotenrolle bereitgestellt werden, nicht einschränken, Pod hat immer noch Zugriff auf diese Anmeldeinformationen. Weitere Informationen finden Sie unter Beschränken Sie den Zugriff auf das Instance-Profil, das dem Worker-Knoten zugewiesen ist.

    Wenn Ihre Pods kann nicht wie erwartet mit den Diensten interagieren. Führen Sie die folgenden Schritte aus, um sicherzustellen, dass alles ordnungsgemäß konfiguriert ist.

    1. Bestätigen Sie, dass Ihr Pods Verwenden Sie eine AWS SDK Version, die die Übernahme einer IAM Rolle über eine EKS Pod Identity-Zuordnung unterstützt. Weitere Informationen finden Sie unter Verwenden Sie Pod Identity mit dem AWS SDK.

    2. Stellen Sie sicher, dass die Bereitstellung das Servicekonto verwendet.

      kubectl describe deployment my-app | grep "Service Account"

      Eine Beispielausgabe sieht wie folgt aus.

      Service Account: my-service-account