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á.
Configure o cluster do Amazon EKS e crie os recursos do IAM necessários para permitir que uma conta de serviço do Amazon EKS se conecte à sua tabela do Amazon Keyspaces
-
Crie um provedor Open ID Connect (OIDC) para o cluster do Amazon EKS. Isso é necessário para usar perfis do IAM em contas de serviço. Para obter mais informações sobre provedores OIDC e como criá-los, consulte Criação de um provedor IAM OIDC para seu cluster no Guia do usuário do Amazon EKS.
Crie o provedor de identidade OIDC do IAM para o cluster com o comando a seguir. Este exemplo pressupõe que o nome do cluster
my-eks-cluster
. Se você tiver um cluster com um nome diferente, lembre-se de atualizar o nome em todos os comandos futuros.eksctl utils associate-iam-oidc-provider --cluster
my-eks-cluster
--approveConfirme se o provedor de identidade OIDC foi registrado com IAM com o comando a seguir.
aws iam list-open-id-connect-providers --region
aws-region
A saída deve ser semelhante a esta. Anote o nome do recurso da Amazon (ARN) no OIDC, será necessário na próxima etapa ao criar uma política de confiança para a conta de serviço.
{ "OpenIDConnectProviderList": [ .. { "Arn": "arn:aws:iam::
111122223333
:oidc-provider/oidc.eks.aws-region
.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE
" } ] }
-
Crie uma conta de serviço para o cluster do Amazon EKS. Contas de serviço fornecem uma identidade para processos executados em um Pod. Um pod é o menor e mais simples objeto Kubernetes que você pode usar para implantar um aplicativo em contêiner. Em seguida, crie um perfil do IAM que a conta de serviço possa assumir para obter permissões para recursos. Você pode acessar qualquer serviço AWS de um pod que tenha sido configurado para usar uma conta de serviço que possa assumir um perfil do IAM com permissões de acesso a esse serviço.
Crie um novo namespace para a conta de serviço. Um namespace ajuda a isolar os recursos de cluster criados para este tutorial. Você pode criar um namespace usando o seguinte comando:
kubectl create namespace
my-eks-namespace
Para usar um namespace personalizado, você precisa associá-lo a um perfil do Fargate. O código a seguir é um exemplo disso.
eksctl create fargateprofile \ --cluster
my-eks-cluster
\ --namemy-fargate-profile
\ --namespacemy-eks-namespace
\ --labels*
=*
Crie uma conta de serviço com o nome
my-eks-serviceaccount
no namespacemy-eks-namespace
do seu cluster Amazon EKS usando o comando a seguir.cat >my-serviceaccount.yaml <<EOF apiVersion: v1 kind: ServiceAccount metadata: name: my-eks-serviceaccount namespace: my-eks-namespace EOF kubectl apply -f my-serviceaccount.yaml
Execute o comando a seguir para criar um arquivo de política de confiança que instrua o perfil do IAM a confiar em sua conta de serviço. Essa relação de confiança é necessária antes que uma entidade principal possa assumir uma função. Você precisa realizar as seguintes edições no arquivo:
Para o
Principal
, insira o ARN que o IAM retornou ao comandolist-open-id-connect-providers
. O ARN contém o número da sua conta e a região.Na declaração
condition
, substitua o Região da AWS e o ID do OIDC.Confirme se o nome e o namespace da conta de serviço estão corretos.
É necessário anexar o arquivo de política de confiança na etapa a seguir ao criar o perfil do IAM.
cat >trust-relationship.json <<EOF { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Federated": "arn:aws:iam::
111122223333
:oidc-provider/oidc.eks.aws-region
.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE
" }, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringEquals": { "oidc.eks.aws-region
.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE
:sub": "system:serviceaccount:my-eks-namespace
:my-eks-serviceaccount
", "oidc.eks.aws-region
.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE
:aud": "sts.amazonaws.com" } } } ] } EOFOpcional: É possível também adicionar várias entradas nas condições
StringEquals
ouStringLike
abaixo para permitir que várias contas de serviço ou namespaces assumam o perfil. Para permitir que sua conta de serviço assuma um perfil do IAM em uma conta AWS diferente, consulte Permissões do IAM entre contas no Guia do usuário do Amazon EKS.
-
Crie um perfil do IAM com o nome
my-iam-role
a ser assumido pela conta de serviço do Amazon EKS. Anexe o arquivo de política de confiança criado na etapa anterior ao perfil. A política de confiança especifica a conta de serviço e o provedor do OIDC em que o perfil do IAM pode confiar.aws iam create-role --role-name
my-iam-role
--assume-role-policy-document file://trust-relationship.json --description "EKS service account role" -
Atribua as permissões da perfil do IAM ao Amazon Keyspaces anexando uma política de acesso.
Anexe uma política de acesso para definir as ações que o perfil do IAM pode realizar em recursos específicos do Amazon Keyspaces. Para este tutorial, usamos a política gerenciada pela AWS
AmazonKeyspacesFullAccess
, porque nosso aplicativo gravará dados na sua tabela do Amazon Keyspaces. No entanto, como prática recomendada, é recomendável criar políticas de acesso personalizadas que implementem o princípio de privilégios mínimos. Para obter mais informações, consulte Como o Amazon Keyspaces funciona com IAM.aws iam attach-role-policy --role-name
my-iam-role
--policy-arn=arn:aws:iam::aws:policy/AmazonKeyspacesFullAccessConfirme se a política foi anexada com sucesso ao perfil do IAM com a seguinte declaração.
aws iam list-attached-role-policies --role-name
my-iam-role
A saída deve ser algo parecido com isso.
{ "AttachedPolicies": [ { "PolicyName": "AmazonKeyspacesFullAccess", "PolicyArn": "arn:aws:iam::aws:policy/AmazonKeyspacesFullAccess" } ] }
Sinalize a conta de serviço com o nome do recurso da Amazon (ARN) do perfil do IAM que pode ser assumido. Certifique-se de atualizar o perfil ARN com seu ID da conta.
kubectl annotate serviceaccount -n
my-eks-namespace
my-eks-serviceaccount
eks.amazonaws.com/role-arn=arn:aws:iam::111122223333
:role/my-iam-role
Confirme se o perfil do IAM e a conta de serviço estão configurados corretamente.
Confirme se a política de confiança do perfil do IAM está configurada corretamente com a seguinte instrução.
aws iam get-role --role-name
my-iam-role
--query Role.AssumeRolePolicyDocumentA saída deve ser semelhante a esta.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Federated": "arn:aws:iam::111122223333:oidc-provider/oidc.eks.
aws-region
.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE" }, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringEquals": { "oidc.eks.aws-region
/id/EXAMPLED539D4633E53DE1B71EXAMPLE:aud": "sts.amazonaws.com", "oidc.eks.aws-region
.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE:sub": "system:serviceaccount:my-eks-namespace:my-eks-serviceaccount" } } } ] }Confirme que a conta do serviço do Amazon EKS esteja anotada com o perfil do IAM.
kubectl describe serviceaccount
my-eks-serviceaccount
-nmy-eks-namespace
A saída deve ser semelhante a esta.
Name: my-eks-serviceaccount Namespace:my-eks-namespace Labels: <none> Annotations: eks.amazonaws.com/role-arn: arn:aws:iam::111122223333:role/my-iam-role Image pull secrets: <none> Mountable secrets: <none> Tokens: <none> [...]
Depois de criar a conta de serviço do Amazon EKS, o perfil do IAM e configurar os relacionamentos e permissões necessários, prossiga paraEtapa 2: configurar o aplicativo.