View a markdown version of this page

Autenticazione degli accessi ad Amazon EKS - AWS Batch

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Autenticazione degli accessi ad Amazon EKS

Amazon EKS supporta due meccanismi per concedere a un principale IAM l'autorizzazione a chiamare l'KubernetesAPI del cluster: l'API di accesso legacy aws-auth ConfigMap e quella più recente. Una voce di accesso garantisce l'accesso Kubernetes API a un principal IAM senza richiedere la modifica di un. ConfigMap AWS Batch può autenticarsi nel cluster tramite entrambi i meccanismi.

Se lo eksConfiguration.accessEntry.desiredState imposti ENABLED su un ambiente di elaborazione, AWS Batch puoi gestire la voce di accesso per quell'ambiente di calcolo sul cluster. Non è più necessario modificare manualmente il. aws-auth ConfigMap

Il AWS Batch provisioning di una voce di accesso dipende dall'ambiente di AWS Batch elaborazione e dalla configurazione del cluster Amazon EKS. Per informazioni dettagliate, vedi Interazione con l'AuthenticationMode del cluster .

Valori per l'accesso Entry.desiredState

Il desiredState campo on EksAccessEntry dichiara lo stato di accesso desiderato per l'ambiente di calcolo. I valori validi sono:

ENABLED

AWS Batch crea una voce AWS Batch di accesso gestita nel cluster per l'ambiente di calcolo. AWS Batch creerà una voce AWS Batch di accesso gestito solo se tutti gli ambienti di calcolo del cluster sono impostati su ENABLED (vedi desiredState In che modo AWS Batch riconcilia DesiredState tra gli ambienti di elaborazione per i dettagli).

DISABLED

AWS Batch elimina la voce AWS Batch-managed access per il cluster. AWS Batch eliminerà una voce AWS Batch di accesso gestito solo se tutti gli ambienti di calcolo del cluster sono impostati su DISABLED (vedi desiredState In che modo AWS Batch riconcilia DesiredState tra gli ambienti di elaborazione per i dettagli). L'accesso al cluster deve essere configurato tramite. aws-auth ConfigMap

INHERIT_FROM_CLUSTER

AWS Batch rimanda alla voce status di accesso corrente del cluster. In un cluster Amazon EKS la cui modalità di autenticazione èAPI, AWS Batch crea e gestisce una voce di accesso perché il cluster non può aws-auth ConfigMap ricorrere. In un cluster la cui modalità di autenticazione è CONFIG_MAP oAPI_AND_CONFIG_MAP, AWS Batch non aggiunge né rimuove una voce di accesso.

L'ambiente di calcolo espone anche un campo di sola lettura accessEntry.status nelle risposte. DescribeComputeEnvironments ACTIVEsignifica che nel cluster esiste una voce di accesso AWS Batch gestito per l'ambiente di calcolo che ha la precedenza su. aws-auth ConfigMap INACTIVEsignifica che non è presente alcuna AWS Batch voce di accesso gestito. Ciò può essere dovuto desiredState al fatto che gli ambienti di calcolo destinati al cluster non sono ancora d'accordo o al desiredState fatto che la voce non è ancora stata predisposta. DISABLED In caso accessEntry.status affermativoINACTIVE, Batch utilizza aws-auth ConfigMap per l'accesso al cluster.

Nota

Una voce di accesso viene segnalata non ACTIVE appena esiste nel cluster, anche se AWS Batch non ha completato l'associazione della politica di accesso che la rende utilizzabile. Se lo stato dell'ambiente di calcolo cambia in INVALID while accessEntry.status isACTIVE, consulta. La configurazione della voce di accesso di Amazon EKS è incompleta

Nota

Se si omette il accessEntry campo, AWS Batch non registra un valore desiredState per l'ambiente di calcolo e DescribeComputeEnvironments non ne restituisce uno. Ai fini del provisioning della voce di accesso, AWS Batch si comporta come previsto. INHERIT_FROM_CLUSTER

Interazione con l'AuthenticationMode del cluster

Il AWS Batch comportamento di un determinato elemento desiredState dipende dalla modalità di autenticazione del cluster. La tabella seguente si applica CreateComputeEnvironment sia UpdateComputeEnvironment a.

Cluster authenticationMode

Ambiente di elaborazione accessEntry.desiredState=ENABLED

Ambiente di elaborazione accessEntry.desiredState=DISABLED

Ambiente di elaborazione accessEntry.desiredState=INHERIT_FROM_CLUSTER

CONFIG_MAP

Le voci di accesso non sono disponibili nel cluster, quindi AWS Batch non ne crea o ne rimuove una. AWS Batch registra ancora il valore specificato. Dopo aver modificato la modalità di autenticazione del cluster, il valore registrato ha effetto alla successiva UpdateComputeEnvironment chiamata CreateComputeEnvironment o chiamata specificata. desiredState

API_AND_CONFIG_MAP

AWS Batch confronta i valori registrati negli ambienti di elaborazione che condividono il cluster. Vedi. In che modo AWS Batch riconcilia DesiredState tra gli ambienti di elaborazione

La modalità di accesso esistente viene mantenuta. AWS Batch non aggiunge o rimuove una voce di accesso.

API

La voce di accesso viene creata e gestita nel cluster.

La richiesta viene respinta. Un cluster in questa modalità non supporta e il aws-auth ConfigMap ConfigMap metodo non può essere abilitato dopo la creazione del cluster, pertanto non DISABLED consentirebbe all'ambiente di calcolo di autenticarsi.

La voce di accesso viene creata e gestita nel cluster. Quando il cluster è API -only, ereditare equivale a. ENABLED

In che modo AWS Batch riconcilia DesiredState tra gli ambienti di elaborazione

Poiché un singolo cluster Amazon EKS può supportare più ambienti di AWS Batch calcolo, la configurazione di accesso di un cluster è una risorsa condivisa. AWS Batch quindi riconcilia, o confronta e risolve, i desiredState valori registrati in tali ambienti di calcolo.

Quando il cluster authenticationMode èAPI_AND_CONFIG_MAP, AWS Batch confronta i dati desiredState registrati per ogni ambiente di calcolo nello stesso account e nella stessa AWS regione di destinazione del cluster. AWS AWS Batch utilizza questo confronto per determinare se aggiungere o rimuovere la voce di accesso per ciascuna CreateComputeEnvironment UpdateComputeEnvironment operazione specificata. desiredState

Ogni ambiente di elaborazione ha desiredState=ENABLED

AWS Batch crea la voce di accesso sul cluster.

Ogni ambiente di elaborazione ha desiredState=DISABLED

AWS Batch elimina la voce di accesso dal cluster, se ne esiste una.

I desiredState valori registrati non corrispondono tutti

AWS Batch mantiene la modalità di accesso esistente. La voce di accesso non viene né aggiunta né rimossa. Ciò include qualsiasi combinazione di ENABLED DISABLEDINHERIT_FROM_CLUSTER, e e include anche qualsiasi ambiente di elaborazione non desiredState registrato.

Nota

Per effettuare la transizione di un cluster la cui modalità di autenticazione è API_AND_CONFIG_MAP da aws-auth ConfigMap all'autenticazione di accesso, desiredState=ENABLED impostala su ogni ambiente di AWS Batch calcolo destinato al cluster. Per tornare indietro, desiredState=DISABLED imposta ognuno di essi.

What AWS Batch crea sul tuo cluster

AWS Batch crea una voce di accesso per cluster che soddisfa le condizioni precedenti, quindi associa la politica di accesso di AWSBatchClusterPolicy Amazon EKS a tale voce di accesso. La voce di accesso è per cluster anziché per ambiente di elaborazione, quindi tutti gli ambienti di AWS Batch calcolo che hanno come target lo stesso cluster la condividono.

Nota

L'eliminazione di un ambiente di calcolo non rimuove la voce di accesso, anche se si tratta dell'ultimo ambiente di AWS Batch calcolo del cluster. Per rimuovere una voce AWS Batch di accesso gestita, chiama UpdateComputeEnvironment with desiredState=DISABLED su tutti gli ambienti di AWS Batch elaborazione destinati al cluster prima di eliminarli.

Una voce di accesso non è sufficiente da sola per eseguire processi sul cluster. Per le Kubernetes autorizzazioni e l'accesso ai nodi che devi configurare tu stesso, consultaConfigurazione del cluster che devi comunque fornire.

Autorizzazioni richieste

AWS Batch gestisce la voce di accesso utilizzando le credenziali dell'identità IAM che chiama l'operazione CreateComputeEnvironment orUpdateComputeEnvironment. Tale identità deve essere autorizzata a eseguire le seguenti azioni Amazon EKS:

  • eks:DescribeCluster

  • eks:DescribeAccessEntry

  • eks:CreateAccessEntry

  • eks:AssociateAccessPolicy

  • eks:DeleteAccessEntry

Configura la voce di accesso

È possibile configurare la voce di accesso in un ambiente di calcolo tramite il eksConfiguration.accessEntry campo dell'UpdateComputeEnvironmentAPI CreateComputeEnvironment or.

AWS CLI

Abilita una voce AWS Batch di accesso gestita durante la creazione di un ambiente di elaborazione

$ 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'

Abilita una voce AWS Batch di accesso gestito in un ambiente di elaborazione esistente

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

Controlla lo stato

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

La risposta include sia desiredState ciò che hai specificato che quello osservatostatus:

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

AWS Batch viene restituito accessEntry.status per tutti gli ambienti di calcolo Amazon EKS e viene restituito desiredState solo se è stato impostato. Un ambiente di calcolo in cui non hai mai specificato i accessEntry rendimenti status da solo.

Per interrompere la gestione AWS Batch della voce di accesso, imposta DISABLED invece desiredState su. Prima di farlo, reviewInterazione con l'AuthenticationMode del cluster : DISABLED viene rifiutato su un cluster la cui modalità di autenticazione è API impostata e su un cluster la cui modalità di autenticazione è API_AND_CONFIG_MAP la voce di accesso viene rimosso solo dopo che ogni ambiente di AWS Batch calcolo destinato al DISABLED cluster è stato impostato su.

API

Usa l'eksConfiguration.accessEntryoggetto nella tua CreateComputeEnvironment UpdateComputeEnvironment richiesta.

Crea un ambiente di elaborazione con una voce AWS Batch di accesso gestita

accessEntryIncludi nel corpo della richiesta:

{ "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" } }

Aggiorna la voce di accesso in un ambiente di elaborazione esistente

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

Per ulteriori informazioni EksAccessEntry CreateComputeEnvironment, consulta e UpdateComputeEnvironment nella sezione AWS Batch API Reference.

Configurazione del cluster che devi comunque fornire

Una voce di accesso controlla solo la modalità di AWS Batch autenticazione nel cluster. Non concede AWS Batch le Kubernetes autorizzazioni necessarie per eseguire i processi e non consente alle istanze AWS Batch avviate di unirsi al cluster. Indipendentemente dal meccanismo di autenticazione utilizzato, è comunque necessario configurare entrambi i seguenti elementi.

Importante

Una volta creata una voce di accesso AWS Batch gestito per il ruolo AWS Batch collegato al servizio su un cluster (accessEntry.status=ACTIVE), ha la precedenza sulla aws-auth ConfigMap configurazione del ruolo. Le ConfigMap voci per il ruolo AWS Batch collegato al servizio non sono utilizzate e AWS Batch vengono autenticate utilizzando invece la voce di accesso. Per tornare all' ConfigMap autenticazione, impostala desiredState=DISABLED su tutti gli ambienti di calcolo destinati al cluster. Ciò rimuove la voce AWS Batch-managed access.

Kubernetesautorizzazioni per il namespace AWS Batch

AWS Batch necessita Kubernetes delle autorizzazioni per creare e gestire i pod nello spazio dei nomi specificato. eksConfiguration.kubernetesNamespace Crea il namespace, quindi configura tali autorizzazioni utilizzando uno dei seguenti metodi a seconda del tuo approccio di autenticazione:

  • Associazione ai criteri di accesso (richiesta per l'accessostatus=ACTIVE): quando si imposta l'impostazione desiredState=ENABLED su tutti gli ambienti di elaborazione destinati a un cluster, AWS Batch crea una voce di accesso a livello di cluster. AWSBatchClusterPolicy È quindi necessario associare il namespace-scoped AWSBatchNamespacePolicy per concedere l'autorizzazione a creare e gestire i pod. AWS Batch

    Una volta raggiunta la voce di accessostatus=ACTIVE, associa la politica dello spazio dei nomi utilizzando: 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

    Sostituisci my-aws-batch-namespace con il valore specificato in. eksConfiguration.kubernetesNamespace

    Importante

    Senza l'associazione dei criteri con ambito di namespace, lo stato dei lavori rimarrà bloccato. RUNNABLE La policy a livello di cluster da sola non concede autorizzazioni di gestione dei pod.

  • Kubernetesruoli e associazioni di ruolo (quando si accedestatus=INACTIVE): se la voce AWS Batch-managed access non è attiva, crea i Kubernetes ruoli e le associazioni di ruolo che concedono tali autorizzazioni, come descritto in. Fase 2: Prepara il tuo cluster Amazon EKS per AWS Batch Questa operazione viene eseguita una volta per ogni cluster.

    Nota

    Quando è attiva una voce di accesso AWS Batch gestita (status=ACTIVE), i ruoli Kubernetes RBAC vengono ignorati. È invece necessario utilizzare il metodo di associazione dei criteri di accesso.

AWS Batch non crea queste risorse per te e una voce AWS Batch di accesso gestito non le sostituisce. Se mancano, l'ambiente di elaborazione può comunque diventare obsoleto VALID mentre i lavori non vengono avviati.

Accesso al cluster per il ruolo di istanza del nodo

Le istanze AWS Batch avviate si uniscono al cluster utilizzando il profilo di istanza specificato in. computeResources.instanceRole Tale ruolo richiede il proprio accesso al cluster, che è separato dalla voce AWS Batch-managed access e che AWS Batch non è configurabile.

Il metodo di configurazione dipende dal cluster: authenticationMode

  • Sui cluster il cui authenticationMode è CONFIG_MAP: è necessario utilizzare il aws-auth ConfigMap. Le voci di accesso non sono supportate in questi cluster.

  • Sui cluster il cui authenticationMode è API_AND_CONFIG_MAP: il ruolo dell'istanza del nodo può autenticarsi utilizzando la aws-auth ConfigMap o una voce di accesso. Se il ruolo dell'istanza è già mappato in ConfigMap, i nodi si uniranno correttamente senza creare una voce di accesso per il ruolo.

  • Sui cluster il cui authenticationMode è API: è necessario creare una voce di accesso per il ruolo di istanza del nodo. Non aws-auth ConfigMap viene utilizzato per l'autenticazione su questi cluster.

Per creare una voce di accesso per il ruolo di istanza del nodo, usa: 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

Per ulteriori informazioni, consulta Creazione di voci di accesso nella Amazon EKS User Guide .

Importante

Senza un accesso adeguato al cluster per il ruolo di istanza del nodo, le istanze EC2 non possono entrare a far parte del cluster. I job rimarranno nello RUNNABLE stato perché nessuna capacità viene registrata nel cluster.

Scelta tra le voci aws-auth ConfigMap e access

L'autenticazione degli accessi è il percorso consigliato per i nuovi ambienti di calcolo AWS Batch su Amazon EKS e offre i seguenti vantaggi:

  • Elimina la necessità di modificare manualmente le impostazioni aws-auth ConfigMap per concedere AWS Batch l'accesso al cluster.

  • Fornisce un API-driven registro verificabile dei principali che hanno accesso al cluster.

  • È obbligatorio per i cluster il authenticationMode cui API ID non supporta. aws-auth ConfigMap

Se il tuo cluster authenticationMode èCONFIG_MAP, le voci di accesso non sono disponibili e vengono AWS Batch autenticate tramite. aws-auth ConfigMap Per istruzioni, consulta Verifica che aws-auth ConfigMap sia configurato correttamente.