

 **Ajudar a melhorar esta página** 

Para contribuir com este guia de usuário, escolha o link **Editar esta página no GitHub**, disponível no painel direito de cada página.

# Configurar pods para acessar serviços da AWS com contas de serviço
<a name="pod-id-configure-pods"></a>

Se um pod precisar acessar os serviços da AWS, você deverá configurá-lo para usar uma conta de serviço do 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 os serviços da AWS.
+ Um cluster existente. Se não tiver um, você poderá criá-lo usando um dos guias em [Começar a usar o Amazon EKS](getting-started.md).
+ Uma associação existente entre a conta de serviço do Kubernetes e a Identidade de Pods do EKS 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 os pods tenham para usar os 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](pod-id-association.md).
+ A versão mais recente da 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`. Os gerenciadores de pacotes, como `yum`, `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](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-install.html) e [Configuração rápida com aws configure](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-quickstart.html#cli-configure-quickstart-config), 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á-lo, consulte [Instalar a AWS CLI no seu diretório pessoal](https://docs.aws.amazon.com/cloudshell/latest/userguide/vm-specs.html#install-cli-software), 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 a mesma ou até uma versão secundária anterior ou posterior à versão do Kubernetes do seu cluster. Por exemplo, se a versão do cluster for a `1.29`, você poderá usar o `kubectl` versão `1.28`, `1.29` ou `1.30` com ele. Para instalar ou atualizar o `kubectl`, consulte [Configurar o `kubectl` e o `eksctl`](install-kubectl.md).
+ Um arquivo `kubectl` `config` existente que contém a configuração do seu cluster. Para criar um arquivo `kubectl` `config`, consulte [Conecte o kubectl a um cluster de EKS criando um arquivo kubeconfig](create-kubeconfig.md).

  1. 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 os valores de exemplo por seus próprios valores.

     ```
     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
     ```

  1. Implante o manifesto no seu cluster.

     ```
     kubectl apply -f my-deployment.yaml
     ```

  1. Verifique se as variáveis de ambiente necessárias existem para o pod.

     1. Visualize os pods que foram implantados na implantação da etapa anterior.

        ```
        kubectl get pods | grep my-app
        ```

        Veja abaixo um exemplo de saída.

        ```
        my-app-6f4dfff6cb-76cv9   1/1     Running   0          3m28s
        ```

     1. 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 abaixo um exemplo de saída.

        ```
        AWS_CONTAINER_AUTHORIZATION_TOKEN_FILE:  /var/run/secrets/pods.eks.amazonaws.com/serviceaccount/eks-pod-identity-token
        ```

  1. Verifique se os pods podem interagir com os serviços da AWS usando as permissões que você atribuiu na política do IAM anexada ao seu perfil.
**nota**  
Quando um pod usa as 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 ao [perfil do IAM do nó do Amazon EKS](create-node-role.md), o pod ainda terá acesso a elas. Para obter mais informações, consulte [Restringir o acesso ao perfil de instância atribuído ao nó de processamento](https://aws.github.io/aws-eks-best-practices/security/docs/iam/#restrict-access-to-the-instance-profile-assigned-to-the-worker-node).

     Se os pods não conseguirem interagir com os serviços conforme o esperado, conclua as etapas a seguir para verificar se tudo está configurado corretamente.

     1. Verifique se os pods usam uma versão do AWS SDK que permita assumir um perfil do IAM por meio de uma associação da Identidade de Pods do EKS. Para obter mais informações, consulte [Usar identidade de pods com o AWS SDK](pod-id-minimum-sdk.md).

     1. Confirme se a implantação está usando a conta de serviço.

        ```
        kubectl describe deployment my-app | grep "Service Account"
        ```

        Veja abaixo um exemplo de saída.

        ```
        Service Account:  my-service-account
        ```