Sobre o Kubeconfig

Arquivo de configuração do Kubernetes

O Kubernetes usa um arquivo YAML chamado kubeconfig para armazenar informações de autenticação de cluster para kubectl. kubeconfig contém uma lista de contextos para os quais a kubectl se refere ao executar comandos. Por padrão, o arquivo é salvo em $HOME/.kube/config.

Um contexto é um grupo de parâmetros de acesso. Cada contexto contém um cluster do Kubernetes, um usuário e um namespace. O contexto atual é o cluster que é o padrão para kubectl no momento: todos os comandos kubectl são executados nesse cluster.

Depois de criar um cluster, siga as instruções em Gerar uma entrada kubeconfig para adicionar o contexto do cluster ao kubeconfig local.

Endpoints particulares

Todos os clusters têm um endpoint canônico. O endpoint expõe o servidor da API Kubernetes que kubectl e outros serviços usam para se comunicar com o plano de controle do cluster pela porta TCP 443. No Azure, esse endpoint é um IP particular único que é respaldado por um balanceador de carga interno, por exemplo, 10.0.1.5. Esse endpoint não pode ser acessado na Internet pública. É possível conseguir o endereço do endpoint do cluster particular no campo endpoint na saída do comando gcloud container azure clusters describe.

Conectar endpoint do gateway

Por padrão, o comando gcloud container azure clusters get-credentials gera um kubeconfig que usa o gateway do Connect. Com esse kubeconfig, kubectl usa o Connect, que encaminha com segurança o tráfego para o endpoint particular em seu nome. Quando você usa o gateway do Connect, o endpoint é semelhante a https://connectgateway.googleapis.com/v1/projects/PROJECT_NUMBER/memberships/CLUSTER_NAME, em que PROJECT_NUMBER é o número do projeto e CLUSTER_NAME é o nome do cluster.

Se você tiver acesso ao endpoint particular do cluster pela VNet, poderá se conectar diretamente ao endpoint particular. Para gerar um kubeconfig usando o endpoint particular, use o comando gcloud container azure clusters get-credentials --private-endpoint.

Sobre a autenticação para kubectl

Todos os GKE no Azure são configurados para aceitar identidades de usuário e de conta de serviço do Google Cloud. Para isso, eles validam as credenciais apresentadas pela kubectl e recuperam o endereço de e-mail associado à identidade de conta de serviço ou usuário. Como resultado, as credenciais dessas contas precisam incluir o escopo userinfo.email do OAuth para realizar a autenticação com êxito.

Quando você usa a gcloud para configurar o kubeconfig do ambiente para um cluster novo ou existente, a gcloud concede ao kubectl as mesmas credenciais usadas pela própria gcloud. Por exemplo, se você usar gcloud auth login, suas credenciais pessoais serão fornecidas para o kubectl, incluindo o escopo userinfo.email. Isso permite que o GKE no Azure autentique o cliente kubectl.

Depois que as contas de serviço do Google Cloud e os usuários forem autenticados, eles também precisarão estar autorizados a executar qualquer ação em um GKE no Azure. O administrador do cluster é responsável por configurar o Controle de acesso baseado em papéis apropriado para configurar a autorização.