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á.
Habilitação do acesso ao cluster para o Amazon EMR no EKS
As seções a seguir mostram algumas maneiras de habilitar o acesso ao cluster. A primeira é usando o gerenciamento de acesso ao cluster (CAM) do Amazon EKS e a segunda mostra como executar etapas manuais para habilitar o acesso ao cluster.
Como habilitar o acesso ao cluster usando a entrada de acesso do EKS (recomendado)
nota
O aws-auth
ConfigMap está obsoleto. O método recomendado para gerenciar o acesso ao Kubernetes APIs é o Access Entries.
O Amazon EMR é integrado ao gerenciamento de acesso ao cluster (CAM) do Amazon EKS, para que você possa automatizar a configuração das políticas AuthN e AuthZ necessárias para executar trabalhos Spark do Amazon EMR em namespaces de clusters do Amazon EKS. Quando você cria um cluster virtual usando um namespace de cluster do Amazon EKS, o Amazon EMR configura automaticamente todas as permissões necessárias, para que você não precise adicionar nenhuma etapa extra aos fluxos de trabalho atuais.
nota
A integração do Amazon EMR com o CAM do Amazon EKS é compatível somente com novos clusters virtuais do Amazon EMR no EKS. Não é possível migrar clusters virtuais existentes para usar essa integração.
Pré-requisitos
-
Verifique se você está executando a versão 2.15.3 ou superior do AWS CLI
-
O cluster do Amazon EKS deve estar na versão 1.23 ou posterior.
Configuração
Para configurar a integração entre o Amazon EMR e as operações de AccessEntry API do Amazon EKS, certifique-se de ter concluído os seguintes itens:
-
Verifique se
authenticationMode
do cluster do Amazon EKS está configurado comoAPI_AND_CONFIG_MAP
.aws eks describe-cluster --name
<eks-cluster-name>
Se ainda não estiver, defina
authenticationMode
comoAPI_AND_CONFIG_MAP
.aws eks update-cluster-config --name
<eks-cluster-name>
--access-config authenticationMode=API_AND_CONFIG_MAPPara obter mais informações sobre modos de autenticação, consulte Cluster authentication modes.
-
Certifique-se de que o perfil do IAM que você está usando para executar
CreateVirtualCluster
e as operações da APIDeleteVirtualCluster
também tenha as seguintes permissões:{ "Effect": "Allow", "Action": [ "eks:CreateAccessEntry" ], "Resource": "arn:
<AWS_PARTITION>
:eks:<AWS_REGION>
:<AWS_ACCOUNT_ID>
:cluster/<EKS_CLUSTER_NAME>
" }, { "Effect": "Allow", "Action": [ "eks:DescribeAccessEntry", "eks:DeleteAccessEntry", "eks:ListAssociatedAccessPolicies", "eks:AssociateAccessPolicy", "eks:DisassociateAccessPolicy" ], "Resource": "arn:<AWS_PARTITION>
:eks:<AWS_REGION>:<AWS_ACCOUNT_ID>:access-entry/<EKS_CLUSTER_NAME>/role/<AWS_ACCOUNT_ID>/AWSServiceRoleForAmazonEMRContainers/*" }
Conceitos e terminologia
A seguir está uma lista de terminologias e conceitos relacionados ao CAM do Amazon EKS.
-
Cluster virtual (VC): representação lógica do namespace criado no Amazon EKS. É um link 1:1 para um namespace de cluster do Amazon EKS. Você pode usá-lo para executar workloads do Amazon EMR em um cluster do Amazon EKS dentro do namespace especificado.
-
Namespace: mecanismo para isolar grupos de recursos em um único cluster do EKS.
-
Política de acesso: permissões que concedem acesso e ações a um perfil do IAM em um cluster do EKS.
-
Entrada de acesso: uma entrada criada com um ARN de perfil. Você pode vincular a entrada de acesso a uma política de acesso para atribuir permissões específicas no cluster do Amazon EKS.
-
Cluster virtual integrado de entrada de acesso do EKS: o cluster virtual criado usando operações de API de entrada de acesso do Amazon EKS.
Como habilitar o acesso ao cluster usando aws-auth
Você deve permitir o acesso do Amazon EMR no EKS a um namespace específico em seu cluster ao executar as seguintes ações: criar um perfil do Kubernetes, associar o perfil a um usuário do Kubernetes e mapear o usuário do Kubernetes com o perfil vinculado ao serviço AWSServiceRoleForAmazonEMRContainers
. Essas ações são automatizadas em eksctl
quando o comando de mapeamento de identidade do IAM é usado com emr-containers
como nome do serviço. Você pode executar essas operações facilmente ao usar o comando apresentado a seguir.
eksctl create iamidentitymapping \ --cluster
my_eks_cluster
\ --namespacekubernetes_namespace
\ --service-name "emr-containers"
my_eks_cluster
Substitua pelo nome do seu cluster Amazon EKS e kubernetes_namespace
substitua pelo namespace Kubernetes criado para executar cargas de trabalho do Amazon EMR.
Importante
Você deve fazer o download do eksctl mais recente usando a etapa anterior Configuração do kubectl e eksctl para usar esta funcionalidade.
Etapas manuais para habilitar o acesso ao cluster para o Amazon EMR no EKS
Você também pode usar as etapas manuais apresentadas a seguir para habilitar o acesso ao cluster para o Amazon EMR no EKS.
-
Crie um perfil do Kubernetes em um namespace específico
-
Crie uma associação de perfil do Kubernetes com escopo definido para o namespace
Execute o comando apresentado a seguir para criar uma associação de perfil do Kubernetes no namespace especificado. Essa associação de perfil concede as permissões definidas no perfil criado na etapa anterior a um usuário chamado
emr-containers
. Esse usuário identifica perfis vinculados ao serviço para o Amazon EMR no EKS e, dessa forma, permite que o Amazon EMR no EKS execute ações conforme definido pelo perfil criado.namespace=
my-namespace
cat - <<EOF | kubectl apply -f - --namespace "${namespace}" apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: emr-containers namespace: ${namespace} subjects: - kind: User name: emr-containers apiGroup: rbac.authorization.k8s.io roleRef: kind: Role name: emr-containers apiGroup: rbac.authorization.k8s.io EOF -
Atualize mapa de configuração
aws-auth
do KubernetesVocê pode usar uma das opções apresentadas a seguir para mapear o perfil vinculado ao serviço do Amazon EMR no EKS com o usuário
emr-containers
que foi associado ao perfil do Kubernetes na etapa anterior.Opção 1: usar o
eksctl
Execute o comando
eksctl
apresentado a seguir para mapear o perfil vinculado ao serviço do Amazon EMR no EKS com o usuárioemr-containers
.eksctl create iamidentitymapping \ --cluster
my-cluster-name
\ --arn "arn:aws:iam::my-account-id
:role/AWSServiceRoleForAmazonEMRContainers" \ --username emr-containersOpção 2: sem usar o eksctl
-
Execute o comando apresentado a seguir para abrir o mapa de configuração
aws-auth
no editor de texto.kubectl edit -n kube-system configmap/aws-auth
nota
Se você receber um erro informando
Error from server (NotFound): configmaps "aws-auth" not found
, consulte as etapas em Adicionar funções de usuário no Guia do usuário do Amazon EKS para aplicar o estoque ConfigMap. -
Adicione detalhes do perfil vinculado ao serviço do Amazon EMR no EKS à seção
mapRoles
doConfigMap
, emdata
. Adicione essa seção se ela ainda não existir no arquivo. A seçãomapRoles
atualizada em dados deve ser semelhante ao exemplo a seguir.apiVersion: v1 data: mapRoles: | - rolearn: arn:aws:iam::<your-account-id>:role/AWSServiceRoleForAmazonEMRContainers username: emr-containers - ... <other previously existing role entries, if there's any>.
-
Salve o arquivo e saia do seu editor de texto.
-