Hilf mit, diese Seite 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.
Wenn Sie zu diesem Benutzerhandbuch beitragen möchten, wählen Sie den GitHub Link Diese Seite bearbeiten auf, der sich im rechten Bereich jeder Seite befindet.
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.
Pods für die Verwendung eines Kubernetes-Dienstkontos konfigurieren
Wenn ein Pod auf AWS Dienste zugreifen muss, müssen Sie ihn für die Verwendung eines Kubernetes-Dienstkontos konfigurieren. Das Dienstkonto muss einer AWS Identity and Access Management (IAM) -Rolle zugeordnet sein, die über Berechtigungen für den Zugriff auf die AWS Dienste verfügt.
-
Einen vorhandenen -Cluster. Falls Sie noch keinen haben, können Sie ihn mithilfe einer der Anleitungen unter erstellen. Erste Schritte mit Amazon EKS
-
Ein vorhandener Anbieter für IAM OpenID Connect (OIDC) für Ihren Cluster. Informationen zum Feststellen, ob Sie bereits einen haben oder wie Sie einen erstellen können, finden Sie unter Erstellen Sie einen IAM-OIDC-Anbieter für Ihren Cluster.
-
Ein vorhandenes Kubernetes-Dienstkonto, das einer IAM-Rolle zugeordnet ist. Das Servicekonto muss mit dem Amazon-Ressourcennamen (ARN) der IAM-Rolle versehen sein. Der Rolle muss eine IAM-Richtlinie zugeordnet sein, die die Berechtigungen enthält, die Ihre Pods für die Nutzung von Diensten haben sollen. AWS Weitere Informationen zu Rollen, ihren Vorteilen sowie zu ihrer Erstellung und Konfiguration finden Sie unter Zuweisen von IAM-Rollen zu Kubernetes-Dienstkonten.
-
Version
2.12.3
oder höher oder Version1.27.160
oder höher der auf Ihrem Gerät installierten und konfigurierten AWS Befehlszeilenschnittstelle (AWS CLI) oder AWS CloudShell. Um Ihre aktuelle Version zu überprüfen, verwenden Sieaws --version | cut -d / -f2 | cut -d ' ' -f1
. Paketmanager wieyum
apt-get
, oder Homebrew für macOS liegen oft mehrere Versionen hinter der neuesten Version der AWS CLI. Informationen zur Installation der neuesten Version finden Sie unter Installation und Schnellkonfiguration mit aws configure im Benutzerhandbuch für die AWS Befehlszeilenschnittstelle. Die AWS CLI-Version, in der installiert ist, AWS CloudShell kann auch mehrere Versionen hinter der neuesten Version liegen. Informationen zur Aktualisierung finden Sie im AWS CloudShell Benutzerhandbuch unter AWS CLI in Ihrem Home-Verzeichnis installieren. -
Das
kubectl
-Befehlszeilen-Tool ist auf Ihrem Gerät oder in der AWS CloudShell installiert. Die Version kann mit der Kubernetes-Version Ihres Clusters identisch oder bis zu einer Nebenversion sein, die vor oder nach der Kubernetes-Version liegt. Wenn Ihre Clusterversion beispielsweise1.29
ist, können Siekubectl
-Version1.28
,1.29
, oder1.30
damit verwenden. Informationen zum Installieren oder Aktualisieren vonkubectl
finden Sie unter Einrichten kubectl und eksctl. -
Eine vorhandene
kubectl
config
-Datei, die Ihre Clusterkonfiguration enthält. Informationen zum Erstellen einerkubectl
config
-Datei finden Sie unter Connect kubectl mit einem EKS-Cluster, indem Sie eine kubeconfig-Datei erstellen.-
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
-
Stellen Sie das Manifest in Ihrem Cluster bereit.
kubectl apply -f my-deployment.yaml
-
Vergewissern Sie sich, dass die erforderlichen Umgebungsvariablen für Ihren Pod vorhanden sind.
-
Sehen Sie sich die Pods an, die im vorherigen Schritt mit der Bereitstellung bereitgestellt wurden.
kubectl get pods | grep my-app
Eine Beispielausgabe sieht wie folgt aus.
my-app-6f4dfff6cb-76cv9 1/1 Running 0 3m28s
-
Zeigen Sie den ARN der IAM-Rolle an, die der Pod verwendet.
kubectl describe pod my-app-6f4dfff6cb-76cv9 | grep AWS_ROLE_ARN:
Eine Beispielausgabe sieht wie folgt aus.
AWS_ROLE_ARN: arn:aws: iam::111122223333:role/my-role
Der Rollen-ARN muss mit dem Rollen-ARN übereinstimmen, mit dem Sie das vorhandene Servicekonto mit Anmerkungen versehen haben. Weitere Informationen zum Annotieren des Servicekontos finden Sie unter Zuweisen von IAM-Rollen zu Kubernetes-Dienstkonten.
-
Vergewissern Sie sich, dass der Pod über eine Web-Identity-Token-Datei-Mount verfügt.
kubectl describe pod my-app-6f4dfff6cb-76cv9 | grep AWS_WEB_IDENTITY_TOKEN_FILE:
Eine Beispielausgabe sieht wie folgt aus.
AWS_WEB_IDENTITY_TOKEN_FILE: /var/run/secrets/eks.amazonaws.com/serviceaccount/token
Der
kubelet
fordert das Token im Namen des Pods an und speichert es. Standardmäßig aktualisiert daskubelet
das Token, wenn es älter als 80 Prozent seiner gesamten TTL ist oder wenn das Token älter als 24 Stunden ist. Sie können die Ablaufdauer für jedes Konto mit Ausnahme des Standarddienstkontos mithilfe der Einstellungen in Ihrer Pod-Spezifikation ändern. Weitere Informationen finden Sie unter Service Account Token Volume Projectionin der Kubernetes-Dokumentation. Der Amazon EKS Pod Identity Webhook
auf dem Cluster sucht nach Pods, die ein Dienstkonto mit der folgenden Anmerkung verwenden: eks.amazonaws.com/role-arn: arn:aws: iam::111122223333:role/my-role
Der Webhook wendet die vorherigen Umgebungsvariablen auf diese Pods an. Ihr Cluster muss den Webhook nicht verwenden, um die Umgebungsvariablen und Token-Datei-Mounts zu konfigurieren. Sie können Pods manuell so konfigurieren, dass sie diese Umgebungsvariablen haben. Die unterstützten Versionen des AWS SDK suchen zuerst im Credential Chain Provider nach diesen Umgebungsvariablen. Die Rollenanmeldedaten werden für Pods verwendet, die diese Kriterien erfüllen.
-
-
Vergewissern Sie sich, dass Ihre Pods mithilfe der Berechtigungen, die Sie in der IAM-Richtlinie für Ihre Rolle zugewiesen haben, mit den AWS Diensten interagieren können.
Anmerkung
Wenn ein Pod AWS Anmeldeinformationen von einer IAM-Rolle verwendet, die mit einem Dienstkonto verknüpft ist, verwendet die AWS CLI oder andere SDKs in den Containern für diesen Pod die Anmeldeinformationen, die von dieser Rolle bereitgestellt werden. Wenn Sie den Zugriff auf die Anmeldeinformationen, die für die IAM-Rolle des Amazon EKS-Knotens bereitgestellt werden, nicht einschränken, hat der Pod weiterhin 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 Diensten interagieren können, führen Sie die folgenden Schritte durch, um sicherzustellen, dass alles ordnungsgemäß konfiguriert ist.
-
Vergewissern Sie sich, dass Ihre Pods eine AWS SDK-Version verwenden, die die Übernahme einer IAM-Rolle über eine OpenID Connect-Webidentitätstokendatei unterstützt. Weitere Informationen finden Sie unter Verwenden Sie IRSA mit dem SDK AWS.
-
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
-
Wenn Ihre Pods immer noch nicht auf Dienste zugreifen können, überprüfen Sie die unter Zuweisen von IAM-Rollen zu Kubernetes-Dienstkonten beschriebenen Schritte, um sicherzustellen, dass Ihre Rolle und Ihr Dienstkonto ordnungsgemäß konfiguriert sind.
-
-