View a markdown version of this page

Autenticación de entradas de acceso a Amazon E - AWS Batch

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Autenticación de entradas de acceso a Amazon E

Amazon EKS admite dos mecanismos para conceder a un director de IAM permiso para llamar a la API del clúster: la Kubernetes API de entrada de acceso antigua aws-auth ConfigMap y la más reciente. Una entrada de acceso otorga acceso a una Kubernetes API principal de IAM sin necesidad de editar una. ConfigMap AWS Batch puede autenticarse en su clúster a través de cualquiera de los dos mecanismos.

Cuando lo eksConfiguration.accessEntry.desiredState configuras ENABLED en un entorno de procesamiento, AWS Batch puedes administrar la entrada de acceso para ese entorno de procesamiento en el clúster. Ya no es necesario editar manualmente el aws-auth ConfigMap.

El AWS Batch aprovisionamiento de una entrada de acceso depende de su entorno AWS Batch informático y de la configuración del clúster de Amazon EKS. Para obtener más información, consulte Interacción con el modo de autenticación del clúster .

Valores de acceso Entry.desiredState

El desiredState campo on EksAccessEntry declara el estado de entrada de acceso deseado para el entorno informático. Los valores válidos son los siguientes:

ENABLED

AWS Batch crea una entrada AWS Batch de acceso administrado en el clúster para el entorno informático. AWS Batch solo creará una entrada de acceso AWS Batch administrado si todos los entornos informáticos del clúster están configurados en ENABLED (consulte desiredState Cómo AWS Batch reconcilia el estado deseado en todos los entornos informáticos para obtener más información).

DISABLED

AWS Batch elimina la entrada de acceso AWS Batch administrado del clúster. AWS Batch solo eliminará una entrada de acceso AWS Batch administrado si todos los entornos informáticos del clúster están configurados en DISABLED (consulte desiredState Cómo AWS Batch reconcilia el estado deseado en todos los entornos informáticos para obtener más información). El acceso al clúster debe configurarse a través del aws-auth ConfigMap.

INHERIT_FROM_CLUSTER

AWS Batch se refiere a la entrada status de acceso actual del clúster. En un clúster de Amazon EKS cuyo modo de autenticación esAPI, AWS Batch crea y administra una entrada de acceso, ya que el clúster no tiene aws-auth ConfigMap a qué recurrir. En un clúster cuyo modo de autenticación es CONFIG_MAP oAPI_AND_CONFIG_MAP, AWS Batch no agrega ni elimina una entrada de acceso.

El entorno informático también muestra un accessEntry.status campo de solo lectura en las respuestas. DescribeComputeEnvironments ACTIVEsignifica que existe una entrada de acceso AWS Batch administrado para el entorno informático en el clúster y tiene prioridad sobre. aws-auth ConfigMap INACTIVEsignifica que no hay ninguna entrada AWS Batch de acceso administrado. Esto puede deberse a que los entornos informáticos que desiredState se DISABLED dirigen al clúster aún no están de acuerdo o a que la entrada aún no se ha aprovisionado. desiredState Si accessEntry.status es asíINACTIVE, Batch lo usa aws-auth ConfigMap para acceder al clúster.

nota

Una entrada de acceso se ACTIVE notifica tan pronto como existe en el clúster, incluso si no AWS Batch ha terminado de asociar la política de acceso que la hace utilizable. Si el estado del entorno de procesamiento cambia a INVALID while accessEntry.status isACTIVE, consulteLa configuración de la entrada de acceso a Amazon EKS está incompleta.

nota

Si omites el accessEntry campo, AWS Batch no se registra un desiredState para el entorno de procesamiento y DescribeComputeEnvironments no se devuelve ninguno. Con el fin de aprovisionar la entrada de acceso, AWS Batch se comporta de la misma manera que lo hace para. INHERIT_FROM_CLUSTER

Interacción con el modo de autenticación del clúster

El AWS Batch comportamiento de un determinado usuario desiredState depende del modo de autenticación del clúster. La siguiente tabla se aplica tanto a comoCreateComputeEnvironment. UpdateComputeEnvironment

Clúster authenticationMode

Entorno informático accessEntry.desiredState=ENABLED

Entorno informático accessEntry.desiredState=DISABLED

Entorno informático accessEntry.desiredState=INHERIT_FROM_CLUSTER

CONFIG_MAP

Las entradas de acceso no están disponibles en el clúster, por lo que AWS Batch no crea ni elimina ninguna. AWS Batch sigue registrando el valor que especifiques. Tras cambiar el modo de autenticación del clúster, el valor registrado surtirá efecto en la próxima UpdateComputeEnvironment llamada CreateComputeEnvironment o llamada que especifiquedesiredState.

API_AND_CONFIG_MAP

AWS Batch compara los valores registrados en los entornos informáticos que comparten el clúster; consulteCómo AWS Batch reconcilia el estado deseado en todos los entornos informáticos.

Se conserva el modo de acceso existente. AWS Batch no agrega ni elimina una entrada de acceso.

API

La entrada de acceso se crea y se mantiene en el clúster.

La solicitud se rechaza. Un clúster en este modo no admite la autenticación y el aws-auth ConfigMap ConfigMap método no se puede habilitar después de la creación del clúster, por lo que el entorno informático no DISABLED tendría ninguna forma de autenticarse.

La entrada de acceso se crea y se mantiene en el clúster. Cuando el clúster es API solo, heredar equivale a. ENABLED

Cómo AWS Batch reconcilia el estado deseado en todos los entornos informáticos

Dado que un solo clúster de Amazon EKS puede respaldar varios entornos AWS Batch informáticos, la configuración de acceso de un clúster es un recurso compartido. AWS Batch por lo tanto, reconcilia o compara y resuelve los desiredState valores registrados en esos entornos informáticos.

Cuando authenticationMode es el del clústerAPI_AND_CONFIG_MAP, AWS Batch compara los datos desiredState registrados para cada entorno informático de la misma AWS cuenta y AWS región a la que se dirige el clúster. AWS Batch usa esta comparación para determinar si se debe agregar o eliminar la entrada de acceso en cada CreateComputeEnvironment UpdateComputeEnvironment operación que especifiquedesiredState.

Todos los entornos informáticos tienen desiredState=ENABLED

AWS Batch crea la entrada de acceso en el clúster.

Todos los entornos informáticos tienen desiredState=DISABLED

AWS Batch elimina la entrada de acceso del clúster, si existe.

No todos desiredState los valores registrados coinciden

AWS Batch conserva el modo de acceso existente. La entrada de acceso no se agrega ni se quita. Esto incluye cualquier combinación de ENABLEDDISABLED, yINHERIT_FROM_CLUSTER, y también incluye cualquier entorno informático que no tenga ningún desiredState registro.

nota

Para hacer la transición de un clúster cuyo modo de autenticación sea API_AND_CONFIG_MAP de aws-auth ConfigMap a la autenticación de entrada, desiredState=ENABLED configúrala en cada entorno AWS Batch informático que tenga como destino el clúster. Para volver a hacer la transición, desiredState=DISABLED configúralos en cada uno de ellos.

Qué AWS Batch crea en tu clúster

AWS Batch crea una entrada de acceso por clúster que cumpla las condiciones anteriores y, a continuación, asocia la política de acceso de AWSBatchClusterPolicy Amazon EKS a esa entrada de acceso. La entrada de acceso es por clúster y no por entorno de procesamiento, por lo que todos los entornos de AWS Batch procesamiento que se dirigen al mismo clúster la comparten.

nota

La eliminación de un entorno de procesamiento no elimina la entrada de acceso, incluso si se trata del último entorno de AWS Batch procesamiento del clúster. Para eliminar una entrada de acceso AWS Batch administrado, llama UpdateComputeEnvironment a todos los entornos de AWS Batch procesamiento que tengan como destino el clúster antes de eliminarlos. desiredState=DISABLED

Una entrada de acceso no es suficiente por sí sola para ejecutar trabajos en el clúster. Para conocer los Kubernetes permisos y el acceso a los nodos que debe configurar usted mismo, consulteLa configuración de clúster que aún debe proporcionar.

Permisos necesarios

AWS Batch administra la entrada de acceso mediante las credenciales de la identidad de IAM que llama a la UpdateComputeEnvironment operación CreateComputeEnvironment o. Esa identidad debe poder realizar las siguientes acciones de Amazon EKS:

  • eks:DescribeCluster

  • eks:DescribeAccessEntry

  • eks:CreateAccessEntry

  • eks:AssociateAccessPolicy

  • eks:DeleteAccessEntry

Configure la entrada de acceso

Puede configurar la entrada de acceso en un entorno informático a través del eksConfiguration.accessEntry campo de la UpdateComputeEnvironment API CreateComputeEnvironment o.

AWS CLI

Habilita una entrada AWS Batch de acceso administrado al crear un entorno de procesamiento

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

Habilite una entrada AWS Batch de acceso administrado en un entorno informático existente

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

Compruebe el estado

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

La respuesta incluye tanto lo desiredState que especificó como lo observadostatus:

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

AWS Batch devuelve accessEntry.status para todos los entornos informáticos de Amazon EKS y desiredState solo si lo ha configurado. Un entorno informático en el que nunca se especificó accessEntry devuelve status solo.

Para dejar AWS Batch de administrar la entrada de acceso, configúrala desiredState DISABLED en su lugar. Antes de hacerlo, reviseInteracción con el modo de autenticación del clúster : DISABLED se rechaza en un clúster cuyo modo de autenticación es yAPI, en un clúster cuyo modo de autenticación es API_AND_CONFIG_MAP la entrada de acceso, solo se elimina después de que todos los entornos de AWS Batch procesamiento dirigidos al clúster estén configurados enDISABLED.

API

Usa el eksConfiguration.accessEntry objeto en tu UpdateComputeEnvironment solicitud CreateComputeEnvironment o.

Cree un entorno informático con una entrada AWS Batch de acceso administrado

Incluya accessEntry en el cuerpo de la solicitud:

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

Actualice la entrada de acceso en un entorno informático existente

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

Para obtener más información EksAccessEntry CreateComputeEnvironment, consulte y UpdateComputeEnvironment en la referencia de la AWS Batch API.

La configuración de clúster que aún debe proporcionar

Una entrada de acceso controla únicamente la forma en AWS Batch que se autentica en el clúster. No otorga AWS Batch los Kubernetes permisos que necesita para ejecutar tus trabajos ni permite que las instancias que se AWS Batch lanzan se unan al clúster. Independientemente del mecanismo de autenticación que utilices, debes configurar las dos opciones siguientes.

importante

Una vez que se crea una entrada de acceso AWS Batch administrado para el rol AWS Batch vinculado al servicio en un clúster (accessEntry.status=ACTIVE), tiene prioridad sobre la aws-auth ConfigMap configuración del rol. Las ConfigMap entradas del rol AWS Batch vinculado al servicio no se utilizan y, en su lugar, se AWS Batch autentica mediante la entrada de acceso. Para volver a la ConfigMap autenticación, desiredState=DISABLED configúrela en todos los entornos informáticos que tengan como destino el clúster. Esto elimina la entrada AWS Batch-managed access.

Kubernetespermisos para el espacio de nombres AWS Batch

AWS Batch necesita Kubernetes permisos para crear y administrar pods en el espacio de nombres que especifiques. eksConfiguration.kubernetesNamespace Crea el espacio de nombres y, a continuación, configura esos permisos mediante uno de los siguientes métodos, según el enfoque de autenticación que utilices:

  • Asociación de políticas de acceso (obligatoria cuando se ingresa el accesostatus=ACTIVE): cuando configuras todos desiredState=ENABLED los entornos de procesamiento orientados a un clúster, AWS Batch crea una entrada de acceso con el nivel del clústerAWSBatchClusterPolicy. A continuación, debes asociar el ámbito del espacio de nombres AWSBatchNamespacePolicy para conceder el permiso de creación y administración de pods. AWS Batch

    Cuando llegue la entrada de accesostatus=ACTIVE, asocie la política de espacio de nombres mediante: 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

    my-aws-batch-namespaceSustitúyala por el valor que especificaste eneksConfiguration.kubernetesNamespace.

    importante

    Sin la asociación de políticas con un ámbito de espacio de nombres, los trabajos permanecerán estancados. RUNNABLE La política a nivel de clúster por sí sola no otorga permisos de administración de pods.

  • Kubernetesroles y enlaces de roles (cuando se accede a la entradastatus=INACTIVE): si la entrada de acceso AWS Batch administrado no está activa, cree los roles y los enlaces de Kubernetes roles que otorgan esos permisos, tal y como se describe en. Paso 2: Prepare su clúster de Amazon EKS para AWS Batch Esto se hace una vez para cada clúster.

    nota

    Cuando una entrada de acceso AWS Batch administrado está activa (status=ACTIVE), se omiten las funciones de Kubernetes RBAC. En su lugar, debe utilizar el método de asociación de políticas de acceso.

AWS Batch no crea estos recursos automáticamente y una entrada AWS Batch de acceso administrado no los sustituye. Si faltan, el entorno informático puede seguir funcionando VALID mientras tus trabajos no se inician.

Acceso al clúster para el rol de instancia de nodo

Las instancias que AWS Batch se lanzan se unen al clúster mediante el perfil de instancia que especifiquescomputeResources.instanceRole. Ese rol necesita su propio acceso al clúster, que es independiente de la entrada de acceso AWS Batch administrado y que AWS Batch no se configura.

El método de configuración depende de los siguientes parámetros del authenticationMode clúster:

  • En los clústeres authenticationMode que son CONFIG_MAP: debe utilizar el aws-auth ConfigMap. No se admiten entradas de acceso en estos clústeres.

  • En clústeres authenticationMode que son API_AND_CONFIG_MAP: el rol de instancia de nodo puede autenticarse mediante la entrada aws-auth ConfigMap o una entrada de acceso. Si el rol de instancia ya está asignado en ConfigMap, los nodos se unirán correctamente sin crear una entrada de acceso para el rol.

  • En los clústeres cuyo API nombre authenticationMode sea: debes crear una entrada de acceso para el rol de instancia de nodo. No aws-auth ConfigMap se usa para la autenticación en estos clústeres.

Para crear una entrada de acceso para el rol de instancia de nodo, utilice 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

Para obtener más información, consulte Creación de entradas de acceso en la Guía del usuario de Amazon EKS .

importante

Sin el acceso adecuado al clúster para la función de instancia de nodo, las instancias EC2 no pueden unirse al clúster. Los trabajos permanecerán en ese RUNNABLE estado porque no se registra ninguna capacidad en el clúster.

Elegir entre las entradas aws-auth y access ConfigMap

La autenticación de las entradas de acceso es la ruta recomendada para AWS Batch los nuevos entornos informáticos de Amazon EKS y ofrece las siguientes ventajas:

  • Elimina la necesidad de editarla manualmente aws-auth ConfigMap para conceder AWS Batch acceso al clúster.

  • Proporciona un API-driven registro auditable de las personas principales que tienen acceso al clúster.

  • Es obligatorio para los clústeres authenticationMode que síAPI, que no admiten el. aws-auth ConfigMap

Si el de su clúster lo authenticationMode esCONFIG_MAP, las entradas de acceso no están disponibles y AWS Batch se autentica a través del aws-auth ConfigMap. Para obtener instrucciones, consulte Verifique que aws-auth ConfigMap esté configurado correctamente.