Anexar seu cluster em conformidade com a CNCF

Com os clusters anexados ao GKE, é possível migrar seus clusters do Kubernetes atuais, hospedados na AWS, no Azure ou em outro lugar, para o painel da edição Enterprise do Google Kubernetes Engine (GKE) para gerenciamento centralizado. Isso inclui a capacidade de anexar qualquer cluster do Kubernetes em conformidade com CNCF.

Clusters do Kubernetes compatíveis

É possível adicionar qualquer cluster do Kubernetes em conformidade com nós x86 à sua frota e, em seguida, visualizá-lo no console do Google Cloud com os clusters do GKE.

Embora o Google não verifique todas as distribuições do Kubernetes para garantir a compatibilidade completa dos recursos, as incompatibilidades descobertas estão documentadas aqui. Para mais detalhes e assistência para solução de problemas, consulte o Suporte à versão e upgrade da edição Enterprise do Google Kubernetes Engine (GKE).

Pré-requisitos

Verifique se o cluster atende aos requisitos de cluster.

Ao anexar o cluster, especifique o seguinte:

A região administrativa é uma região do Google Cloud para administrar o cluster anexado. É possível escolher qualquer região compatível, mas a prática recomendada é escolher a região geograficamente mais próxima do 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 cluster. É possível 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 do local do Google Cloud em que o cluster será administrado.

Numeração da versão da plataforma

Esses documentos se referem à 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ões que o GKE. Por exemplo, 1.21.5-gke.1. Ao anexar ou atualizar seu cluster, escolha uma versão de plataforma em que a versão secundária seja igual ou um nível abaixo da versão do Kubernetes do cluster. Por exemplo, é possível anexar um cluster que executa o Kubernetes v1.22.* com a plataforma de clusters anexados do GKE 1.21.* ou 1.22.*.

Isso permite fazer upgrade do cluster para a próxima versão secundária antes de fazer upgrade dos clusters anexados ao GKE.

Anexar o cluster

Para anexar o cluster em conformidade com a CNCF ao Gerenciamento de frota do Google Cloud, execute os seguintes comandos:

  1. Verifique se o arquivo kubeconfig tem uma entrada para o cluster que você quer anexar. As instruções específicas variam de acordo com a distribuição.

  2. Execute este comando para extrair o contexto kubeconfig do cluster e armazená-lo na variável de ambiente KUBECONFIG_CONTEXT:

    KUBECONFIG_CONTEXT=$(kubectl config current-context)
    
  3. O comando para registrar o cluster varia um pouco, dependendo se ele tem um emissor OIDC público ou privado. Escolha a guia que se aplica ao seu cluster:

    Emissor do OIDC particular

    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:

    • CLUSTER_NAME: o nome do cluster
    • GOOGLE_CLOUD_REGION: a região do Google Cloud para administrar o cluster do
    • PROJECT_NUMBER: o projeto host da frota para registrar o cluster com
    • PLATFORM_VERSION: a versão da plataforma a ser usada no cluster.
    • KUBECONFIG_CONTEXT: contexto no kubeconfig para acessar o cluster.
    • KUBECONFIG_PATH: caminho para o kubeconfig

    Emissor do OIDC público

    1. Recupere o URL do emissor do OIDC do cluster e salve-o para usar mais tarde. As instruções específicas variam de acordo com a distribuição.

    2. Execute este comando para extrair o contexto kubeconfig do cluster e armazená-lo na variável de ambiente KUBECONFIG_CONTEXT:

      KUBECONFIG_CONTEXT=$(kubectl config current-context)
      
    3. 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:

      • CLUSTER_NAME: o nome do cluster
      • GOOGLE_CLOUD_REGION: a região do Google Cloud para administrar o cluster
      • PROJECT_NUMBER: o projeto host da frota em que o cluster será registrado
      • PLATFORM_VERSION: a versão dos clusters anexados do GKE para usar no cluster.
      • ISSUER_URL: o URL do emissor recuperado anteriormente
      • KUBECONFIG_CONTEXT: contexto no kubeconfig para acessar seu cluster, conforme extraído anteriormente
      • KUBECONFIG_PATH: caminho para o kubeconfig

Autorizar o Cloud Logging / Cloud Monitoring

Para que os clusters anexados ao GKE criem e façam upload de registros e métricas do sistema para o Google Cloud, eles precisam ser autorizados.

Para autorizar a Identidade da carga de trabalho do Kubernetes gke-system/gke-telemetry-agent a gravar registros no Google Cloud Logging e métricas no Google Cloud Monitoring, 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 ID do projeto do Google Cloud do cluster.

Essa vinculação do IAM concede acesso a todos os clusters no projeto do Google Cloud para fazer upload de registros e métricas. Você só precisa executá-lo após criar o primeiro cluster para o projeto.

A adição dessa vinculação do IAM falhará a menos que pelo menos um cluster tenha sido criado no seu projeto do Google Cloud. Isso ocorre porque o pool de identidades de cargas de trabalho a que ele se refere (GOOGLE_PROJECT_ID.svc.id.goog) não é provisionado até a criação do cluster.