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. Na AWS, esse endpoint
é um nome DNS que só pode ser resolvido dentro do cluster,
por exemplo, gke-abcdefghijk-cp-ffabcdef123456.elb.us-west-1.amazonaws.com
.
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 aws clusters describe
.
Conectar endpoint do gateway
Por padrão, o comando gcloud container aws 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
VPC, poderá se conectar diretamente ao endpoint particular. Para
gerar um kubeconfig
usando o endpoint particular, use o
comando
gcloud container aws clusters get-credentials --private-endpoint
.
Sobre a autenticação para kubectl
Todos os GKE na AWS 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 na AWS 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 AWS. O administrador do cluster é responsável por configurar o Controle de acesso baseado em papéis apropriado para configurar a autorização.