View a markdown version of this page

autenticación de entradas de acceso a Amazon EKS - 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 EKS

Amazon EKS admite dos mecanismos para conceder a un principal de IAM el permiso de llamar al clúster Kubernetes API: el legado aws-auth ConfigMap y el más nuevo API de entrada de acceso. Un acceso, becas de entrada. Kubernetes Acceso mediante API a un director de IAM sin necesidad de editar un ConfigMap. AWS Batch puede autenticarse en su clúster a través de cualquiera de los dos mecanismos.

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

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

Valores para accesoEntry.desiredState

El desiredState campo en 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 un AWS Batch-entrada de acceso administrado en el clúster para el entorno informático. AWS Batch solo creará un AWS Batch-entrada de acceso administrado si todos los entornos informáticos del clúster están configurados desiredState a ENABLED (ver Cómo AWS Batch reconcilia Estado deseado en todos los entornos informáticos para obtener más información).

DISABLED

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

INHERIT_FROM_CLUSTER

AWS Batch se refiere a la entrada de acceso actual del clúster status. En un clúster de Amazon EKS cuyo modo de autenticación es API, AWS Batch crea y administra una entrada de acceso porque el clúster no tiene aws-auth ConfigMap al que recurrir. En un clúster cuyo modo de autenticación es CONFIG_MAP o API_AND_CONFIG_MAP, AWS Batch no añade ni elimina una entrada de acceso.

El entorno informático también expone un sistema de solo lectura accessEntry.status campo en DescribeComputeEnvironments respuestas. ACTIVE significa que un AWS Batch-la entrada de acceso administrado para el entorno informático existe en el clúster y tiene prioridad sobre la aws-auth ConfigMap. INACTIVE significa que no AWS Batch-la entrada de acceso administrado está presente. Esto puede deberse a desiredState es DISABLED, porque los entornos informáticos que se dirigen al clúster aún no están de acuerdo desiredState, o porque la entrada aún no se ha aprovisionado. Si accessEntry.status es INACTIVE, Usos por lotes aws-auth ConfigMap para acceder al clúster.

nota

Una entrada de acceso informa ACTIVE tan pronto como exista en el clúster, incluso si AWS Batch no ha terminado de asociar la política de acceso que la hace utilizable. Si el estado del entorno informático cambia a INVALID mientras accessEntry.status es ACTIVE, ver La configuración de la entrada de acceso a Amazon EKS está incompleta.

nota

Si omites el accessEntry campo, AWS Batch no graba un desiredState para el entorno informático, y DescribeComputeEnvironments no devuelve ninguno. Con el fin de aprovisionar la entrada de acceso, AWS Batch se comporta como lo hace para INHERIT_FROM_CLUSTER.

Interacción con el clúster Modo de autenticación

¿Cómo AWS Batch se comporta de una manera determinada desiredState depende del modo de autenticación del clúster. La siguiente tabla se aplica a ambos CreateComputeEnvironment y UpdateComputeEnvironment.

Clúster authenticationMode

Entorno de computación accessEntry.desiredState=ENABLED

Entorno de computación accessEntry.desiredState=DISABLED

Entorno de computación 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, ese valor registrado surtirá efecto la próxima vez CreateComputeEnvironment o UpdateComputeEnvironment llamada que especifica desiredState.

API_AND_CONFIG_MAP

AWS Batch compara los valores registrados en los entornos informáticos que comparten el clúster; consulte Cómo AWS Batch reconcilia 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 aws-auth ConfigMap, y el ConfigMap el método no se puede habilitar después de la creación del clúster, por lo que DISABLED dejaría el entorno informático sin forma de autenticarse.

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

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

Porque un solo clúster de Amazon EKS puede respaldar varios AWS Batch en entornos 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, el desiredState valores registrados en esos entornos informáticos.

Cuando el clúster está authenticationMode es API_AND_CONFIG_MAP, AWS Batch compara el desiredState registrado para cada entorno informático en el mismo 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 o UpdateComputeEnvironment operación que especifica desiredState.

Todos los entornos de cómputos tienen desiredState=ENABLED

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

Todos los entornos de cómputos tienen desiredState=DISABLED

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

La grabada desiredState no todos los valores 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 ENABLED, DISABLED, y INHERIT_FROM_CLUSTER, y también incluye cualquier entorno informático que no tenga desiredState grabado.

nota

Para hacer la transición de un clúster cuyo modo de autenticación es API_AND_CONFIG_MAP de aws-auth ConfigMap para acceder a la autenticación de entrada, configure desiredState=ENABLED en cada AWS Batch entorno informático que se dirige al clúster. Para hacer la transición hacia atrás, configure desiredState=DISABLED 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 el AWSBatchClusterPolicy La política de acceso de Amazon EKS a esa entrada de acceso. La entrada de acceso es por clúster y no por entorno informático, por lo que todos AWS Batch los entornos informáticos 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 es la última AWS Batch entorno de procesamiento en el clúster. Para eliminar un AWS Batch-entrada de acceso administrado, llame UpdateComputeEnvironment con desiredState=DISABLED en cada AWS Batch entorno informático que se dirige al clúster antes de eliminarlo.

Una entrada de acceso no es suficiente por sí sola para ejecutar trabajos en el clúster. Para el Kubernetes los permisos y el acceso a los nodos que debe configurar usted mismo, consulte 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 al CreateComputeEnvironment o UpdateComputeEnvironment operación. 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 mediante el eksConfiguration.accessEntry campo del CreateComputeEnvironment o UpdateComputeEnvironment API.

AWS CLI

Habilite un AWS Batch-entrada de acceso administrado al crear un entorno informático

$ 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 un AWS Batch-entrada 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 desiredState lo que especificó y lo observado status:

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

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

Para parar AWS Batch desde la administración de la entrada de acceso, configure desiredState a DISABLED en cambio. Antes de hacerlo, revisa Interacción con el clúster Modo de autenticación: DISABLED se rechaza en un clúster cuyo modo de autenticación es API, y en un clúster cuyo modo de autenticación es API_AND_CONFIG_MAP la entrada de acceso se elimina solo después de cada AWS Batch el entorno informático que apunta al clúster está configurado en DISABLED.

API

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

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

Incluir 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, consulte EksAccessEntry, CreateComputeEnvironment, y UpdateComputeEnvironment en el AWS Batch Referencia de API.

Configuración de clúster que aún debe proporcionar

Una entrada de acceso solo controla cómo AWS Batch se autentica en su clúster. No concede AWS Batch la Kubernetes los permisos que necesita para ejecutar sus trabajos y no permite que las instancias que AWS Batch los lanzamientos se unen al clúster. Independientemente del mecanismo de autenticación que utilice, debe seguir configurando las dos opciones siguientes.

importante

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

Kubernetes permisos para el AWS Batch espacio de nombres

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

  • Asociación de políticas de acceso (obligatoria al acceder) status=ACTIVE) — Cuando configuras desiredState=ENABLED en todos los entornos de procesamiento dirigidos a un clúster, AWS Batch crea una entrada de acceso con el nivel de clúster AWSBatchClusterPolicy. A continuación, debe asociar el ámbito del espacio de nombres AWSBatchNamespacePolicy conceder AWS Batch permiso para crear y administrar pods.

    Una vez que la entrada de acceso llegue status=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

    Reemplazar my-aws-batch-namespace con el valor que especificó en eksConfiguration.kubernetesNamespace.

    importante

    Sin una asociación política que abarque el espacio de nombres, los empleos permanecerán atrapados RUNNABLE estado. La política a nivel de clúster por sí sola no otorga permisos de administración de pods.

  • Kubernetes roles y enlaces de roles (cuando se accede a la entrada) status=INACTIVE) — Si el AWS Batch-la entrada de acceso administrado no está activa, cree Kubernetes roles y enlaces de roles que otorgan esos permisos, tal 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 un AWS Batch-la entrada de acceso administrado está activa (status=ACTIVE), el Kubernetes Se omiten las funciones de RBAC. En su lugar, debe utilizar el método de asociación de políticas de acceso.

AWS Batch no crea estos recursos para usted, y un AWS Batch-la entrada de acceso administrado no los sustituye. Si faltan, el entorno informático aún puede convertirse en VALID mientras sus trabajos no se inicien.

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

Instancias que AWS Batch lanza, se une al clúster mediante el perfil de instancia que especifique en computeResources.instanceRole. Esa función necesita su propio acceso al clúster, que es independiente del AWS Batch-entrada de acceso administrada y cuál AWS Batch no se configura.

El método de configuración depende del de su clúster authenticationMode:

  • En clústeres cuyos authenticationMode es CONFIG_MAP — Debes usar el aws-auth ConfigMap. Las entradas de acceso no se admiten en estos clústeres.

  • En clústeres cuyo authenticationMode es API_AND_CONFIG_MAP — El rol de instancia de nodo puede autenticarse mediante cualquiera de los aws-auth ConfigMap o una entrada de acceso. Si el rol de instancia ya está mapeado en ConfigMap, los nodos se unirán correctamente sin crear una entrada de acceso para el rol.

  • En clústeres cuyo authenticationMode es API — Debes crear una entrada de acceso para el rol de instancia de nodo. El aws-auth ConfigMap no se usa para la autenticación en estos clústeres.

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

Para obtener más información, consulte Creación de entradas de acceso en el 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 RUNNABLE estado porque no se registra ninguna capacidad en el clúster.

Elegir entre aws-auth ConfigMap y acceder a las entradas

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

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

  • Proporciona un servicio auditable, API-driven registro de los principales que tienen acceso al clúster.

  • Es obligatorio para los clústeres cuyo authenticationMode es API, que no son compatibles con aws-auth ConfigMap.

Si tu clúster es authenticationMode es CONFIG_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 Compruebe que el aws-auth ConfigMap está configurado correctamente.