Ajudar a melhorar esta página
Quer contribuir para este guia do usuário? Role até o final desta página e selecione Editar esta página no GitHub. Suas contribuições ajudarão a tornar nosso guia do usuário melhor para todos.
Configurar pods para acessar serviços da AWS com contas de serviço
Se um Pod precisar acessar os serviços da AWS, então você deverá configurá-lo para usar uma conta de serviço Kubernetes. A conta de serviço deve estar associada a um perfil do AWS Identity and Access Management (IAM) que tenha permissões para acessar serviços da AWS.
Pré-requisitos
-
Um cluster existente. Se você não tiver, poderá criar um, usando a CLI ou o console do Começar a usar o Amazon EKS.
-
Uma associação entre a conta de serviço do Kubernetes e o EKS Pod Identity existente que associa a conta de serviço a um perfil do IAM. O perfil deve ter uma política do IAM associada que contenha as permissões que você deseja que seus Pods tenham para usar serviços da AWS. Para obter mais informações sobre como criar a conta de serviço e como configurá-la, consulte Atribuir um perfil do IAM a uma conta de serviço do Kubernetes.
-
A versão mais recente do AWS CLI instalada e configurada em seu dispositivo ou no AWS CloudShell. É possível verificar sua versão atual com
aws --version | cut -d / -f2 | cut -d ' ' -f1
. Gerenciadores de pacotes, comoyum
,apt-get
ou Homebrew para macOS, geralmente estão várias versões atrás da versão mais recente da AWS CLI. Para instalar a versão mais recente, consulte Instalar, atualizar e desinstalar a AWS CLI e Configuração rápida com oaws configure
no Guia do usuário da AWS Command Line Interface. A versão da AWS CLI instalada no AWS CloudShell também pode estar várias versões atrás da versão mais recente. Para atualizá-la, consulte Instalar a AWS CLI no diretório base no Guia do usuário do AWS CloudShell. -
A ferramenta da linha de comando
kubectl
está instalada no seu dispositivo ou no AWS CloudShell. A versão pode ser idêntica ou até uma versão secundária anterior ou posterior à versão Kubernetes do seu cluster. Por exemplo, se a versão do cluster for a1.29
, você poderá usar okubectl
versão1.28
,1.29
ou1.30
com ele. Para instalar ou atualizar okubectl
, consulte Configurar o kubectl e o eksctl. -
Um arquivo
kubectl
config
existente que contém a configuração do seu cluster. Para criar um arquivokubectl
config
, consulte Conectar o kubectl a um cluster do EKS criando um arquivo kubeconfig.
Para configurar um Pod para usar uma conta de serviço
-
Use o comando a seguir para criar um manifesto de implantação com o qual é possível implantar um Pod para confirmar a configuração. Substitua
pelos seus próprios valores.example values
cat >
my-deployment.yaml
<<EOF apiVersion: apps/v1 kind: Deployment metadata: name:my-app
spec: selector: matchLabels: app:my-app
template: metadata: labels: app:my-app
spec: serviceAccountName:my-service-account
containers: - name:my-app
image:public.ecr.aws/nginx/nginx:X.XX
EOF -
Implante o manifesto no seu cluster.
kubectl apply -f
my-deployment.yaml
-
Confirme se as variáveis de ambiente necessárias existem para seu Pod.
-
Visualize os Pods que foram implantados na implantação da etapa anterior.
kubectl get pods | grep
my-app
Veja um exemplo de saída abaixo.
my-app
-6f4dfff6cb-76cv9
1/1 Running 0 3m28s -
Verifique se o Pod tem um arquivo de token de conta de serviço montado.
kubectl describe pod
my-app
-6f4dfff6cb-76cv9
| grep AWS_CONTAINER_AUTHORIZATION_TOKEN_FILE:Veja um exemplo de saída abaixo.
AWS_CONTAINER_AUTHORIZATION_TOKEN_FILE: /var/run/secrets/pods.eks.amazonaws.com/serviceaccount/eks-pod-identity-token
-
-
Confirme que seus Pods possam interagir com os serviços da AWS usando as permissões que você atribuiu na política do IAM associada ao seu perfil.
nota
Quando um Pod usa credenciais da AWS de um perfil do IAM associado a uma conta de serviço, a AWS CLI ou outros SDKs nos contêineres desse Pod usam as credenciais fornecidas por esse perfil. Se você não restringir o acesso às credenciais fornecidas à perfil do IAM do nó do Amazon EKS, o Pod ainda terá acesso a essas credenciais. Para obter mais informações, consulte Restringir o acesso ao perfil da instância atribuído ao nó de processamento
. Se os seus Pods não conseguirem interagir com os serviços conforme o esperado, conclua as etapas a seguir para confirmar se tudo está configurado corretamente.
-
Confirme que seus Pods usam uma versão do AWS SDK que permita assumir um perfil do IAM por meio de uma associação ao EKS Pod Identity. Para ter mais informações, consulte Usar identidade de pods com o AWS SDK.
-
Confirme se a implantação está usando a conta de serviço.
kubectl describe deployment
my-app
| grep "Service Account"Veja um exemplo de saída abaixo.
Service Account:
my-service-account
-