Visualizar os recursos do Kubernetes - Amazon EKS

Visualizar os recursos do Kubernetes

É possível visualizar os recursos do Kubernetes implantados no cluster usando o AWS Management Console. Não é possível visualizar os recursos do Kubernetes com a AWS CLI ou o eksctl. Para visualizar os recursos do Kubernetes utilizando uma ferramenta de linha de comando, use kubectl.

Pré-requisito

Para visualizar a guia Recursos e a seção Nós na guia Computação no AWS Management Console, a entidade principal do IAM que você está usando deve ter permissões específicas do IAM e do Kubernetes. Para ter mais informações, consulte Permissões obrigatórias .

Como visualizar os recursos do Kubernetes com o AWS Management Console
  1. Abra o console do Amazon EKS em https://console.aws.amazon.com/eks/home#/clusters.

  2. Na lista Clusters, escolha o cluster que contém os recursos do Kubernetes que você deseja visualizar.

  3. Selecione a guia Recursos.

  4. Selecione um grupo Resource type (Tipo de recurso) cujos recursos você deseja visualizar, como Workloads. Você visualizará uma lista de tipos de recursos nesse grupo.

  5. Selecione um tipo de recurso, como Deployments (Implantações), no grupo Workloads. Você verá uma descrição do tipo de recurso, um link para a documentação do Kubernetes para obter mais informações sobre esse tipo de recurso, bem como uma lista dos recursos desse tipo implantados no cluster. Se essa lista estiver vazia, significa que não há recursos desse tipo implantados no cluster.

  6. Selecione um recurso para exibir mais informações sobre ele. Teste os exemplos a seguir:

    • Selecione o grupo Workloads, escolha o tipo de recurso Deployments (Implantações) e depois selecione o recurso coredns. Por padrão, ao selecionar um recurso, você está em Structured view (Visualização estruturada). Para alguns tipos de recursos, há uma seção Pods em Structured view (Visualização estruturada). Esta seção mostra os Pods gerenciados pela workload. É possível selecionar qualquer Pod listado para visualizar informações sobre o Pod. Nem todos os tipos de recursos mostram informações em Structured view (Visualização estruturada). Se a opção Raw view (Visualização bruta) for selecionada no canto superior direito da página do recurso, será possível ver a resposta JSON completa da API do Kubernetes para esse recurso.

    • Selecione o grupo Cluster e depois o tipo de recurso Nodes (Nós). Você verá uma lista com todos os nós do seu cluster. Esses nós podem ser de qualquer Tipo de nó do Amazon EKS. Esta é a mesma lista visível na seção Nodes (Nós) ao selecionar a guia Compute (Computação) do seu cluster. Escolha um recurso de nó da lista. Em Structured view (Visualização estruturada), também é possível ver uma seção Pods. Essa seção mostra todos os Pods em execução no nó.

Permissões obrigatórias

Para visualizar a guia Recursos e a seção Nós na guia Computação no AWS Management Console, a entidade principal do IAM que você está usando deve ter permissões específicas mínimas do IAM e do Kubernetes. Conclua as seguintes etapas para atribuir as permissões necessárias às entidades principais do IAM.

  1. Verifique se eks:AccessKubernetesApi e as outras permissões necessárias do IAM para visualizar os recursos do Kubernetes estão atribuídas à entidade principal do IAM que você está usando. Para obter mais informações sobre como editar permissões para uma entidade principal do IAM, consulte Controle de acesso das entidades principais no Guia do usuário do IAM. Para saber mais sobre como editar as permissões de um perfil, consulte Modificar a política de permissões de um perfil (console), no Guia do usuário do IAM.

    O seguinte exemplo de política inclui as permissões necessárias para uma entidade principal visualizar recursos do Kubernetes para todos os clusters da conta. Substitua 111122223333 pelo ID de sua conta da AWS.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "eks:ListFargateProfiles", "eks:DescribeNodegroup", "eks:ListNodegroups", "eks:ListUpdates", "eks:AccessKubernetesApi", "eks:ListAddons", "eks:DescribeCluster", "eks:DescribeAddonVersions", "eks:ListClusters", "eks:ListIdentityProviderConfigs", "iam:ListRoles" ], "Resource": "*" }, { "Effect": "Allow", "Action": "ssm:GetParameter", "Resource": "arn:aws:ssm:*:111122223333:parameter/*" } ] }

    Para visualizar nós em clusters conectados, o perfil do IAM do conector do Amazon EKS deve ser capaz de representar a entidade principal no cluster. Isso permite que o Amazon EKS Connector mapeie a entidade principal para um usuário do Kubernetes.

  2. Crie uma rolebinding ou clusterrolebinding do Kubernetes que esteja vinculada a uma role ou clusterrole do Kubernetes que tenha as permissões necessárias para visualizar os recursos do Kubernetes. Para saber mais sobre funções e associações de função do Kubernetes, consulte Using RBAC Authorization (Usar a autorização RBAC), na documentação do Kubernetes. É possível aplicar ao cluster um dos seguintes manifestos que criam uma role e rolebinding ou uma clusterrole e clusterrolebinding com as permissões necessárias do Kubernetes:

    Visualizar recursos do Kubernetes em todos os namespaces

    O nome do grupo no arquivo é eks-console-dashboard-full-access-group. Aplique o manifesto ao seu cluster com o seguinte comando:

    kubectl apply -f https://s3.us-west-2.amazonaws.com/amazon-eks/docs/eks-console-full-access.yaml
    Visualizar recursos do Kubernetes em um namespace específico

    O namespace neste arquivo é default. O nome do grupo no arquivo é eks-console-dashboard-restricted-access-group. Aplique o manifesto ao seu cluster com o seguinte comando:

    kubectl apply -f https://s3.us-west-2.amazonaws.com/amazon-eks/docs/eks-console-restricted-access.yaml

    Se for necessário modificar o nome do grupo, o namespace, as permissões do Kubernetes ou qualquer outra configuração no arquivo, baixe esse arquivo e edite-o antes de aplicá-lo ao cluster:

    1. Baixe o arquivo com um dos seguintes comandos:

      curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/docs/eks-console-full-access.yaml
      curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/docs/eks-console-restricted-access.yaml
    2. Edite esse arquivo conforme for necessário.

    3. Aplique o manifesto ao seu cluster com um dos seguintes comandos:

      kubectl apply -f eks-console-full-access.yaml
      kubectl apply -f eks-console-restricted-access.yaml
  3. Mapeie a entidade principal do IAM para o usuário ou grupo do Kubernetes noaws-auth ConfigMap. É possível usar uma ferramenta como o eksctl para atualizar o ConfigMap, ou você pode atualizá-lo manualmente via edição.

    Importante

    Convém usar eksctl ou outra ferramenta para editar o ConfigMap. Para saber mais sobre outras ferramentas que podem ser usadas, consulte Usar ferramentas para fazer alterações em aws-authConfigMap nos guias de práticas recomendadas do Amazon EKS. Um aws-auth ConfigMap formatado incorretamente pode fazer com que você perca o acesso ao cluster.

    eksctl
    Pré-requisito

    Versão 0.172.0 ou posterior da ferramenta da linha de comando do eksctl instalada no dispositivo ou no AWS CloudShell. Para instalar ou atualizar o eksctl, consulte Instalação na documentação do eksctl.

    1. Visualize os mapeamentos atuais no ConfigMap. Substitua o my-cluster pelo nome do cluster. Substitua region-code pela Região da AWS em que está o cluster.

      eksctl get iamidentitymapping --cluster my-cluster --region=region-code

      Veja um exemplo de saída abaixo.

      ARN USERNAME GROUPS ACCOUNT arn:aws:iam::111122223333:role/eksctl-my-cluster-my-nodegroup-NodeInstanceRole-1XLS7754U3ZPA system:node:{{EC2PrivateDNSName}} system:bootstrappers,system:nodes
    2. Adicione um mapeamento referente a uma função. Esse exemplo pressupõe que você tenha anexado as permissões do IAM na primeira etapa a uma função denominada my-console-viewer-role. Substitua 111122223333 pelo ID da sua conta.

      eksctl create iamidentitymapping \ --cluster my-cluster \ --region=region-code \ --arn arn:aws:iam::111122223333:role/my-console-viewer-role \ --group eks-console-dashboard-full-access-group \ --no-duplicate-arns
      Importante

      O ARN da função não pode incluir um caminho, como role/my-team/developers/my-role. O formato do ARN deve ser arn:aws:iam::111122223333:role/my-role. Neste exemplo, my-team/developers/ precisa ser removido.

      Veja um exemplo de saída abaixo.

      [...]
      2022-05-09 14:51:20 [ℹ]  adding identity "arn:aws:iam::111122223333:role/my-console-viewer-role" to auth ConfigMap
    3. Adicione um mapeamento referente a um usuário. As melhores práticas do IAM recomendam que você conceda permissões para perfis e não para usuários. Esse exemplo pressupõe que você tenha anexado as permissões do IAM na primeira etapa a um usuário denominado my-user. Substitua 111122223333 pelo ID da sua conta.

      eksctl create iamidentitymapping \ --cluster my-cluster \ --region=region-code \ --arn arn:aws:iam::111122223333:user/my-user \ --group eks-console-dashboard-restricted-access-group \ --no-duplicate-arns

      Veja um exemplo de saída abaixo.

      [...]
      2022-05-09 14:53:48 [ℹ]  adding identity "arn:aws:iam::111122223333:user/my-user" to auth ConfigMap
    4. Visualize os mapeamentos no ConfigMap novamente.

      eksctl get iamidentitymapping --cluster my-cluster --region=region-code

      Veja um exemplo de saída abaixo.

      ARN USERNAME GROUPS ACCOUNT arn:aws:iam::111122223333:role/eksctl-my-cluster-my-nodegroup-NodeInstanceRole-1XLS7754U3ZPA system:node:{{EC2PrivateDNSName}} system:bootstrappers,system:nodes arn:aws:iam::111122223333:role/my-console-viewer-role eks-console-dashboard-full-access-group arn:aws:iam::111122223333:user/my-user eks-console-dashboard-restricted-access-group
    Edit ConfigMap manually

    Para obter mais informações sobre como adicionar usuários ou perfis do IAM ao aws-auth ConfigMap, consulte Adicione um usuário do IAM ao cluster do Amazon EKS.

    1. Abra o ConfigMap de aws-auth para edição.

      kubectl edit -n kube-system configmap/aws-auth
    2. Adicione os mapeamentos ao aws-auth ConfigMap, mas não substitua os mapeamentos existentes. O seguinte exemplo adiciona mapeamentos entre as entidades principais do IAM com permissões adicionadas na primeira etapa e os grupos do Kubernetes criados na etapa anterior:

      • A função my-console-viewer-role e o eks-console-dashboard-full-access-group.

      • O usuário my-user e o eks-console-dashboard-restricted-access-group.

      Esses exemplos pressupõem que você tenha anexado as permissões do IAM da primeira etapa a um perfil denominado my-console-viewer-role e a um usuário denominado my-user. Substitua 111122223333 pelo ID de sua conta da AWS.

      apiVersion: v1 data: mapRoles: | - groups: - eks-console-dashboard-full-access-group rolearn: arn:aws:iam::111122223333:role/my-console-viewer-role username: my-console-viewer-role mapUsers: | - groups: - eks-console-dashboard-restricted-access-group userarn: arn:aws:iam::111122223333:user/my-user username: my-user
      Importante

      O ARN da função não pode incluir um caminho, como role/my-team/developers/my-console-viewer-role. O formato do ARN deve ser arn:aws:iam::111122223333:role/my-console-viewer-role. Neste exemplo, my-team/developers/ precisa ser removido.

    3. Salve o arquivo e saia do seu editor de texto.