Como configurar o acesso ao clusters para o kubectl

Nesta página, explicamos como configurar o acesso de cluster para a ferramenta de linha de comando kubectl no Google Kubernetes Engine.

Visão geral

Se você executar vários clusters no seu projeto do Google Cloud Platform, precisará escolher com qual cluster o kubectl se comunicará. Você pode definir um cluster padrão para kubectl definindo o contexto atual no arquivo kubeconfig do Kubernetes. Além disso, você pode executar comandos kubectl em um cluster específico usando a sinalização --cluster.

Nas seções a seguir, explicamos como o kubeconfig funciona, como definir um cluster padrão para o kubectl e como executar comandos individuais do kubectl em um cluster específico.

Antes de começar

Prepare-se para a tarefa tomando as seguintes medidas:

  • Verifique se você ativou a API Google Kubernetes Engine.
  • Ativar a API Google Kubernetes Engine
  • Verifique se o SDK do Cloud está instalado.
  • Defina o código do projeto padrão:
    gcloud config set project [PROJECT_ID]
  • Se você estiver trabalhando com clusters zonais, defina a zona de computação padrão:
    gcloud config set compute/zone [COMPUTE_ZONE]
  • Se você estiver trabalhando com clusters regionais, defina a região de computação padrão:
    gcloud config set compute/region [COMPUTE_REGION]
  • Atualize a gcloud para a versão mais recente:
    gcloud components update

Arquivo de configuração do Kubernetes

O Kubernetes usa um arquivo YAML chamado kubeconfig para armazenar informações de autenticação do cluster para o kubectl. O kubeconfig contém uma lista de contextos aos quais 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 é atualmente o padrão de kubectl: todos os comandos kubectl são executados nesse cluster.

Quando você cria um cluster usando gcloud container clusters create, uma entrada é automaticamente incluída no kubeconfig em seu ambiente e o contexto atual é alterado para esse cluster:

gcloud container clusters create my-cluster
Creating my-cluster...done
Fetching cluster endpoint and auth data.
kubeconfig entry generated for my-cluster

Quando você cria um cluster usando o Console do Google Cloud Platform ou o gcloud em outro computador, o kubeconfig do seu ambiente não é atualizado. Além disso, se um membro da equipe do projeto usar o gcloud para criar um cluster no computador dele, o kubeconfig dele será atualizado, mas o seu não será. Siga as instruções abaixo para adicionar esses clusters ao seu kubeconfig local.

Sobre o ponto de extremidade do cluster

Todos os clusters têm um ponto de extremidade canônico. O ponto de extremidade é o endereço IP do servidor da API Kubernetes que o kubectl e outros serviços usam para se comunicar com o mestre do cluster. O endpoint é exibido no Console do GCP no campo Endpoints da guia Detalhes do cluster e na saída de gcloud container clusters describe no campo endpoint.

Ao executar gcloud container clusters get-credentials, você vê que o comando recebe o ponto de extremidade do cluster como parte da atualização de kubeconfig.

Os clusters particulares têm dois valores exclusivos de endpoint: privateEndpoint, que é um endereço IP interno, e publicEndpoint, que é externo. A execução de get-credentials em um cluster particular define o endereço IP externo como o endpoint por padrão. Se você preferir usar o IP interno como endpoint, consulte Como gerar uma entrada kubeconfig usando o endereço IP interno de um cluster particular.

Como ver o contexto atual de kubectl

Para ver o contexto atual de kubectl, execute o seguinte comando:

kubectl config current-context

Como ver o kubeconfig

Para ver o kubeconfig do seu ambiente, execute o seguinte comando:

kubectl config view

O comando retorna uma lista de todos os clusters para os quais foram geradas entradas kubeconfig. Se um cluster do GKE estiver listado, é possível executar comandos kubectl nele no ambiente atual. Caso contrário, você precisará gerar uma entrada kubeconfig para o cluster.

Como gerar uma entrada kubeconfig

Para executar comandos kubectl em um cluster criado no console do GCP, em outro computador ou por outro membro do projeto, você precisa gerar uma entrada kubeconfig no seu ambiente.

Gere uma entrada kubeconfig executando o seguinte comando:

gcloud container clusters get-credentials [CLUSTER_NAME]

em que [CLUSTER_NAME] é o nome do cluster.

A entrada kubeconfig contém:

  1. Suas credenciais, como mostradas em gcloud auth list, ou
  2. Suas credenciais padrão do aplicativo, se configuradas.

Como gerar uma entrada kubeconfig usando o endereço IP interno de um cluster particular

Ao executar get-credentials, você pode especificar o --internal-ip para gravar o endereço IP interno de um cluster particular no kubeconfig:

gcloud container clusters get-credentials --internal-ip [CLUSTER_NAME]

Como configurar um cluster padrão para comandos kubectl

Se você gerou uma entrada kubeconfig para clusters anteriormente, é possível mudar o contexto atual de kubectl para esse cluster executando gcloud container clusters get-credentials.

Por exemplo, pense em um projeto com dois clusters, my-cluster e my-new-cluster. O contexto atual é my-new-cluster, mas você quer executar todos os comandos kubectl em my-cluster.

Para mudar o contexto atual para my-cluster, execute o seguinte comando:

gcloud container clusters get-credentials my-cluster

Como executar comandos kubectl individuais em um cluster específico

É possível executar comandos kubectl individuais em um cluster específico usando o nome do cluster como aparece em kubeconfig como o argumento da sinalização --cluster.

Por exemplo, pense em um ambiente com dois clusters, my-cluster e my-new-cluster, em que o contexto atual é my-cluster. Você quer implantar um aplicativo no my-new-cluster, mas não quer alterar o contexto atual.

Para implantar o aplicativo no my-new-cluster, execute o seguinte comando:

kubectl run my-app --image gcr.io/my-bucket/my-app:1.0 --cluster my-new-cluster

Próximas etapas

Esta página foi útil? Conte sua opinião sobre:

Enviar comentários sobre…

Documentação do Kubernetes Engine