Den AWS Security Token Service Endpunkt für ein Dienstkonto 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.

Den AWS Security Token Service Endpunkt für ein Dienstkonto konfigurieren

Wenn Sie ein Kubernetes Dienstkonto mit verwendenIAM-Rollen für Servicekonten, können Sie den AWS Security Token Service Endpunkttyp konfigurieren, der vom Dienstkonto verwendet wird, falls Ihr Cluster und Ihre Plattformversion mit den in der folgenden Tabelle aufgeführten Versionen identisch oder höher sind. Wenn Ihre Kubernetes- oder Plattformversion älter als die in der Tabelle aufgeführten ist, können Ihre Servicekonten nur den globalen Endpunkt verwenden.

Kubernetes-Version Plattformversion Standardtyp für Endpunkt
1.30 eks.2 Regional
1.29 eks.1 Regional
1.28 eks.1 Regional
1.27 eks.1 Regional
1.26 eks.1 Regional
1.25 eks.1 Regional
1.24 eks.2 Regional
1.23 eks.1 Regional

AWS empfiehlt die Verwendung der regionalen AWS STS Endpunkte anstelle des globalen Endpunkts. Dies reduziert die Latenz, bietet integrierte Redundanz und erhöht die Gültigkeit der Sitzungstoken. Der AWS Security Token Service muss dort aktiv sein AWS-Region , wo der ausgeführt Pod wird. Darüber hinaus muss Ihre Anwendung über eine integrierte Redundanz für den AWS-Region Fall eines Ausfalls des Dienstes im AWS-Region verfügen. Weitere Informationen finden Sie unter Managing AWS STS in an AWS-Region im IAM-Benutzerhandbuch.

Voraussetzungen
Konfigurieren Sie den von Ihrem Kubernetes-Servicekonto verwendeten Endpunkttyp wie folgt

Die folgenden Beispiele verwenden alle das aws-node-Kubernetes-Servicekonto, das vom Amazon-VPC-CNI-Plugin verwendet wird. Sie können die example values durch eigene Servicekonten, Pods, Namespaces und anderen Ressourcen ersetzen.

  1. Wählen Sie einen Pod aus, der ein Servicekonto verwendet, für das Sie den Endpunkt ändern möchten. Ermitteln Sie, in welchem AWS-Region das Pod ausgeführt wird. Ersetzen Sie aws-node-6mfgv mit Ihrem Pod-Namen und kube-system mit Ihrem Pod-Namespace.

    kubectl describe pod aws-node-6mfgv -n kube-system |grep Node:

    Eine Beispielausgabe sieht wie folgt aus.

    ip-192-168-79-166.us-west-2/192.168.79.166

    AWS-Region

  2. Ermitteln Sie den Endpunkt-Typ, den das Pod's-Servicekonto verwendet.

    kubectl describe pod aws-node-6mfgv -n kube-system |grep AWS_STS_REGIONAL_ENDPOINTS

    Eine Beispielausgabe sieht wie folgt aus.

    AWS_STS_REGIONAL_ENDPOINTS: regional

    Wenn der aktuelle Endpunkt global ist, dann wird global in der Ausgabe zurückgegeben. Wenn keine Ausgabe zurückgegeben wird, wird der Standard-Endpunkttyp verwendet und wurde nicht überschrieben.

  3. Wenn Ihre Cluster- oder Plattformversion dieselbe oder höher ist als die in der Tabelle aufgeführten, können Sie den von Ihrem Servicekonto verwendeten Endpunkttyp mit einem der folgenden Befehle vom Standardtyp in einen anderen Typ ändern. Ersetzen Sie aws-node mit dem Namen Ihres Servicekontos, kube-system mit dem Namespace Ihres vorhandenen -Servicekontos.

    • Wenn Ihr Standard- oder aktueller Endpunkttyp global ist und Sie ihn in regional ändern möchten:

      kubectl annotate serviceaccount -n kube-system aws-node eks.amazonaws.com/sts-regional-endpoints=true

      Wenn Sie IAM-Rollen für Servicekonten verwenden, um vorsignierte S3-URLs in Ihrer Anwendung zu generieren, die in Containern von Pods ausgeführt wird, ähnelt das Format der URL für regionale Endpunkte dem folgenden Beispiel:

      https://bucket.s3.us-west-2.amazonaws.com/path?...&X-Amz-Credential=your-access-key-id/date/us-west-2/s3/aws4_request&...
    • Wenn Ihr Standard- oder aktueller Endpunkttyp regional ist und Sie ihn in global ändern möchten:

      kubectl annotate serviceaccount -n kube-system aws-node eks.amazonaws.com/sts-regional-endpoints=false

      Wenn Ihre Anwendung explizit Anfragen an AWS STS globale Endpunkte sendet und Sie das Standardverhalten der Verwendung regionaler Endpunkte in Amazon EKS-Clustern nicht außer Kraft setzen, schlagen Anfragen mit einem Fehler fehl. Weitere Informationen finden Sie unter Pod-Container erhalten folgenden Fehler: An error occurred (SignatureDoesNotMatch) when calling the GetCallerIdentity operation: Credential should be scoped to a valid region.

      Wenn Sie IAM-Rollen für Servicekonten verwenden, um vorsignierte S3-URLs in Ihrer Anwendung zu generieren, die in Containern von Pods ausgeführt wird, ähnelt das Format der URL für globale Endpunkte dem folgenden Beispiel:

      https://bucket.s3.amazonaws.com/path?...&X-Amz-Credential=your-access-key-id/date/us-west-2/s3/aws4_request&...

    Wenn Ihre Automatisierung die vorsignierte URL in einem bestimmten Format erwartet, oder wenn Ihre Anwendung oder Downstream-Abhängigkeiten, die vorsignierte URLs verwenden, Erwartungen an das Ziel stellen, nehmen Sie die AWS-Region erforderlichen Änderungen vor, um den entsprechenden Endpunkt zu verwenden. AWS STS

  4. Löschen Sie alle vorhandenen Pods, die dem Servicekonto zugeordnet sind, und erstellen Sie sie neu, um die Umgebungsvariablen für Anmeldeinformationen anzuwenden. Der mutierende Webhook wendet sie nicht auf Pods an, die bereits ausgeführt werden. Sie können Pods, kube-system und -l k8s-app=aws-node mit den Informationen für die Pods ersetzen, für die Sie Ihre Anmerkung festlegen.

    kubectl delete Pods -n kube-system -l k8s-app=aws-node
  5. Bestätigen Sie, dass alle Pods neu gestartet wurden.

    kubectl get Pods -n kube-system -l k8s-app=aws-node
  6. Zeigen Sie die Umgebungsvariablen für einen der Pods an. Stellen Sie sicher, dass der AWS_STS_REGIONAL_ENDPOINTS-Wert der ist, den Sie im vorherigen Schritt festgelegt haben.

    kubectl describe pod aws-node-kzbtr -n kube-system |grep AWS_STS_REGIONAL_ENDPOINTS

    Eine Beispielausgabe sieht wie folgt aus.

    AWS_STS_REGIONAL_ENDPOINTS=regional