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 o endpoint do AWS Security Token Service para uma conta de serviço
Se você estiver usando uma conta de serviço do Kubernetes com o Perfis do IAM para contas de serviço, poderá configurar o tipo de endpoint do AWS Security Token Service usado pela conta de serviço se a versão do cluster e da plataforma forem as versões listadas na tabela a seguir ou versões posteriores. Se a versão do Kubernetes ou da plataforma forem anteriores às listadas na tabela, as contas de serviço só poderão usar o endpoint global.
Versão do Kubernetes | Versão da plataforma | Tipo de endpoint padrão |
---|---|---|
1.30 |
eks.2 |
Regional |
1.29 |
eks.1 |
Regional |
1.28 |
eks.1 |
Regional |
1.27 |
eks.1 |
Regional |
1.26 |
eks.1 |
Regional |
1.25 |
eks.1 |
Regional |
1.24 |
eks.2 |
Regional |
1.23 |
eks.1 |
Regional |
A AWS recomenda usar os endpoints AWS STS regionais em vez do endpoint global. Isso reduz a latência, fornece redundância integrada e aumenta a validade do token da sessão. O AWS Security Token Service deve estar ativo na Região da AWS em que o Pod estiver em execução. Além disso, sua aplicação deve ter redundância incorporada para uma Região da AWS diferente em caso de falha de serviço na Região da AWS. Para obter mais informações, consulte Gerenciar o AWS STS em uma Região da AWS no Guia do usuário do IAM.
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.
-
Um provedor de OIDC do IAM existente para o cluster. Para ter mais informações, consulte Criar um provedor OIDC do IAM para o cluster.
-
Uma conta de serviço do Kubernetes existente configurada para uso com o recurso IAM para contas de serviço no Amazon EKS.
Para configurar o tipo de endpoint usado por uma conta de serviço do Kubernetes
Todos os exemplos a seguir usam a conta de serviço do Kubernetes do aws-node
usada pelo plug-in Amazon VPC CNI. É possível substituir os
por suas próprias contas de serviço, Pods, namespaces e outros recursos.example values
-
Selecione um Pod que use uma conta de serviço cujo endpoint você queira alterar. Determine em quais Região da AWS o Pod será executado. Substitua
pelo nome do Pod eaws-node-6mfgv
pelo namespace do Pod.kube-system
kubectl describe pod
aws-node-6mfgv
-nkube-system
|grep Node:Veja um exemplo de saída abaixo.
ip-192-168-79-166.us-west-2/192.168.79.166
Na saída anterior, o Pod está sendo executado em um nó na Região da AWS us-west-2.
-
Determine o tipo de endpoint que a conta de serviço do Pod's está usando.
kubectl describe pod
aws-node-6mfgv
-nkube-system
|grep AWS_STS_REGIONAL_ENDPOINTSVeja um exemplo de saída abaixo.
AWS_STS_REGIONAL_ENDPOINTS:
regional
Se o endpoint atual for global,
global
será retornado na saída. Se nenhuma saída for retornada, significa que tipo de endpoint padrão está em uso e não foi substituído. -
Se a versão do cluster ou plataforma for a mesma ou posterior à da tabela, você poderá alterar o tipo de endpoint utilizado pela conta de serviço do tipo padrão para um tipo diferente, usando um dos comandos a seguir. Substitua
pelo nome da conta de serviço eaws-node
pelo namespace da conta de serviço.kube-system
-
Se o tipo de endpoint padrão ou atual for global e você quiser modificá-lo para regional:
kubectl annotate serviceaccount -n
kube-system
aws-node
eks.amazonaws.com/sts-regional-endpoints=trueSe estiver usando Perfis do IAM para contas de serviço para gerar URLs do S3 pré-assinados na aplicação em execução em contêineres de Pods, o formato do URL para endpoints regionais será semelhante ao seguinte exemplo:
https://bucket.s3.us-west-2.amazonaws.com/path?...&X-Amz-Credential=
your-access-key-id
/date
/us-west-2/s3/aws4_request&... -
Se o tipo de endpoint padrão ou atual for global, e você quiser modificá-lo para regional:
kubectl annotate serviceaccount -n
kube-system
aws-node
eks.amazonaws.com/sts-regional-endpoints=falseSe a aplicação estiver fazendo solicitações explicitamente para endpoints globais do AWS STS e você não substituir o comportamento padrão do uso de endpoints regionais em clusters do Amazon EKS, as solicitações falharão com um erro. Para ter mais informações, consulte Os contêineres do pod recebem o seguinte erro: An error occurred (SignatureDoesNotMatch) when calling the GetCallerIdentity operation: Credential should be scoped to a valid region.
Se você estiver usando Perfis do IAM para contas de serviço para gerar URLs do S3 pré-assinadas na sua aplicação em execução em contêineres de Pods, o formato do URL para endpoints globais será semelhante ao do seguinte exemplo:
https://bucket.s3.amazonaws.com/path?...&X-Amz-Credential=
your-access-key-id
/date
/us-west-2/s3/aws4_request&...
Se você tiver uma automação que espera o URL pré-assinado em um determinado formato, ou se a aplicação ou as dependências downstream que utilizam URLs pré-assinadas tiverem expectativas para a Região da AWS direcionada, faça as alterações necessárias para utilizar o endpoint do AWS STS apropriado.
-
-
Exclua e recrie os Pods existentes associados à conta de serviço para aplicar as variáveis de ambiente de credenciais. O webhook de mutação não as aplica aos Pods que já estão em execução. É possível substituir
,Pods
ekube-system
pelas informações dos Pods para os quais você definiu a anotação.-l k8s-app=aws-node
kubectl delete
Pods
-nkube-system
-l
k8s-app=aws-node
-
Confirme se todos os Pods foram reiniciados.
kubectl get
Pods
-nkube-system
-l k8s-app=aws-node
-
Visualize as variáveis de ambiente de um dos Pods. Verifique se o valor
AWS_STS_REGIONAL_ENDPOINTS
é o que você o definiu em uma etapa anterior.kubectl describe pod
aws-node-kzbtr
-nkube-system
|grep AWS_STS_REGIONAL_ENDPOINTSVeja um exemplo de saída abaixo.
AWS_STS_REGIONAL_ENDPOINTS=
regional