View a markdown version of this page

Autenticação de entrada de acesso do Amazon EKS - AWS Batch

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Autenticação de entrada de acesso do Amazon EKS

O Amazon EKS oferece suporte a dois mecanismos para conceder a uma permissão principal do IAM para chamar a Kubernetes API do cluster: a antiga aws-auth ConfigMap e a API de entrada de acesso mais recente. Uma entrada de acesso concede acesso à Kubernetes API a um principal do IAM sem exigir que você edite um ConfigMap. AWS Batch pode se autenticar em seu cluster por meio de qualquer um dos mecanismos.

Quando você define eksConfiguration.accessEntry.desiredState ENABLED em um ambiente de computação, AWS Batch pode gerenciar a entrada de acesso para esse ambiente de computação no cluster. Você não precisa mais editar manualmente aws-auth ConfigMap o.

O AWS Batch provisionamento de uma entrada de acesso depende do seu ambiente AWS Batch computacional e da configuração do cluster Amazon EKS. Para obter mais detalhes, consulte Interação com o AuthenticationMode do cluster.

Valores para acesso Entry.desiredState

O desiredState campo on EksAccessEntry declara o estado de entrada de acesso desejado para o ambiente computacional. Os valores válidos são:

ENABLED

AWS Batch cria uma entrada AWS Batch de acesso gerenciado no cluster para o ambiente computacional. AWS Batch só criará uma entrada AWS Batch de acesso gerenciado se todos os ambientes de computação no cluster estiverem configurados desiredState para ENABLED (consulte Como AWS Batch reconcilia DesiredState em ambientes computacionais para obter detalhes).

DISABLED

AWS Batch exclui a entrada AWS Batch de acesso gerenciado para o cluster. AWS Batch excluirá somente uma entrada AWS Batch de acesso gerenciado se todos os ambientes de computação no cluster estiverem configurados desiredState para DISABLED (consulte Como AWS Batch reconcilia DesiredState em ambientes computacionais para obter detalhes). O acesso ao cluster deve ser configurado por meio do aws-auth ConfigMap.

INHERIT_FROM_CLUSTER

AWS Batch segue para a entrada status de acesso atual do cluster. Em um cluster do Amazon EKS cujo modo de autenticação éAPI, AWS Batch cria e gerencia uma entrada de acesso porque o cluster não aws-auth ConfigMap precisa recorrer. Em um cluster cujo modo de autenticação é CONFIG_MAP ouAPI_AND_CONFIG_MAP, AWS Batch não adiciona nem remove uma entrada de acesso.

O ambiente computacional também expõe um campo somente para leitura accessEntry.status nas respostas. DescribeComputeEnvironments ACTIVEsignifica que uma entrada AWS Batch de acesso gerenciado para o ambiente computacional existe no cluster e tem precedência sobre o. aws-auth ConfigMap INACTIVEsignifica que nenhuma entrada AWS Batch de acesso gerenciado está presente. Isso pode ser porque desiredState simDISABLED, porque os ambientes de computação direcionados ao cluster ainda não concordam ou porque a entrada ainda não foi provisionada. desiredState Se accessEntry.status for o casoINACTIVE, o Batch usa aws-auth ConfigMap para acesso ao cluster.

nota

Uma entrada de acesso informa ACTIVE assim que ela existe no cluster, mesmo que não AWS Batch tenha terminado de associar a política de acesso que a torna utilizável. Se o status do ambiente computacional mudar para INVALID while accessEntry.status isACTIVE, consulteA configuração da entrada de acesso do Amazon EKS está incompleta.

nota

Se você omitir o accessEntry campo, AWS Batch não grava um desiredState para o ambiente de computação e DescribeComputeEnvironments não retorna um. Com a finalidade de provisionar a entrada de acesso, AWS Batch se comporta como se fosse. INHERIT_FROM_CLUSTER

Interação com o AuthenticationMode do cluster

O AWS Batch comportamento de um determinado cluster desiredState depende do modo de autenticação do cluster. A tabela a seguir se aplica a CreateComputeEnvironment UpdateComputeEnvironment e.

Cluster authenticationMode

Ambiente computacional accessEntry.desiredState=ENABLED

Ambiente computacional accessEntry.desiredState=DISABLED

Ambiente computacional accessEntry.desiredState=INHERIT_FROM_CLUSTER

CONFIG_MAP

As entradas de acesso não estão disponíveis no cluster, portanto, AWS Batch não cria nem remove nenhuma. AWS Batch ainda registra o valor que você especificar. Depois de alterar o modo de autenticação do cluster, esse valor registrado entrará em vigor na próxima UpdateComputeEnvironment chamada CreateComputeEnvironment ou na chamada especificada. desiredState

API_AND_CONFIG_MAP

AWS Batch compara os valores registrados nos ambientes computacionais que compartilham o cluster — consulte. Como AWS Batch reconcilia DesiredState em ambientes computacionais

O modo de acesso existente é mantido. AWS Batch não adiciona nem remove uma entrada de acesso.

API

A entrada de acesso é criada e mantida no cluster.

A solicitação foi rejeitada. Um cluster nesse modo não oferece suporte ao aws-auth ConfigMap, e o ConfigMap método não pode ser ativado após a criação do cluster, portanto, DISABLED deixaria o ambiente de computação sem nenhuma forma de autenticação.

A entrada de acesso é criada e mantida no cluster. Quando o cluster é API somente -only, herdar é equivalente a. ENABLED

Como AWS Batch reconcilia DesiredState em ambientes computacionais

Como um único cluster do Amazon EKS pode oferecer suporte a vários ambientes de AWS Batch computação, a configuração de acesso de um cluster é um recurso compartilhado. AWS Batch portanto, reconcilia ou compara e resolve os desiredState valores registrados nesses ambientes computacionais.

Quando o do cluster authenticationMode estáAPI_AND_CONFIG_MAP, AWS Batch compara o desiredState registrado para cada ambiente de computação na mesma AWS conta e AWS região que tem como alvo o cluster. AWS Batch usa essa comparação para determinar se deve adicionar ou remover a entrada de acesso em cada uma CreateComputeEnvironment das UpdateComputeEnvironment operações desiredState especificadas.

Cada ambiente computacional tem desiredState=ENABLED

AWS Batch cria a entrada de acesso no cluster.

Cada ambiente computacional tem desiredState=DISABLED

AWS Batch exclui a entrada de acesso do cluster, se houver.

Nem todos desiredState os valores registrados coincidem

AWS Batch mantém o modo de acesso existente. A entrada de acesso não é adicionada nem removida. Isso inclui qualquer combinação deENABLED,DISABLED, eINHERIT_FROM_CLUSTER, e também inclui qualquer ambiente de computação que não tenha nenhum desiredState registro.

nota

Para fazer a transição de um cluster cujo modo de autenticação é API_AND_CONFIG_MAP de aws-auth ConfigMap para a autenticação de entrada de acesso, definida desiredState=ENABLED em cada ambiente AWS Batch computacional direcionado ao cluster. Para fazer a transição de desiredState=DISABLED volta, use cada um deles.

O que AWS Batch cria em seu cluster

AWS Batch cria uma entrada de acesso por cluster que atende às condições acima e, em seguida, associa a política de acesso do AWSBatchClusterPolicy Amazon EKS a essa entrada de acesso. A entrada de acesso é por cluster e não por ambiente de computação, portanto, todos os ambientes AWS Batch computacionais que têm como alvo o mesmo cluster a compartilham.

nota

A exclusão de um ambiente de computação não remove a entrada de acesso, mesmo que seja o último ambiente de AWS Batch computação no cluster. Para remover uma entrada AWS Batch de acesso gerenciado, chame UpdateComputeEnvironment with desiredState=DISABLED em todos os ambientes AWS Batch computacionais direcionados ao cluster antes de excluí-los.

Uma entrada de acesso por si só não é suficiente para executar trabalhos no cluster. Para obter as Kubernetes permissões e o acesso ao nó que você mesmo deve configurar, consulteConfiguração de cluster que você ainda deve fornecer.

Permissões obrigatórias

AWS Batch gerencia a entrada de acesso usando as credenciais da identidade do IAM que chama a UpdateComputeEnvironment operação CreateComputeEnvironment or. Essa identidade deve ter permissão para realizar as seguintes ações do Amazon EKS:

  • eks:DescribeCluster

  • eks:DescribeAccessEntry

  • eks:CreateAccessEntry

  • eks:AssociateAccessPolicy

  • eks:DeleteAccessEntry

Configurar a entrada de acesso

Você pode configurar a entrada de acesso em um ambiente computacional por meio do eksConfiguration.accessEntry campo da UpdateComputeEnvironment API CreateComputeEnvironment ou.

AWS CLI

Habilite uma entrada AWS Batch de acesso gerenciado ao criar um ambiente computacional

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

Habilitar uma entrada AWS Batch de acesso gerenciado em um ambiente computacional existente

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

Verifique o status

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

A resposta inclui o desiredState que você especificou e o observadostatus:

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

AWS Batch retorna accessEntry.status para todos os ambientes computacionais do Amazon EKS e retorna desiredState somente se você o tiver configurado. Um ambiente computacional em que você nunca especificou accessEntry retornos status sozinho.

Para parar AWS Batch de gerenciar a entrada de acesso, desiredState defina como DISABLED em vez disso. Antes disso, reviewInteração com o AuthenticationMode do cluster: DISABLED é rejeitado em um cluster cujo modo de autenticação éAPI, e em um cluster cujo modo de autenticação é API_AND_CONFIG_MAP a entrada de acesso é removido somente após cada ambiente AWS Batch computacional direcionado ao DISABLED cluster ser definido como.

API

Use o eksConfiguration.accessEntry objeto em sua CreateComputeEnvironment UpdateComputeEnvironment solicitação.

Crie um ambiente computacional com uma entrada de AWS Batch acesso gerenciada

Inclua accessEntry no corpo da solicitação:

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

Atualizar a entrada de acesso em um ambiente computacional existente

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

Para obter mais informações, consulte EksAccessEntry CreateComputeEnvironment, e UpdateComputeEnvironment na Referência da AWS Batch API.

Configuração de cluster que você ainda deve fornecer

Uma entrada de acesso controla somente como se AWS Batch autentica em seu cluster. Ele não concede AWS Batch as Kubernetes permissões necessárias para executar seus trabalhos e não permite que as instâncias executadas se AWS Batch juntem ao cluster. Independentemente do mecanismo de autenticação usado, você ainda deve configurar as duas opções a seguir.

Importante

Depois que uma entrada AWS Batch de acesso gerenciado é criada para a função AWS Batch vinculada ao serviço em um cluster (accessEntry.status=ACTIVE), ela tem precedência sobre a aws-auth ConfigMap configuração da função. As ConfigMap entradas da função AWS Batch vinculada ao serviço não são usadas e, em vez disso, são AWS Batch autenticadas usando a entrada de acesso. Para retornar à ConfigMap autenticação, defina desiredState=DISABLED em todos os ambientes computacionais direcionados ao cluster. Isso remove a entrada de acesso AWS Batch-managed.

Kubernetespermissões para o AWS Batch namespace

AWS Batch precisa de Kubernetes permissões para criar e gerenciar pods no namespace que você especificar. eksConfiguration.kubernetesNamespace Crie o namespace e configure essas permissões usando um dos seguintes métodos, dependendo da sua abordagem de autenticação:

  • Associação de políticas de acesso (necessária desiredState=ENABLED na entrada de acessostatus=ACTIVE) — Quando você configura todos os ambientes computacionais direcionados a um cluster, AWS Batch cria uma entrada de acesso no nível do cluster. AWSBatchClusterPolicy Em seguida, você deve associar o namespace com escopo para conceder AWS Batch permissão AWSBatchNamespacePolicy para criar e gerenciar pods.

    Depois que a entrada de acesso chegarstatus=ACTIVE, associe a política de namespace usando: 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-namespaceSubstitua pelo valor que você especificou emeksConfiguration.kubernetesNamespace.

    Importante

    Sem a associação de políticas com escopo de namespace, os trabalhos permanecerão sem status. RUNNABLE A política em nível de cluster por si só não concede permissões de gerenciamento de pods.

  • Kubernetesfunções e associações de função (ao entrar no acessostatus=INACTIVE) — Se a entrada de acesso AWS Batch-managed não estiver ativa, crie as Kubernetes funções e as associações de função que concedem essas permissões, conforme descrito em. Etapa 2: Prepare seu cluster Amazon EKS para AWS Batch Você faz isso uma vez para cada cluster.

    nota

    Quando uma entrada AWS Batch de acesso gerenciado está ativa (status=ACTIVE), as funções do Kubernetes RBAC são ignoradas. Em vez disso, você deve usar o método de associação de políticas de acesso.

AWS Batch não cria esses recursos para você, e uma entrada AWS Batch de acesso gerenciado não os substitui. Se estiverem ausentes, o ambiente de computação ainda pode se transformar VALID enquanto seus trabalhos não iniciam.

Acesso ao cluster para a função de instância do nó

As instâncias que são AWS Batch iniciadas se juntam ao cluster usando o perfil de instância que você especifica emcomputeResources.instanceRole. Essa função precisa de seu próprio acesso ao cluster, que é separado da entrada de acesso AWS Batch gerenciado e que AWS Batch não é configurado.

O método de configuração depende do seu clusterauthenticationMode:

  • Em clusters cujo authenticationMode é CONFIG_MAP — Você deve usar aws-auth ConfigMap o. As entradas de acesso não são suportadas nesses clusters.

  • Em clusters cujo authenticationMode é API_AND_CONFIG_MAP — A função da instância do nó pode ser autenticada usando a aws-auth ConfigMap ou uma entrada de acesso. Se a função da instância já estiver mapeada no ConfigMap, os nós se unirão com sucesso sem criar uma entrada de acesso para a função.

  • Em clusters cujo authenticationMode é API — Você deve criar uma entrada de acesso para a função da instância do nó. O não aws-auth ConfigMap é usado para autenticação nesses clusters.

Para criar uma entrada de acesso para a função da instância do nó, use 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 obter mais informações, consulte Criação de entradas de acesso no Guia do usuário do Amazon EKS .

Importante

Sem o acesso adequado ao cluster para a função de instância do nó, as instâncias do EC2 não podem se juntar ao cluster. Os trabalhos permanecerão no RUNNABLE estado porque nenhuma capacidade é registrada no cluster.

Escolhendo entre as entradas aws-auth ConfigMap e access

A autenticação de entrada de acesso é o caminho recomendado para novos AWS Batch ambientes computacionais do Amazon EKS e oferece as seguintes vantagens:

  • Elimina a necessidade de editar manualmente o aws-auth ConfigMap para conceder AWS Batch acesso ao cluster.

  • Fornece um API-driven registro auditável dos diretores que têm acesso ao cluster.

  • É necessário para clusters cujos authenticationMode isAPI, que não suportam aws-auth ConfigMap o.

Se as do seu cluster authenticationMode estiveremCONFIG_MAP, as entradas de acesso não estão disponíveis e são AWS Batch autenticadas por meio do aws-auth ConfigMap. Para instruções, consulte Verifique se o aws-auth ConfigMap está configurado corretamente.