Como acessar clusters com o serviço de identidade do GKE

O serviço de identidade do GKE é um serviço de autenticação que permite usar os provedores de identidade existentes da organização para autenticar clusters em vários ambientes do GKE Enterprise. Dessa forma, você pode usar o mesmo ID para registrar clusters no Google Cloud, no local e em outras nuvens públicas. Este documento é destinado a desenvolvedores e outros usuários de cluster do GKE que precisam acessar clusters usando este serviço. Se você precisar fazer login em clusters usando o ID do Google Cloud pelo gateway de conexão, consulte Como usar o gateway de conexão.

Se você é um administrador de cluster ou plataforma que precisa configurar o serviço de identidade do GKE para sua organização ou equipe, consulte as Informações gerais do serviço para conhecer os ambientes de cluster compatíveis, outros pré-requisitos e os guias de configuração relevantes.

Faça login em clusters na linha de comando

Para autenticar clusters na linha de comando, execute os comandos de autenticação gcloud usando um arquivo de configuração de login especial fornecido pelo administrador do cluster.

Antes de começar

  1. Verifique se você tem as seguintes ferramentas de linha de comando instaladas:

    • A versão mais recente da Google Cloud CLI, que inclui gcloud, a ferramenta de linha de comando para interagir com o Google Cloud. Se você precisar instalar a Google Cloud CLI, consulte o guia de instalação.
    • kubectl para executar comandos em clusters do Kubernetes. Se precisar instalar kubectl, consulte o guia de instalação
  2. Execute os comandos a seguir para instalar ou atualizar o componente anthos-auth:

    gcloud components update
    gcloud components install anthos-auth
  3. Verifique se a ferramenta foi instalada com sucesso executando o seguinte comando:

    gcloud anthos auth version

    Se uma versão for retornada, sua instalação foi bem-sucedida.

Receber o arquivo de configuração

A CLI gcloud pressupõe um nome de arquivo e local padrão na máquina local para o arquivo de configuração de autenticação. O administrador pode copiar o arquivo para sua máquina. Se você fornecer o arquivo manualmente e precisar salvá-lo na sua máquina, use os padrões para simplificar os comandos de autenticação gcloud.

Use os comandos a seguir para copiar o arquivo de configuração de autenticação para o local padrão:

Linux

mkdir -p  $HOME/.config/google/anthos/
cp [AUTH_CONFIG_FILE] $HOME/.config/google/anthos/kubectl-anthos-config.yaml

[AUTH_CONFIG_FILE] é o nome do arquivo de configuração de autenticação. Por exemplo, kubectl-anthos-config.yaml.

macOS

mkdir -p  $HOME/Library/Preferences/google/anthos/
cp [AUTH_CONFIG_FILE] $HOME/Library/Preferences/google/anthos/kubectl-anthos-config.yaml

[AUTH_CONFIG_FILE] é o nome do arquivo de configuração de autenticação. Por exemplo, kubectl-anthos-config.yaml.

Windows

md "%APPDATA%\google\anthos"
copy [AUTH_CONFIG_FILE] "%APPDATA%\google\anthos\kubectl-anthos-config.yaml"

[AUTH_CONFIG_FILE] é o nome do arquivo de configuração de autenticação. Por exemplo, kubectl-anthos-config.yaml.

Se você ou seu administrador optarem por usar um nome de arquivo ou local diferente (por exemplo, se o administrador estiver fornecendo o arquivo em um URL seguro), especifique isso usando a sinalização --login-config com cada uma das solicitações de autenticação. Consulte a seção a seguir para mais detalhes.

Autenticar no cluster

Execute os comandos gcloud para autenticar com os clusters:

  1. Execute o comando gcloud anthos auth login para iniciar o fluxo de autenticação:

    gcloud anthos auth login \
     --cluster [CLUSTER_NAME] \
     --user [USER_NAME] \
     --login-config [AUTH_CONFIG_FILE_PATH] \
     --login-config-cert [CA_CERT_PEM_FILE] \
     --kubeconfig [CLUSTER_KUBECONFIG]

    onde:

    • [CLUSTER_NAME] (opcional) especifica o nome do cluster. Se essa sinalização for omitida, você será solicitado a escolher entre os clusters especificados no arquivo de configuração de autenticação.

    • [USER_NAME] (opcional) especifica o nome de usuário das credenciais armazenadas no arquivo kubeconfig. O valor padrão é [CLUSTER_NAME]-anthos-default-user.

    • [AUTH_CONFIG_FILE_PATH] opcional: especifica o caminho ou URL personalizado em que arquivo de configuração de autenticação é armazenado ou hospedado. É possível omitir esse parâmetro se o arquivo estiver no local padrão. Exemplo: --login-config /path/to/custom/authentication-config.yaml;

    • [CA_CERT_PEM_FILE] (opcional) especifica o caminho para um arquivo de certificado PEM da CA. Se o arquivo de configuração de autenticação estiver hospedado com segurança, é possível usar uma conexão HTTPS para acessar o arquivo. Exemplo: --login-config-cert my-cert.pem

    • [CLUSTER_KUBECONFIG] (opcional) especifica o caminho personalizado para o arquivo kubeconfig do cluster. Os tokens de ID OIDC retornados pelo seu provedor OpenID são armazenados no arquivo kubeconfig.

      Use essa sinalização se o arquivo kubeconfig estiver em um local diferente do padrão. Se essa sinalização for omitida, os tokens de autenticação serão adicionados ao arquivo kubeconfig no local padrão. Exemplo: --kubeconfig /path/to/custom.kubeconfig

    Exemplos:

    • Autentique-se em um cluster específico:

      gcloud anthos auth login --cluster my-production-cluster
      
    • Use um prompt para selecionar o cluster a ser autenticado:

      gcloud anthos auth login
      

      Resultado:

      Please use the --cluster flag to specify a cluster from the list below:
      Source: $HOME/.config/google/anthos/kubectl-anthos-config.yaml
      1. Cluster: projects/1000000000000/locations/global/memberships/gke-gcp-cluster ServerIP: https://104.198.180.50:440
      2. Cluster: projects/1000000000000/locations/global/memberships/gke-baremetal-cluster ServerIP: https://104.198.180.51:440
      3. Cluster: projects/1000000000000/locations/global/memberships/gke-onprem-cluster ServerIP: https://104.198.180.52:440
      4. Cluster: projects/1000000000000/locations/global/memberships/gke-aws-cluster ServerIP: https://104.198.180.53:440
      
    • Use um arquivo de configuração de autenticação hospedada:

      gcloud anthos auth login \
       --cluster my-production-cluster \
       --login-config HTTPS://my-secure-server/kubectl-anthos-config.yaml \
       --login-config-cert my-cert.pem
      
    • Use um prompt para selecionar uma opção de autenticação. Saiba mais sobre isso, incluindo um exemplo, em Escolher uma opção de autenticação abaixo.

  2. Digite suas credenciais na tela de consentimento baseada no navegador que é aberta. Se isso funcionar, o arquivo kubeconfig deverá conter um token de ID que os comandos kubectl usarão para se autenticar com o servidor da API Kubernetes no cluster.

  3. Verifique se a autenticação foi bem-sucedida. Basta executar um dos comandos kubectl para acessar um recurso no cluster. Por exemplo, se você tiver acesso ao recurso "nós" no cluster (esse acesso é configurado pelo administrador do cluster), será possível executar o comando a seguir e visualizar os nós do cluster:

    kubectl get nodes --kubeconfig [CLUSTER_KUBECONFIG]

Para resolver problemas de acesso do usuário, consulte Resolver problemas de acesso do usuário.

Escolher um método de autenticação

Se o administrador do cluster tiver configurado vários provedores de identidade para o cluster (por exemplo, um provedor OIDC e um servidor LDAP) e não tiver configurado um provedor padrão para o cluster, você será solicitado a fazer login para selecionar uma opção de autenticação, como no exemplo a seguir:

gcloud anthos auth login

Please select your preferred authentication option for cluster [gke-onprem-ldap]
[1] LDAP Server
[2] OIDC
[3] cancel

Please enter your numeric choice:

1

Setting Preferred Authentication option to [LDAP Server]

Insira uma opção numérica e continue o login conforme descrito em Autenticar no cluster acima.

A opção de autenticação escolhida é salva até que o administrador do cluster altere o provedor padrão para o cluster ou você mesmo o altere. Para alterar sua opção de autenticação preferida, use a sinalização --set-preferred-authentication.

gcloud anthos auth login --set-preferred-authentication

Você verá um resultado como o exemplo a seguir, que permite escolher uma nova opção de autenticação preferida:

Your current authentication method is [1] AD Server. Please select your preferred authentication option for cluster [gke-onprem-ldap]
[1] LDAP Server
[2] OIDC
[3] cancel

Please enter your numeric choice:

2

Setting Preferred Authentication option to [OIDC]

Como usar SSH para autenticação em uma máquina remota

Suponha que você queira usar SSH em uma máquina remota e utilizá-la para fazer a autenticação em um cluster. Para isso, é necessário que o arquivo de configuração de autenticação esteja na máquina remota, e você precisa conseguir acessar seu provedor Open ID da máquina local.

Na máquina local, execute o comando a seguir:

ssh [USER_NAME]@[REMOTE_MACHINE] -L [LOCAL_PORT]:localhost:[REMOTE_PORT]

em que:

  • [USER_NAME] e [REMOTE_MACHINE] são os valores padrão usados para fazer login com SSH;

  • [LOCAL_PORT] é uma porta aberta de sua escolha na máquina local que você usará para acessar a máquina remota;

  • [REMOTE_PORT] é a porta que você configurou para o URL de redirecionamento OIDC. Acesse o campo kubectlRedirectURI do arquivo de configuração de autenticação.

No shell SSH, execute o comando a seguir para iniciar a autenticação:

gcloud anthos auth login --login-config [AUTH_CONFIG_FILE]

[AUTH_CONFIG_FILE] é o caminho do arquivo de configuração de autenticação na máquina remota.

Na máquina local, em um navegador, acesse http://localhost:[LOCAL_PORT]/login e conclua o fluxo de login do OIDC.

Agora, o arquivo kubeconfig na sua máquina remota tem o token necessário para acessar o cluster.

No shell SSH, verifique se você tem acesso ao cluster:

kubectl --kubeconfig [CLUSTER_KUBECONFIG] get nodes

Fazer login em clusters no console do Google Cloud (somente provedores OIDC)

Siga as instruções em Trabalhar com clusters no console do Google Cloud.