View a markdown version of this page

Authentifizierung bei Amazon EKS-Zugangseinträgen - AWS Batch

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.

Authentifizierung bei Amazon EKS-Zugangseinträgen

Amazon EKS unterstützt zwei Mechanismen, um einem IAM-Prinzipal die Erlaubnis zum Aufrufen der Kubernetes Cluster-API zu erteilen: die alte aws-auth ConfigMap und die neuere Zugriffs-Eingabe-API. Ein Zugriffseintrag gewährt Kubernetes API-Zugriff auf einen IAM-Prinzipal, ohne dass Sie einen bearbeiten müssen. ConfigMap AWS Batch kann sich über einen der beiden Mechanismen bei Ihrem Cluster authentifizieren.

Wenn Sie dies eksConfiguration.accessEntry.desiredState in ENABLED einer Rechenumgebung einstellen, AWS Batch können Sie den Zugriffseintrag für diese Rechenumgebung im Cluster verwalten. Sie müssen das nicht mehr manuell bearbeiten aws-auth ConfigMap.

Ob ein AWS Batch Zugriffseintrag bereitgestellt wird, hängt von Ihrer AWS Batch Rechenumgebung und Ihrer Amazon EKS-Cluster-Konfiguration ab. Details dazu finden Sie unter Interaktion mit dem AuthenticationMode des Clusters .

Werte für den Zugriff Entry.desiredState

Das desiredState Feld on EksAccessEntry deklariert den gewünschten Zugriffsstatus für die Rechenumgebung. Folgende sind gültige Werte:

ENABLED

AWS Batch erstellt einen AWS Batch verwalteten Zugriffseintrag auf dem Cluster für die Computerumgebung. AWS Batch erstellt nur dann einen AWS Batch-managed-Access-Eintrag, wenn alle Computerumgebungen im Cluster auf auf eingestellt desiredState sind ENABLED (weitere Informationen finden Sie unterWie AWS Batch gleicht DesiredState in allen Computerumgebungen ab).

DISABLED

AWS Batch löscht den Eintrag AWS Batch-managed Access für den Cluster. AWS Batch löscht einen AWS Batch-managed-Access-Eintrag nur, wenn alle Rechenumgebungen auf dem Cluster auf auf eingestellt desiredState sind DISABLED (weitere Informationen finden Sie unterWie AWS Batch gleicht DesiredState in allen Computerumgebungen ab). Der Zugriff auf den Cluster muss über den aws-auth ConfigMap konfiguriert werden.

INHERIT_FROM_CLUSTER

AWS Batch bezieht sich auf den aktuellen Zugriffseintrag status des Clusters. Auf einem Amazon EKS-Cluster, dessen Authentifizierungsmodus istAPI, wird ein Zugriffseintrag AWS Batch erstellt und verwaltet, da der Cluster aws-auth ConfigMap auf keinen zurückgreifen kann. Auf einem Cluster, dessen Authentifizierungsmodus CONFIG_MAP oder istAPI_AND_CONFIG_MAP, wird AWS Batch weder ein Zugriffseintrag hinzugefügt noch entfernt.

Die Rechenumgebung stellt außerdem ein schreibgeschütztes accessEntry.status Feld in Antworten zur Verfügung. DescribeComputeEnvironments ACTIVEbedeutet, dass auf dem Cluster ein Eintrag mit AWS Batch verwaltetem Zugriff für die Rechenumgebung vorhanden ist und Vorrang vor dem hat. aws-auth ConfigMap INACTIVEbedeutet, dass kein Eintrag für AWS Batch-managed Access vorhanden ist. Dies kann daran liegenDISABLED, dass desiredState sich die Computerumgebungen, die auf den Cluster abzielendesiredState, noch nicht einig sind oder dass der Eintrag noch nicht bereitgestellt wurde. Wenn jaINACTIVE, accessEntry.status verwendet Batch es aws-auth ConfigMap für den Clusterzugriff.

Anmerkung

Ein Zugriffseintrag wird gemeldet, ACTIVE sobald er im Cluster vorhanden ist, auch wenn die Zuordnung der Zugriffsrichtlinie, die ihn nutzbar macht, AWS Batch noch nicht abgeschlossen ist. Wenn sich der Status der Computerumgebung auf INVALID while accessEntry.status is ändertACTIVE, finden Sie weitere Informationen unterDie Einrichtung des Amazon EKS-Zugangseintrags ist unvollständig.

Anmerkung

Wenn Sie das accessEntry Feld weglassen, AWS Batch wird kein A desiredState für die Computerumgebung aufgezeichnet und DescribeComputeEnvironments auch keines zurückgegeben. Verhält sich zum Zweck der Bereitstellung des AWS Batch Zugriffseintrags wie bei. INHERIT_FROM_CLUSTER

Interaktion mit dem AuthenticationMode des Clusters

Wie AWS Batch sich ein bestimmtes Verhalten verhält, desiredState hängt vom Authentifizierungsmodus des Clusters ab. Die folgende Tabelle gilt sowohl für als CreateComputeEnvironment auchUpdateComputeEnvironment.

Cluster authenticationMode

Umgebung berechnen accessEntry.desiredState=ENABLED

Umgebung berechnen accessEntry.desiredState=DISABLED

Umgebung berechnen accessEntry.desiredState=INHERIT_FROM_CLUSTER

CONFIG_MAP

Access-Einträge sind auf dem Cluster nicht verfügbar, es werden also AWS Batch keine erstellt oder entfernt. AWS Batch zeichnet immer noch den von Ihnen angegebenen Wert auf. Nachdem Sie den Authentifizierungsmodus des Clusters geändert haben, wird dieser aufgezeichnete Wert bei Ihrem nächsten CreateComputeEnvironment oder UpdateComputeEnvironment angegebenen Anruf wirksamdesiredState.

API_AND_CONFIG_MAP

AWS Batch vergleicht die aufgezeichneten Werte in den Computerumgebungen, die den Cluster gemeinsam nutzen — sieheWie AWS Batch gleicht DesiredState in allen Computerumgebungen ab.

Der bestehende Zugriffsmodus wird beibehalten. AWS Batch fügt keinen Zugriffseintrag hinzu oder entfernt ihn.

API

Der Zugriffseintrag wird auf dem Cluster erstellt und verwaltet.

Die Anforderung wurde abgelehnt. Ein Cluster in diesem Modus unterstützt das nicht aws-auth ConfigMap, und die ConfigMap Methode kann nach der Clustererstellung nicht aktiviert werden, sodass die Rechenumgebung keine Möglichkeit zur Authentifizierung DISABLED hätte.

Der Zugriffseintrag wird auf dem Cluster erstellt und verwaltet. Wenn der Cluster nur den Wert API -only hat, entspricht das Vererben dem. ENABLED

Wie AWS Batch gleicht DesiredState in allen Computerumgebungen ab

Da ein einzelner Amazon EKS-Cluster mehrere AWS Batch Computerumgebungen unterstützen kann, handelt es sich bei der Zugriffskonfiguration eines Clusters um eine gemeinsam genutzte Ressource. AWS Batch gleicht daher die in diesen Computerumgebungen aufgezeichneten desiredState Werte ab oder vergleicht und löst sie auf.

Wenn es authenticationMode sich um den Cluster handeltAPI_AND_CONFIG_MAP, desiredState werden die für jede Rechenumgebung in demselben AWS Konto und derselben AWS Region, die auf den Cluster abzielen, aufgezeichneten Werte AWS Batch verglichen. AWS Batch verwendet diesen Vergleich, um zu ermitteln, ob der Zugriffseintrag für jede der angegebenen UpdateComputeEnvironment Operationen hinzugefügt CreateComputeEnvironment oder entfernt desiredState werden soll.

Jede Computerumgebung hat desiredState=ENABLED

AWS Batch erstellt den Zugriffseintrag auf dem Cluster.

Jede Computerumgebung hat desiredState=DISABLED

AWS Batch löscht den Zugriffseintrag aus dem Cluster, falls einer existiert.

Die aufgezeichneten desiredState Werte stimmen nicht alle überein

AWS Batch behält den bestehenden Zugriffsmodus bei. Der Zugriffseintrag wird weder hinzugefügt noch entfernt. Dies schließt jede Mischung ausENABLED, und ein DISABLEDINHERIT_FROM_CLUSTER, und es schließt auch jede Computerumgebung ein, für die keine desiredState Aufzeichnungen vorliegen.

Anmerkung

Um einen Cluster, dessen Authentifizierungsmodus API_AND_CONFIG_MAP von der Zugangsauthentifizierung ist, auf aws-auth ConfigMap die Zugangsauthentifizierung umzustellen, müssen Sie diese Einstellung in jeder AWS Batch Computerumgebung einrichten, die desiredState=ENABLED auf den Cluster abzielt. Um zurück zu wechseln, setzen Sie diese desiredState=DISABLED Option auf jedem einzelnen von ihnen ein.

Was AWS Batch erstellt auf Ihrem Cluster

AWS Batch erstellt einen Zugriffseintrag pro Cluster, der die oben genannten Bedingungen erfüllt, und ordnet dann diesem Zugriffseintrag die AWSBatchClusterPolicy Amazon EKS-Zugriffsrichtlinie zu. Der Zugriffseintrag gilt pro Cluster und nicht pro Rechenumgebung, sodass ihn alle AWS Batch Computerumgebungen, die auf denselben Cluster abzielen, gemeinsam nutzen.

Anmerkung

Durch das Löschen einer Rechenumgebung wird der Zugriffseintrag nicht entfernt, auch wenn es sich um die letzte AWS Batch Rechenumgebung im Cluster handelt. Um einen Eintrag mit AWS Batch verwaltetem Zugriff zu entfernen, rufen Sie UpdateComputeEnvironment with in jeder AWS Batch Computerumgebung desiredState=DISABLED auf, die auf den Cluster abzielt, bevor Sie sie löschen.

Ein Zugriffseintrag allein reicht nicht aus, um Jobs auf dem Cluster auszuführen. Die Kubernetes Berechtigungen und den Knotenzugriff, die Sie selbst konfigurieren müssen, finden Sie unterCluster-Konfiguration, die Sie weiterhin angeben müssen.

Erforderliche Berechtigungen

AWS Batch verwaltet den Zugriffseintrag mithilfe der Anmeldeinformationen der IAM-Identität, die den CreateComputeEnvironment UpdateComputeEnvironment OR-Vorgang aufruft. Diese Identität muss berechtigt sein, die folgenden Amazon EKS-Aktionen auszuführen:

  • eks:DescribeCluster

  • eks:DescribeAccessEntry

  • eks:CreateAccessEntry

  • eks:AssociateAccessPolicy

  • eks:DeleteAccessEntry

Konfigurieren Sie den Zugriffseintrag

Sie können den Zugriffseintrag in einer Computerumgebung über das eksConfiguration.accessEntry Feld der CreateComputeEnvironment oder UpdateComputeEnvironment API konfigurieren.

AWS CLI

Aktivieren Sie einen AWS Batch verwalteten Zugriffseintrag, wenn Sie eine Rechenumgebung erstellen

$ aws batch create-compute-environment \ --compute-environment-name my-eks-ce \ --type MANAGED \ --eks-configuration 'eksClusterArn=arn:aws:eks:us-east-1:123456789012:cluster/my-cluster,kubernetesNamespace=my-aws-batch-namespace,accessEntry={desiredState=ENABLED}' \ --compute-resources 'type=EC2,maxvCpus=128,subnets=subnet-a123456b,securityGroupIds=sg-a12b3456,instanceRole=arn:aws:iam::123456789012:instance-profile/my-node-instance-profile'

Aktivieren Sie einen Eintrag mit AWS Batch verwaltetem Zugriff in einer vorhandenen Computerumgebung

$ aws batch update-compute-environment \ --compute-environment my-eks-ce \ --eks-configuration 'accessEntry={desiredState=ENABLED}'

Überprüfen Sie den Status

$ aws batch describe-compute-environments \ --compute-environments my-eks-ce \ --query "computeEnvironments[0].eksConfiguration.accessEntry"

Die Antwort umfasst sowohl desiredState die von Ihnen angegebenen als auch die beobachtetenstatus:

{ "desiredState": "ENABLED", "status": "ACTIVE" }
Anmerkung

AWS Batch gibt accessEntry.status für alle Amazon EKS-Rechenumgebungen zurück und gibt desiredState nur zurück, wenn Sie es festgelegt haben. Eine Rechenumgebung, in der Sie nie status ausschließlich accessEntry Rückgabewerte angegeben haben.

Wenn Sie den Zugriffseintrag nicht mehr AWS Batch verwalten möchten, setzen Sie DISABLED stattdessen desiredState auf. Bevor Sie dies tun, überprüfen SieInteraktion mit dem AuthenticationMode des Clusters : DISABLED wird auf einem Cluster abgelehnt, dessen Authentifizierungsmodus istAPI, und auf einem Cluster, dessen Authentifizierungsmodus der Zugriffseintrag ist, wird API_AND_CONFIG_MAP der Zugriffseintrag erst entfernt, nachdem jede AWS Batch Rechenumgebung, die den Cluster als Ziel hat, auf festgelegt wurdeDISABLED.

API

Verwenden Sie das eksConfiguration.accessEntry Objekt in Ihrer CreateComputeEnvironment UpdateComputeEnvironment Anfrage.

Erstellen Sie eine Rechenumgebung mit einem AWS Batch-managed Access-Eintrag

Fügen Sie Folgendes accessEntry in den Anfragetext ein:

{ "computeEnvironmentName": "my-eks-ce", "type": "MANAGED", "state": "ENABLED", "eksConfiguration": { "eksClusterArn": "arn:aws:eks:us-east-1:123456789012:cluster/my-cluster", "kubernetesNamespace": "my-aws-batch-namespace", "accessEntry": { "desiredState": "ENABLED" } }, "computeResources": { "type": "EC2", "maxvCpus": 128, "subnets": ["subnet-a123456b"], "securityGroupIds": ["sg-a12b3456"], "instanceRole": "arn:aws:iam::123456789012:instance-profile/my-node-instance-profile" } }

Aktualisieren Sie den Zugriffseintrag in einer vorhandenen Computerumgebung

{ "computeEnvironment": "my-eks-ce", "eksConfiguration": { "accessEntry": { "desiredState": "ENABLED" } } }

Weitere Informationen finden Sie EksAccessEntry unter CreateComputeEnvironment und UpdateComputeEnvironment in der AWS Batch API-Referenz.

Cluster-Konfiguration, die Sie weiterhin angeben müssen

Ein Zugriffseintrag steuert nur, wie Sie sich bei Ihrem Cluster AWS Batch authentifizieren. Er gewährt nicht AWS Batch die Kubernetes Berechtigungen, die für die Ausführung Ihrer Jobs erforderlich sind, und er verhindert, dass die Instances, die AWS Batch gestartet werden, dem Cluster beitreten. Unabhängig davon, welchen Authentifizierungsmechanismus Sie verwenden, müssen Sie dennoch die beiden folgenden Optionen konfigurieren.

Wichtig

Sobald ein Eintrag AWS Batch für den verwalteten Zugriff für die AWS Batch service-verknüpfte Rolle auf einem Cluster (accessEntry.status=ACTIVE) erstellt wurde, hat er Vorrang vor der aws-auth ConfigMap Konfiguration für die Rolle. Die ConfigMap Einträge für die AWS Batch dienstverknüpfte Rolle werden nicht verwendet. Die AWS Batch Authentifizierung erfolgt stattdessen mithilfe des Zugriffseintrags. Um zur ConfigMap Authentifizierung zurückzukehren, setzen Sie diese Option in allen Computerumgebungen ein, die desiredState=DISABLED auf den Cluster abzielen. Dadurch wird der Eintrag AWS Batch-managed Access entfernt.

KubernetesBerechtigungen für den Namespace AWS Batch

AWS Batch benötigt Kubernetes Berechtigungen, um Pods in dem Namespace zu erstellen und zu verwalten, den Sie angeben. eksConfiguration.kubernetesNamespace Erstellen Sie den Namespace und konfigurieren Sie diese Berechtigungen dann je nach Ihrem Authentifizierungsansatz mit einer der folgenden Methoden:

  • Zugriffsrichtlinienzuordnung (bei Zugriffseingabe erforderlichstatus=ACTIVE) — Wenn Sie alle Computerumgebungen für einen Cluster aktivieren, AWS Batch wird ein Zugriffseintrag auf AWSBatchClusterPolicy Clusterebene erstellt. desiredState=ENABLED Anschließend müssen Sie den Namespace-Bereich zuordnen, um die Berechtigung zum Erstellen und Verwalten von Pods AWSBatchNamespacePolicy zu gewähren. AWS Batch

    Wenn der Zugriffseintrag erreicht iststatus=ACTIVE, verknüpfen Sie die Namespace-Richtlinie mithilfe von: AWS CLI

    $ aws eks associate-access-policy \ --cluster-name my-cluster \ --principal-arn arn:aws:iam::123456789012:role/aws-service-role/batch.amazonaws.com/AWSServiceRoleForBatch \ --policy-arn arn:aws:eks::aws:cluster-access-policy/AWSBatchNamespacePolicy \ --access-scope type=namespace,namespaces=my-aws-batch-namespace

    Ersetzen Sie my-aws-batch-namespace durch den Wert, den Sie in eksConfiguration.kubernetesNamespace angegeben haben.

    Wichtig

    Ohne die Richtlinienzuordnung mit Namespace-Gültigkeitsbereich bleiben Jobs im Status hängen. RUNNABLE Die Richtlinie auf Clusterebene allein gewährt keine Pod-Verwaltungsberechtigungen.

  • KubernetesRollen und Rollenbindungen (beim Zugriffseintragstatus=INACTIVE) — Wenn der Eintrag AWS Batch-managed access nicht aktiv ist, erstellen Sie die Kubernetes Rollen und Rollenbindungen, die diese Berechtigungen gewähren, wie unter beschrieben. Schritt 2: Bereiten Sie Ihren Amazon EKS-Cluster vor für AWS Batch Sie tun dies einmal für jeden Cluster.

    Anmerkung

    Wenn ein AWS Batch-managed Access-Eintrag aktiv ist (status=ACTIVE), werden die Kubernetes RBAC-Rollen umgangen. Sie müssen stattdessen die Zugriffsrichtlinien-Zuordnungsmethode verwenden.

AWS Batch erstellt diese Ressourcen nicht für Sie, und ein AWS Batch-managed Access-Eintrag ersetzt sie nicht. Wenn sie fehlen, kann die Rechenumgebung trotzdem dazu führen, dass Ihre Jobs nicht gestartet werdenVALID.

Cluster-Zugriff für die Node-Instance-Rolle

Instanzen, die AWS Batch gestartet werden, treten dem Cluster mithilfe des Instanzprofils bei, das Sie in angebencomputeResources.instanceRole. Diese Rolle benötigt ihren eigenen Zugriff auf den Cluster, der vom Eintrag AWS Batch-managed Access getrennt ist und AWS Batch nicht konfiguriert werden kann.

Die Konfigurationsmethode hängt von Ihrem Cluster ab: authenticationMode

  • Bei Clustern, deren authenticationMode Wert CONFIG_MAP — Sie müssen den verwenden aws-auth ConfigMap. Access-Einträge werden auf diesen Clustern nicht unterstützt.

  • Auf Clustern, deren authenticationMode API_AND_CONFIG_MAP Name — Die Knoteninstanzrolle kann sich entweder mit dem aws-auth ConfigMap oder einem Zugriffseintrag authentifizieren. Wenn die Instanzrolle bereits in der zugeordnet ist, werden die Knoten erfolgreich hinzugefügt ConfigMap, ohne dass ein Zugriffseintrag für die Rolle erstellt wird.

  • Bei Clustern, deren authenticationMode Name lautet API — Sie müssen einen Zugriffseintrag für die Knoteninstanzrolle erstellen. Der aws-auth ConfigMap wird nicht für die Authentifizierung auf diesen Clustern verwendet.

Um einen Zugriffseintrag für die Node-Instance-Rolle zu erstellen, verwenden Sie AWS CLI:

$ aws eks create-access-entry \ --cluster-name my-cluster \ --principal-arn arn:aws:iam::123456789012:role/my-node-instance-role \ --type EC2_LINUX
$ aws eks associate-access-policy \ --cluster-name my-cluster \ --principal-arn arn:aws:iam::123456789012:role/my-node-instance-role \ --policy-arn arn:aws:eks::aws:cluster-access-policy/AmazonEKSWorkerNodePolicy \ --access-scope type=cluster

Weitere Informationen finden Sie unter Erstellen von Zugriffseinträgen im Amazon EKS-Benutzerhandbuch .

Wichtig

Ohne den richtigen Clusterzugriff für die Node-Instance-Rolle können EC2-Instances dem Cluster nicht beitreten. Jobs bleiben im RUNNABLE Status, da keine Kapazität im Cluster registriert ist.

Wählen Sie zwischen den Einträgen aws-auth und access ConfigMap

Die Zugriffsauthentifizierung ist die empfohlene Methode für neue AWS Batch Amazon EKS-Rechenumgebungen und bietet die folgenden Vorteile:

  • Macht es überflüssig, das manuell zu bearbeiten aws-auth ConfigMap , um den AWS Batch Zugriff auf den Cluster zu gewähren.

  • Stellt eine überprüfbare API-driven Aufzeichnung der Principals bereit, die Zugriff auf den Cluster haben.

  • Ist für Cluster erforderlich, deren authenticationMode Name istAPI, die den nicht unterstützen. aws-auth ConfigMap

Wenn der Ihres Clusters vorhanden authenticationMode istCONFIG_MAP, sind die Zugriffseinträge nicht verfügbar und AWS Batch die Authentifizierung erfolgt über den aws-auth ConfigMap. Detaillierte Anweisungen finden Sie unter Stellen Sie sicher, dass die aws-auth korrekt konfiguriert ist ConfigMap.