Tutorial: Criar e montar um segredo em um pod do Amazon EKS - AWS Secrets Manager

Tutorial: Criar e montar um segredo em um pod do Amazon EKS

Neste tutorial, você cria um exemplo de segredo no Secrets Manager e, em seguida, monta o segredo em um pod do Amazon EKS e o implanta.

Antes de começar, instale o ASCP: Instalar a aplicação.

Para criar e montar um segredo

  1. Defina a Região da AWS e o nome do cluster como variáveis de shell para que você possa usá-los em comandos bash. Em <REGION>, insira a Região da AWS na qual o cluster do Amazon EKS é executado. Em <CLUSTERNAME>, insira um nome para o cluster.

    REGION=<REGION> CLUSTERNAME=<CLUSTERNAME>
  2. Crie um segredo de teste. Para mais informações, consulte Criar e gerenciar segredos com o AWS Secrets Manager.

    aws --region "$REGION" secretsmanager create-secret --name MySecret --secret-string '{"username":"lijuan", "password":"hunter2"}'
  3. Crie uma política de recursos para o pod que limite o acesso ao segredo que você criou na etapa anterior. Em<SECRETARN>, use o ARN do segredo. Salve o ARN da política em uma variável de shell.

    POLICY_ARN=$(aws --region "$REGION" --query Policy.Arn --output text iam create-policy --policy-name nginx-deployment-policy --policy-document '{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": ["secretsmanager:GetSecretValue", "secretsmanager:DescribeSecret"], "Resource": ["<SECRETARN>"] } ] }')
  4. Crie um provedor IAM OIDC para o cluster, se você ainda não tiver um. Para obter mais informações, consulte Criar um provedor IAM OIDC para o cluster.

    eksctl utils associate-iam-oidc-provider --region="$REGION" --cluster="$CLUSTERNAME" --approve # Only run this once
  5. Crie a conta de serviço que o pod usa e associe a política de recursos criada na etapa 3 a esta conta de serviço. Para este tutorial, use nginx-deployment-sa para nome da conta de serviço. Para obter mais informações, consulte Criar uma função e uma política do IAM para uma conta de serviço.

    eksctl create iamserviceaccount --name nginx-deployment-sa --region="$REGION" --cluster "$CLUSTERNAME" --attach-policy-arn "$POLICY_ARN" --approve --override-existing-serviceaccounts
  6. Crie o SecretProviderClass para especificar qual segredo será montado no pod. O comando a seguir usa ExampleSecretProviderClass.yaml no diretório Exemplos de repositório do GitHub do ASCP para montar o segredo criado na etapa 1. Para obter informações sobre a criação do seu próprio SecretProviderClass, consulte SecretProviderClass.

    kubectl apply -f https://raw.githubusercontent.com/aws/secrets-store-csi-driver-provider-aws/main/examples/ExampleSecretProviderClass.yaml
  7. Implante seu pod. O comando a seguir usa ExampleDeployment.yaml no diretório Exemplos de repositório do GitHub do ASCP para montar o segredo no /mnt/secrets-store no pod.

    kubectl apply -f https://raw.githubusercontent.com/aws/secrets-store-csi-driver-provider-aws/main/examples/ExampleDeployment.yaml
  8. Para verificar se o segredo foi montado corretamente, use o comando a seguir e confirme se o valor do segredo é exibido.

    kubectl exec -it $(kubectl get pods | awk '/nginx-deployment/{print $1}' | head -1) cat /mnt/secrets-store/MySecret; echo

    O valor do segredo é exibido.

    {"username":"lijuan", "password":"hunter2"}

Solução de problemas

Você pode visualizar a maioria dos erros ao descrever a implantação do pod.

Para ver mensagens de erro para o contêiner

  1. Obtenha uma lista de nomes de pods com o comando a seguir. Se você não estiver usando o namespace padrão, use -n <NAMESPACE>.

    kubectl get pods
  2. Para descrever o pod, no comando a seguir, para<PODID>use o ID do pod dos pods encontrados na etapa anterior. Se você não estiver usando o namespace padrão, use -n <NAMESPACE>.

    kubectl describe pod/<PODID>

Para ver erros para o ASCP

  • Para encontrar mais informações nos logs do provedor, no comando a seguir, em <PODID>, use o ID do pod csi-secrets-store-provedor-aws.

    kubectl -n kube-system get pods kubectl -n kube-system logs pod/<PODID>