View a markdown version of this page

Solução de problemas em funcionalidades do ACK - Amazon EKS

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.

Solução de problemas em funcionalidades do ACK

nota

As funcionalidades do EKS são totalmente gerenciadas e executadas de forma externa ao cluster. Você não tem acesso aos logs do controlador ou aos namespaces do controlador. A solução de problemas se concentra na integridade da funcionalidade, no status dos recursos e na configuração do IAM.

Funcionalidade com o status ACTIVE, mas os recursos não estão sendo criados

Se a funcionalidade do ACK exibir o status ACTIVE, mas os recursos não estiverem sendo criados na AWS, verifique a integridade da funcionalidade, o status do recurso e as permissões do IAM.

Verifique a integridade da funcionalidade:

É possível visualizar problemas de integridade e de status da funcionalidade no console do EKS ou usando a AWS CLI.

Console do:

  1. Abra o console do Amazon EKS em https://console.aws.amazon.com/eks/home#/clusters.

  2. Selecione o nome do seu cluster.

  3. Escolha a guia Observabilidade.

  4. Escolha Monitorar cluster.

  5. Escolha a guia Funcionalidades para visualizar a integridade e o status de todas as funcionalidades.

AWS CLI:

# View capability status and health aws eks describe-capability \ --region region-code \ --cluster-name my-cluster \ --capability-name my-ack # Look for issues in the health section

Causas comuns:

  • Ausência de permissões do IAM: o perfil da funcionalidade não conta com permissões para o serviço da AWS

  • Namespace incorreto: recursos criados em um namespace sem o IAMRoleSelector adequado

  • Especificação de recurso inválida: é necessário verificar as condições de status do recurso para encontrar erros de validação

  • Controle de utilização da API: os limites de taxa da API da AWS foram atingidos

  • Webhooks de admissão: os webhooks de admissão estão impedindo o controlador de atualizar o status do recurso

Verifique o status do recurso:

# Describe the resource to see conditions and events kubectl describe bucket my-bucket -n default # Look for status conditions kubectl get bucket my-bucket -n default -o jsonpath='{.status.conditions}' # View resource events kubectl get events --field-selector involvedObject.name=my-bucket -n default

Verifique as permissões do IAM:

# View the Capability Role's policies aws iam list-attached-role-policies --role-name my-ack-capability-role aws iam list-role-policies --role-name my-ack-capability-role # Get specific policy details aws iam get-role-policy --role-name my-ack-capability-role --policy-name policy-name

Recursos são criados na AWS, mas que não aparecem no Kubernetes

O ACK rastreia apenas os recursos criados por meio de manifestos do Kubernetes. Para gerenciar recursos existentes da AWS com o ACK, empregue o recurso de adoção.

apiVersion: s3.services.k8s.aws/v1alpha1 kind: Bucket metadata: name: existing-bucket annotations: services.k8s.aws/adoption-policy: "adopt-or-create" spec: name: my-existing-bucket-name

Para obter mais informações sobre a adoção de recursos, consulte Conceitos do ACK.

Recursos entre contas não estão sendo criados

Caso os recursos não sejam criados em uma conta da AWS de destino ao utilizar o seletor de perfil do IAM, certifique-se de verificar o relacionamento de confiança e a configuração do IAMRoleSelector.

Verifique a relação de confiança:

# Check the trust policy in the target account role aws iam get-role --role-name cross-account-ack-role --query 'Role.AssumeRolePolicyDocument'

A política de confiança deve permitir que o perfil da funcionalidade da conta de origem a assuma.

Confirme a configuração do IAMRoleSelector:

# List IAMRoleSelectors (cluster-scoped) kubectl get iamroleselector # Describe specific selector kubectl describe iamroleselector my-selector

Verifique o alinhamento do namespace:

Os IAMRoleSelectors são recursos de escopo do cluster, mas operam em namespaces específicos. Certifique-se de que os recursos do ACK estejam em um namespace que corresponda ao selecionador de namespace do IAMRoleSelector:

# Check resource namespace kubectl get bucket my-cross-account-bucket -n production # List all IAMRoleSelectors (cluster-scoped) kubectl get iamroleselector # Check which namespace the selector targets kubectl get iamroleselector my-selector -o jsonpath='{.spec.namespaceSelector}'

Verifique a condição IAMRoleSelected:

Verifique se o IAMRoleSelector foi correspondido com sucesso ao seu recurso, consultando a condição ACK.IAMRoleSelected:

# Check if IAMRoleSelector was matched kubectl get bucket my-cross-account-bucket -n production -o jsonpath='{.status.conditions[?(@.type=="ACK.IAMRoleSelected")]}'

Caso a condição seja False ou esteja ausente, o seletor de namespace do IAMRoleSelector não coincidirá com o namespace do recurso. Verifique se o namespaceSelector do seletor corresponde aos rótulos de namespace do seu recurso.

Verifique as permissões do perfil da funcionalidade:

O perfil de funcionalidade precisa das permissões sts:AssumeRole e sts:TagSession para o perfil da conta de destino:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": ["sts:AssumeRole", "sts:TagSession"], "Resource": [.replaceable]`"arn:aws:iam::444455556666:role/cross-account-ack-role"` } ] }

Para obter informações detalhadas sobre a configuração entre contas, consulte Configuração das permissões do ACK.

Próximas etapas