Gerenciar clusters pelo console do Google Cloud

Neste documento, explicamos como disponibilizar clusters criados com o software do Google Distributed Cloud para VMware para gerenciamento no console do Google Cloud. Isso inclui gerenciamento básico, como a capacidade de fazer login em clusters e a visualização das cargas de trabalho, além de como ativar o gerenciamento do ciclo de vida do cluster para fazer upgrade, atualizar e excluir clusters.

Membros da frota e o console

Todos os clusters do Google Distributed Cloud precisam ser membros de uma frota, uma maneira unificada de visualizar e gerenciar vários clusters e as cargas de trabalho deles. Cada frota de clusters é associada a um projeto host da frota.

No Google Distributed Cloud, um cluster de administrador é registrado em uma frota no momento da criação, especificando o projeto host da frota na seção gkeConnect do arquivo de configuração do cluster. O Google Distributed Cloud usa essas informações para registrar o cluster no projeto de frota especificado. Se o registro falhar, tente-o novamente executando gkectl update credentials register.

Observe que, ao tentar registrar novamente, você não precisa atualizar a chave da conta de serviço connect-register. Em outras palavras, é possível continuar usando sua conta de serviço connect-register original. Para mais informações sobre o comando, consulte Como fazer a rotação de chaves da conta de serviço.

No Google Distributed Cloud, um cluster de usuário é registrado em uma frota no momento da criação:

  • Ao criar um cluster de usuário usando gkectl, especifique seu projeto de host de frota na seção gkeConnect do arquivo de configuração do cluster. O Google Distributed Cloud usa essas informações para registrar o cluster no projeto de frota especificado.

  • Quando você cria um cluster de usuário usando uma ferramenta padrão (o console, a CLI do Google Cloud ou o Terraform), o cluster se torna automaticamente um membro da frota no projeto especificado.

Os membros da frota fora do Google Cloud , como o Google Distributed Cloud, aparecem no console no projeto host da frota, além de outros clusters da frota, como o GKE no Google Cloud. O quanto você pode gerenciar o Google Distributed Cloud no console depende do seguinte:

  • Se você tiver configurado a autenticação, poderá fazer login nos clusters e ver as cargas de trabalho e outros detalhes.

  • Se você tiver ativado o gerenciamento do ciclo de vida do cluster para o cluster, também será possível fazer upgrade, atualizar ou excluir clusters de usuários usando o console. Se esse recurso não estiver ativado, só será possível gerenciar o ciclo de vida do cluster usando gkectl na estação de trabalho do administrador.

Ver clusters registrados

Todos os clusters da frota aparecem na página Visão geral dos clusters do Google Kubernetes Engine no console. Isso oferece uma visão geral de toda a frota e, para o Google Distributed Cloud, permite ver quais clusters são gerenciados pela API GKE On-Prem.

Para ver os clusters da frota:

  1. No console, acesse a página Visão geral dos clusters do Google Kubernetes Engine.

    Acesse os clusters do GKE

  2. Selecione o projeto do Google Cloud.

    • Se vm Google Distributed Cloud for exibido na coluna Tipo, o cluster será gerenciado pela API GKE On-Prem.

    • Se Externo for exibido na coluna Tipo, o cluster não vai ser gerenciado pela API GKE On-Prem.

Para ver mais detalhes sobre um cluster, os usuários precisam fazer login e autenticação nele. Para fazer isso, você precisa:

Configurar a autenticação

Conforme descrito anteriormente, todos os clusters de frota aparecem nas listas de clusters do GKE e do GKE Enterprise no console. No entanto, para ver mais detalhes, como nós e cargas de trabalho, e realizar tarefas de gerenciamento de ciclo de vida do cluster se o recurso estiver ativado, os usuários precisam fazer login e autenticação no cluster. Para fazer isso, os clusters registrados precisam ser configurados com um dos seguintes métodos de autenticação:

  • Identidade do Google: essa opção permite que os usuários façam login usando a identidadeGoogle Cloud , que é o endereço de e-mail associado à sua contaGoogle Cloud . Use essa opção se os usuários já tiverem acesso ao Google Cloud com a identidade do Google. Se você criou o cluster no console, pode fazer login nele usando sua identidade do Google, mas será necessário configurar a autenticação para outros usuários.

    O login com a identidade do Google é a abordagem mais simples para autenticação no console, principalmente se você estiver testando o Google Distributed Cloud com uma instalação mínima. Por isso, descrevemos como configurar isso com mais detalhes abaixo em Configurar a autenticação de identidade do Google.

  • OpenID Connect (OIDC): esta opção permite que os usuários façam login em clusters do console usando a identidade de um provedor de identidade de OIDC de terceiros, como o Okta ou o Microsoft AD FS. Use essa opção se os usuários tiverem nomes de usuário, senhas e associações de grupo de segurança existentes do seu provedor. Saiba como configurar a autenticação do OIDC de terceiros para seus clusters nos guias a seguir:

  • Token do portador: se as soluções anteriores fornecidas pelo Google não forem adequadas para sua organização, configure a autenticação usando uma conta de serviço do Kubernetes e usando o respectivo token do portador para fazer login. Para mais detalhes, consulte Configurar usando um token do portador.

Conceder os papéis necessários

O acesso ao console é controlado pelo Identity and Access Management (IAM). Esses papéis do IAM são obrigatórios, independentemente do método de autenticação escolhido. Para gerenciar o ciclo de vida do cluster no console, é necessário conceder alguns papéis do IAM.

  • Para permitir que os usuários acessem o console, conceda pelo menos os seguintes papéis:

    • roles/container.viewer Com esse papel, os usuários podem ver a página de clusters do GKE e outros recursos do contêiner no console. Para ver detalhes sobre as permissões incluídas nesse papel ou conceder um papel com permissões de leitura/gravação, consulte Papéis do Kubernetes Engine na documentação do IAM.

    • roles/gkehub.viewer. Esse papel permite que os usuários acessem clusters fora do Google Cloud no console. Para saber mais sobre as permissões incluídas nesse papel ou conceder um papel com permissões de leitura/gravação, consulte Papéis do GKE Hub na documentação do IAM.

  • Para permitir que os usuários gerenciem o ciclo de vida do cluster no console, conceda o papel roles/gkeonprem.admin do IAM. O papel de IAM roles/gkeonprem.admin concede aos usuários acesso administrativo à API GKE On-Prem, que o console usa para gerenciar o ciclo de vida do cluster. Para ver detalhes sobre as permissões incluídas nesse papel, consulte Papéis do GKE On-Prem na documentação do IAM.

Os comandos a seguir mostram como conceder os papéis mínimos necessários para gerenciar o ciclo de vida do cluster no console:

gcloud projects add-iam-policy-binding FLEET_HOST_PROJECT_ID \
    --member=MEMBER \
    --role=roles/container.viewer

gcloud projects add-iam-policy-binding FLEET_HOST_PROJECT_ID \
    --member=MEMBER \
    --role=roles/gkehub.viewer

gcloud projects add-iam-policy-binding FLEET_HOST_PROJECT_ID \
    --member=MEMBER \
    --role=roles/gkeonprem.admin

em que:

  • FLEET_HOST_PROJECT_ID é o projeto host da frota. Para clusters criados usando gkectl, esse é o projeto que você configurou na seção gkeConnect do arquivo de configuração do cluster de usuário. Para clusters criados no console, esse é o projeto que você escolheu quando o cluster foi criado.

  • MEMBER é o endereço de e-mail do usuário no formato user:emailID, por exemplo: user:alice@example.com

Ativar o gerenciamento do ciclo de vida do cluster no console

Os clusters de usuário criados usando ferramentas padrão (o console, a gcloud CLI ou o Terraform) são registrados automaticamente na API GKE On-Prem e permitem realizar tarefas de gerenciamento de ciclo de vida do cluster no console. Se você quiser ativar esse recurso para clusters de usuários criados usando gkectl, siga as etapas em Configurar um cluster de usuário para ser gerenciado pela API GKE On-Prem. Quando o gerenciamento do ciclo de vida do cluster está ativado, é possível realizar as seguintes tarefas no console:

Configurar a autenticação de identidade do Google

Para permitir que os usuários façam login no cluster usando a identidade do Google, configure o seguinte:

Configurar a autorização do RBAC

O servidor da API Kubernetes de cada cluster precisa ser capaz de autorizar solicitações originadas do console. Para configurar a autorização, é necessário configurar políticas de controle de acesso baseado em papéis (RBAC) do Kubernetes em cada cluster.

Se você usou uma ferramenta padrão para criar o cluster de usuário, talvez já tenha recebido as políticas de RBAC apropriadas que concedem acesso administrativo total ao cluster. A API GKE On-Prem adiciona sua Conta do Google automaticamente como administrador nos seguintes casos:

  • Você criou o cluster de usuários no console.

  • Você criou o cluster de usuários usando a gcloud CLI, e sua conta do Google foi especificada na flag --admin-users no comando de criação do cluster.

  • Você criou o cluster de usuários usando o Terraform, e sua Conta do Google foi especificada no campo authorization.admin_users.username.

Os clusters de usuários criados com gkectl não concedem as políticas do RBAC para administrar o cluster usando o console. Você precisa se adicionar depois que o cluster for criado. Não importa qual ferramenta você usou para criar o cluster, é possível adicionar outras pessoas como administradores depois que o cluster for criado.

É possível usar qualquer uma das seguintes maneiras para conceder acesso administrativo ao cluster. Dois comandos gcloud diferentes são fornecidos.

  • O comando gcloud ... generate-gateway-rbac precisa ser executado na estação de trabalho do administrador porque ele exige acesso ao kubeconfig e ao contexto do cluster, que normalmente estão apenas na estação de trabalho do administrador. O comando generate-gateway-rbac permite personalizar as políticas do RBAC, mas os endereços de e-mail do usuário não são exibidos como administradores na seção Detalhes do cluster no console.

  • O comando gcloud ... update pode ser executado na estação de trabalho do administrador ou em qualquer computador que tenha acesso à API GKE On-Prem.

generate-gateway-rbac

  1. Conectar-se à estação de trabalho do administrador.

  2. Execute o comando a seguir para atualizar os componentes:

    gcloud components update
    
  3. Gere e aplique as políticas do RBAC ao cluster para usuários e contas de serviço:

    gcloud container fleet memberships generate-gateway-rbac  \
        --membership=MEMBERSHIP_NAME \
        --role=ROLE \
        --users=USERS \
        --project=FLEET_HOST_PROJECT_ID \
        --kubeconfig=KUBECONFIG_PATH \
        --context=KUBECONFIG_CONTEXT \
        --apply
    

    Substitua:

    • MEMBERSHIP_NAME: o nome usado para representar o cluster na frota dele de maneira exclusiva. No Google Distributed Cloud, o nome da assinatura e do cluster são os mesmos.
    • ROLE: o papel do Kubernetes que você quer conceder aos usuários no cluster. Para conceder aos usuários acesso total a todos os recursos do cluster em todos os namespaces, especifique clusterrole/cluster-admin. Para fornecer acesso somente leitura, especifique clusterrole/view. Também é possível criar um papel personalizado, por exemplo: role/mynamespace/namespace-reader. É preciso que o papel personalizado exista antes da execução do comando.
    • USERS: os endereços de e-mail dos usuários (contas de usuário ou contas de serviço) aos quais você quer conceder as permissões como uma lista separada por vírgulas. Por exemplo, --users=foo@example.com,test-acct@test-project.iam.gserviceaccount.com.
    • FLEET_HOST_PROJECT_ID O ID do projeto host da frota.
    • KUBECONFIG_PATH: o caminho local em que o kubeconfig que contém uma entrada do cluster é armazenado.
    • KUBECONFIG_CONTEXT: o contexto do cluster como ele aparece no arquivo kubeconfig. É possível conseguir o contexto atual pela linha de comando executando kubectl config current-context. Independentemente de você usar o contexto atual, verifique se ele funciona para acessar o cluster. Para isso, basta executar um comando simples como:

      kubectl get namespaces \
        --kubeconfig=KUBECONFIG_PATH \
        --context=KUBECONFIG_CONTEXT

    Depois de executar gcloud container fleet memberships generate-gateway-rbac, você verá algo como o seguinte no fim da saída, de maneira truncada para facilitar a leitura:

    Validating input arguments.
    Specified Cluster Role is: clusterrole/cluster-admin
    Generated RBAC policy is:
    --------------------------------------------
    ...
    Applying the generate RBAC policy to cluster with kubeconfig: /usr/local/google/home/foo/.kube/config, context: kind-kind
    Writing RBAC policy for user: foo@example.com to cluster.
    Successfully applied the RBAC policy to cluster.
    

    Esse é o contexto para acessar o cluster pelo gateway do Connect.

    Para mais detalhes sobre o comando generate-gateway-rbac, consulte o guia de referência da CLI gcloud.

update

  1. Execute o comando a seguir para atualizar os componentes:

    gcloud components update
    
  2. Para cada usuário que precisa receber o papel clusterrole/cluster-admin, inclua a flag --admin-users e execute o comando a seguir. Não é possível especificar vários usuários em uma flag. Inclua sua Conta do Google no comando, porque ele substitui a lista de permissões pelos usuários especificados.

    gcloud container vmware clusters update USER_CLUSTER_NAME \
      --admin-users YOUR_GOOGLE_ACCOUNT \
      --admin-users ADMIN_GOOGLE_ACCOUNT_1 \
    

Além de conceder o papel clusterrole/cluster-admin do Kubernetes, o comando concede as políticas do RBAC que os usuários precisam para acessar o cluster pelo gateway do Connect.

Console

Para aplicar as políticas de RBAC aos usuários, siga estas etapas no console:

  1. No console, acesse a página Visão geral dos clusters do Google Kubernetes Engine.

    Acesse os clusters do GKE

  2. Selecione o projeto do Cloud em que o cluster de usuário está.

  3. Na lista de clusters, clique no nome do cluster para mostrar os detalhes.

  4. Na seção Autorização, clique no botão de edição Usuários administradores.

  5. Insira o endereço de e-mail do usuário que você quer adicionar como administrador do cluster no painel Editar autorização. Para adicionar mais usuários administradores, clique em Adicionar usuário administrador.

  6. Quando terminar de adicionar usuários, clique em Salvar alterações.

Mais informações