Für pods den Zugriff auf AWS Dienste mit Dienstkonten konfigurieren - Amazon EKS

Helfen Sie 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.

Für pods den Zugriff auf AWS Dienste mit Dienstkonten konfigurieren

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

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-Servicekonto und eine EKS-Pod-Identity-Zuordnung, die das Servicekonto einer IAM-Rolle zuordnet. Die Rolle muss über eine zugeordnete IAM-Richtlinie verfügen, die die Berechtigungen enthält, die Ihre Pods zur Verwendung von AWS-Services haben sollen. Weitere Informationen zu Rollen, ihren Vorteilen sowie zu ihrer Erstellung und Konfiguration finden Sie unter Einem Kubernetes Dienstkonto eine IAM Rolle zuweisen.

  • Die neueste Version von, die auf Ihrem Gerät AWS CLI installiert und konfiguriert ist, oder AWS CloudShell. Sie können Ihre aktuelle Version mit aws --version | cut -d / -f2 | cut -d ' ' -f1 überprüfen. Paket-Manager wie yum, apt-get oder Homebrew für macOS sind oft mehrere Versionen hinter der neuesten Version von AWS CLI. Informationen zur Installation der neuesten Version finden Sie unter Installation, Aktualisierung und Deinstallation der 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. Die Version kann der Kubernetes-Version Ihres Clusters entsprechen oder eine Nebenversion älter oder neuer sein. Wenn Ihre Clusterversion beispielsweise 1.29 ist, können Sie kubectl-Version 1.28, 1.29, oder 1.30 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 Stellen Sie eine Connect kubectl zu einem EKS-Cluster her, indem Sie eine kubeconfig Datei erstellen.

Konfigurieren von Pod zur Verwendung eines Servicekontos
  1. Verwenden Sie den folgenden Befehl, um ein Bereitstellungsmanifest zu erstellen, mit dem Sie einen Pod bereitstellen können, um die Konfiguration 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 Ihren Pod vorhanden sind.

    1. Zeigen Sie die Pods an, die 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. Vergewissern Sie sich, dass der Pod ein Token-Datei-Mount für ein Servicekonto hat.

      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. Vergewissern Sie Pods sich, dass Sie AWS-Services mit den Berechtigungen interagieren können, die Sie in der Ihrer Rolle zugewiesenen IAM-Richtlinie zugewiesen haben.

    Anmerkung

    Wenn a AWS Anmeldeinformationen aus einer IAM-Rolle Pod verwendet, die einem Dienstkonto zugeordnet ist, Pod verwenden die AWS CLI oder andere SDKs in den entsprechenden Containern die Anmeldeinformationen, die von dieser Rolle bereitgestellt werden. Der Pod hat weiterhin Zugriff auf die der Amazon-EKS-Knoten-IAM-Rolle bereitgestellten Anmeldeinformationen, es sei denn, Sie beschränken den 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 nicht wie erwartet mit den Services interagieren können, führen Sie die folgenden Schritte aus, um sicherzustellen, dass alles richtig konfiguriert ist.

    1. Vergewissern Sie sich, dass Sie eine AWS SDK-Version Pods verwenden, die die Übernahme einer IAM-Rolle über eine EKS Pod Identity-Zuordnung unterstützt. Weitere Informationen finden Sie unter Verwenden Sie ein unterstütztes 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