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á.
Configuração de permissões de acesso com perfis do IAM para contas de serviço (IRSA)
Por padrão, o driver e os executores do servidor Livy e do aplicativo Spark não têm acesso aos recursos. AWS A conta de serviço do servidor e a conta de serviço do Spark controlam o acesso aos AWS recursos do servidor Livy e dos pods do aplicativo Spark. Para conceder acesso, você precisa mapear as contas de serviço com uma função do IAM que tenha as AWS permissões necessárias.
Você pode configurar o mapeamento do IRSA antes de instalar o Apache Livy, durante a instalação ou depois de concluir a instalação.
Configuração do IRSA durante a instalação do Apache Livy (para conta de serviço do servidor)
nota
Esse mapeamento é compatível somente com a conta de serviço do servidor.
-
Verifique se você concluiu a configuração do Apache Livy para Amazon EMR no EKS e está no meio da instalação do Apache Livy com o Amazon EMR no EKS.
-
Crie um namespace do Kubernetes para o servidor do Livy. Neste exemplo, o nome do namespace é
livy-ns. -
Crie uma política do IAM que inclua as permissões Serviços da AWS para as quais você deseja que seus pods acessem. O exemplo a seguir cria uma política do IAM para obter recursos do Amazon S3 para o ponto de entrada do Spark.
cat >my-policy.json<<EOF{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::my-spark-entrypoint-bucket" } ] } EOF aws iam create-policy --policy-namemy-policy--policy-document file://my-policy.json -
Use o comando a seguir para definir seu Conta da AWS ID como uma variável.
account_id=$(aws sts get-caller-identity --query "Account" --output text) -
Defina o provedor de identidade OpenID Connect (OIDC) do cluster como uma variável de ambiente.
oidc_provider=$(aws eks describe-cluster --namemy-cluster--region $AWS_REGION --query "cluster.identity.oidc.issuer" --output text | sed -e "s/^https:\/\///") -
Defina variáveis para o namespace e o nome da conta de serviço. Use seus próprios valores.
export namespace=default export service_account=my-service-account -
Crie um arquivo de política de confiança com o comando a seguir. Se quiser conceder acesso ao perfil a todas as contas de serviço em um namespace, copie o comando a seguir e substitua
StringEqualsporStringLikee$service_accountpor*.cat >trust-relationship.json <<EOF { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Federated": "arn:aws:iam::$account_id:oidc-provider/$oidc_provider" }, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringEquals": { "$oidc_provider:aud": "sts.amazonaws.com", "$oidc_provider:sub": "system:serviceaccount:$namespace:$service_account" } } } ] } EOF -
Crie a função.
aws iam create-role --role-namemy-role--assume-role-policy-document file://trust-relationship.json --description "my-role-description" -
Use o comando de instalação do Helm a seguir para configurar o
serviceAccount.executionRoleArnpara mapear o IRSA. Confira a seguir um exemplo do comando de instalação do Helm. Você pode encontrar oECR-registry-accountvalor correspondente para suas contas Região da AWS de registro do Amazon ECR por região.helm install livy-demo \ oci://895885662937.dkr.ecr.us-west-2.amazonaws.com/livy \ --version 7.10.0 \ --namespacelivy-ns\ --set image=ECR-registry-account.dkr.ecr.region-id.amazonaws.com/livy/emr-7.10.0:latest \ --set sparkNamespace=spark-ns\ --set serviceAccount.executionRoleArn=arn:aws:iam::123456789012:role/my-role
Mapeamento do IRSA para uma conta de serviço do Spark
Antes de mapear o IRSA para uma conta de serviço do Spark, conclua os seguintes itens:
-
Verifique se você concluiu a configuração do Apache Livy para Amazon EMR no EKS e está no meio da instalação do Apache Livy com o Amazon EMR no EKS.
-
Você deve ter um provedor OpenID Connect (OIDC) existente do IAM para o cluster. Para verificar se você já tem um provedor ou saber como criar um, consulte Criar um provedor OIDC do IAM para o cluster.
-
Certifique-se de ter instalado a versão 0.171.0 ou posterior da CLI do
eksctlou o AWS CloudShell. Para instalar ou atualizar oeksctl, consulte Instalaçãona documentação do eksctl.
Siga estas etapas para mapear o IRSA à conta de serviço do Spark:
-
Use o comando a seguir para obter a conta de serviço do Spark.
SPARK_NAMESPACE=<spark-ns>LIVY_APP_NAME=<livy-app-name>kubectl --namespace $SPARK_NAMESPACE describe sa -l "app.kubernetes.io/instance=$LIVY_APP_NAME" | awk '/^Name:/ {print $2}' -
Defina variáveis para o namespace e o nome da conta de serviço.
export namespace=defaultexport service_account=my-service-account -
Use o comando a seguir para criar um arquivo de política de confiança para o perfil do IAM. O exemplo a seguir dá permissão a todas as contas de serviço dentro do namespace para usar o perfil. Para fazer isso, substitua
StringEqualsporStringLikee$service_accountpor *.cat >trust-relationship.json <<EOF { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Federated": "arn:aws:iam::$account_id:oidc-provider/$oidc_provider" }, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringEquals": { "$oidc_provider:aud": "sts.amazonaws.com", "$oidc_provider:sub": "system:serviceaccount:$namespace:$service_account" } } } ] } EOF -
Crie a função.
aws iam create-role --role-namemy-role--assume-role-policy-document file://trust-relationship.json--description "my-role-description" -
Mapeie o servidor ou a conta de serviço do Spark com o comando
eksctla seguir. Use seus próprios valores.eksctl create iamserviceaccount --namespark-sa\ --namespace spark-namespace --clusterlivy-eks-cluster\ --attach-role-arn arn:aws:iam::0123456789012:role/my-role\ --approve --override-existing-serviceaccounts