Com os clusters anexados ao GKE, você pode transferir seus clusters Kubernetes existentes — estejam eles hospedados na AWS, no Azure ou em outro lugar — para o painel do Google Kubernetes Engine (GKE) Enterprise Edition para gerenciamento centralizado. Isso inclui a capacidade de anexar qualquer cluster Kubernetes compatível com CNCF.
Clusters Kubernetes suportados
Você pode adicionar qualquer cluster Kubernetes compatível com nós x86 à sua frota e, em seguida, visualizá-lo no Google Cloud console junto com seus clusters do GKE.
Embora o Google não verifique a compatibilidade completa dos recursos de todas as distribuições do Kubernetes, quaisquer incompatibilidades descobertas são documentadas aqui. Para obter mais detalhes e assistência na solução de problemas, consulte o Suporte para versões e atualizações do Google Kubernetes Engine (GKE) Enterprise Edition .
Pré-requisitos
Certifique-se de que seu cluster atenda aos requisitos de cluster .
Ao anexar seu cluster, você deve especificar o seguinte:
- Um suportado Google Cloudregião administrativa
- Uma versão de plataforma
A região administrativa é uma Google Cloud região para administrar o cluster anexado. Você pode escolher qualquer região suportada, mas a prática recomendada é escolher a região geograficamente mais próxima do seu cluster. Nenhum dado de usuário é armazenado na região administrativa.
A versão da plataforma é a versão dos clusters anexados ao GKE a serem instalados no seu cluster. Você pode listar todas as versões compatíveis executando o seguinte comando:
gcloud container attached get-server-config \
--location=GOOGLE_CLOUD_REGION
Substitua GOOGLE_CLOUD_REGION pelo nome doGoogle Cloud local para administrar seu cluster.
Numeração da versão da plataforma
Estes documentos referem-se à versão dos clusters anexados ao GKE como a versão da plataforma, para diferenciá-la da versão do Kubernetes. Os clusters anexados ao GKE usam a mesma convenção de numeração de versão do GKE — por exemplo, 1.21.5-gke.1. Ao anexar ou atualizar seu cluster, você deve escolher uma versão da plataforma cuja versão secundária seja igual ou um nível abaixo da versão do Kubernetes do seu cluster. Por exemplo, você pode anexar um cluster executando o Kubernetes v1.22.* com a versão da plataforma 1.21.* ou 1.22.* dos clusters anexados ao GKE.
Isso permite que você atualize seu cluster para a próxima versão secundária antes de atualizar os clusters conectados ao GKE.
Anexe seu cluster
Para conectar seu cluster compatível com CNCF a Google CloudGerenciamento de frota , execute os seguintes comandos:
Certifique-se de que seu arquivo kubeconfig tenha uma entrada para o cluster que você deseja anexar. As instruções específicas variam de acordo com a distribuição.
Execute este comando para extrair o contexto kubeconfig do seu cluster e armazená-lo na variável de ambiente
KUBECONFIG_CONTEXT
:KUBECONFIG_CONTEXT=$(kubectl config current-context)
O comando para registrar seu cluster varia um pouco dependendo se o seu cluster possui um emissor OIDC público ou privado. Selecione a aba que se aplica ao seu cluster:
Emissor privado de OIDC
Use o comando
gcloud container attached clusters register
para registrar o cluster:gcloud container attached clusters register CLUSTER_NAME \ --location=GOOGLE_CLOUD_REGION \ --fleet-project=PROJECT_NUMBER \ --platform-version=PLATFORM_VERSION \ --distribution=generic \ --context=KUBECONFIG_CONTEXT \ --has-private-issuer \ --kubeconfig=KUBECONFIG_PATH
Substitua o seguinte:
- CLUSTER_NAME : o nome do seu cluster. O CLUSTER_NAME deve estar em conformidade com o padrão RFC 1123 Label Names .
- GOOGLE_CLOUD_REGION : a Google Cloud região para administrar seu cluster
- PROJECT_NUMBER : o projeto host da frota para registrar o cluster com
- PLATFORM_VERSION : a versão da plataforma a ser usada para o cluster
- KUBECONFIG_CONTEXT : contexto no kubeconfig para acessar o cluster
- KUBECONFIG_PATH : caminho para seu kubeconfig
Emissor público de OIDC
Recupere a URL do emissor do OIDC do seu cluster e salve-a para uso posterior. As instruções específicas variam de acordo com a distribuição.
Execute este comando para extrair o contexto kubeconfig do seu cluster e armazená-lo na variável de ambiente
KUBECONFIG_CONTEXT
:KUBECONFIG_CONTEXT=$(kubectl config current-context)
Use o comando
gcloud container attached clusters register
para registrar o cluster:gcloud container attached clusters register CLUSTER_NAME \ --location=GOOGLE_CLOUD_REGION \ --fleet-project=PROJECT_NUMBER \ --platform-version=PLATFORM_VERSION \ --distribution=generic \ --issuer-url=ISSUER_URL \ --context=KUBECONFIG_CONTEXT \ --kubeconfig=KUBECONFIG_PATH
Substitua o seguinte:
- CLUSTER_NAME : o nome do seu cluster. O CLUSTER_NAME deve estar em conformidade com o padrão RFC 1123 Label Names .
- GOOGLE_CLOUD_REGION : a Google Cloud região para administrar seu cluster
- PROJECT_NUMBER : o projeto host da frota onde o cluster será registrado
- PLATFORM_VERSION : a versão dos clusters anexados do GKE a serem usados para o cluster
- ISSUER_URL : a URL do emissor recuperada anteriormente
- KUBECONFIG_CONTEXT : contexto no kubeconfig para acessar seu cluster, conforme extraído anteriormente
- KUBECONFIG_PATH : caminho para seu kubeconfig
Autorizar registro em nuvem/monitoramento em nuvem
Para que os clusters anexados do GKE criem e carreguem logs e métricas do sistema paraGoogle Cloud, deve ser autorizado.
Para autorizar a identidade de carga de trabalho do Kubernetes gke-system/gke-telemetry-agent
a gravar logs em Google Cloud Registro e métricas para Google Cloud Monitoramento, execute este comando:
gcloud projects add-iam-policy-binding GOOGLE_PROJECT_ID \
--member="serviceAccount:GOOGLE_PROJECT_ID.svc.id.goog[gke-system/gke-telemetry-agent]" \
--role=roles/gkemulticloud.telemetryWriter
Substitua GOOGLE_PROJECT_ID
pelo cluster Google Cloud ID do projeto.
Esta ligação IAM concede acesso para todos os clusters no Google Cloud projeto para carregar logs e métricas. Você só precisa executá-lo após criar seu primeiro cluster para o projeto.
Adicionar esta ligação IAM falhará a menos que pelo menos um cluster tenha sido criado em seu Google Cloud projeto. Isso ocorre porque o pool de identidades de carga de trabalho ao qual ele se refere ( GOOGLE_PROJECT_ID .svc.id.goog
) não é provisionado até a criação do cluster.