Anexar um cluster significa associá-lo Google Cloud registando-o Google Cloud na gestão de frotas e instalando o software de clusters anexados do GKE no mesmo.
Pode anexar um cluster através da CLI gcloud ou do Terraform. Para saber como criar e anexar um cluster do AKS através do Terraform, consulte o repositório do GitHub de exemplos para clusters anexados do GKE.
Para anexar um cluster do AKS através do gcloud, siga os passos seguintes.
Pré-requisitos
Certifique-se de que o cluster cumpre os requisitos do cluster.
Quando anexar o cluster, tem de especificar o seguinte:
- Uma região administrativa Google Cloudsuportada
- Uma versão da plataforma
A região administrativa é uma Google Cloud região a partir da qual pode administrar o cluster anexado. Pode escolher qualquer região suportada, mas a prática recomendada é escolher a região geograficamente mais próxima do seu cluster. Não são armazenados dados do utilizador na região administrativa.
A versão da plataforma é a versão dos clusters anexados do GKE a instalar no seu cluster. Pode apresentar uma lista de todas as versões suportadas executando o seguinte comando:
gcloud container attached get-server-config \
--location=GOOGLE_CLOUD_REGION
Substitua GOOGLE_CLOUD_REGION pelo nome da Google Cloud localização a partir da qual vai administrar o cluster.
Numeração das versões da plataforma
Estes documentos referem-se à versão dos clusters anexados do GKE como a versão da plataforma, para a distinguir da versão do Kubernetes. Os clusters anexados do GKE usam a mesma convenção de numeração de versões que o GKE, por exemplo, 1.21.5-gke.1. Quando anexar ou atualizar o cluster, tem de escolher uma versão da plataforma cuja versão secundária seja igual ou um nível inferior à versão do Kubernetes do cluster. Por exemplo, pode anexar um cluster que execute o Kubernetes v1.22.* com a versão 1.21.* ou 1.22.* da plataforma de clusters anexados do GKE.
Isto permite-lhe atualizar o cluster para a versão secundária seguinte antes de atualizar os clusters anexados do GKE.
Anexe o seu cluster do AKS
Para associar o cluster do AKS à Google Cloud gestão de frotas, execute os seguintes comandos:
Certifique-se de que o ficheiro kubeconfig tem uma entrada para o cluster que quer anexar:
az aks get-credentials -n AKS_CLUSTER_NAME \ -g RESOURCE_GROUP
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)
O comando para registar o cluster varia ligeiramente consoante tenha configurado o cluster com o emissor OIDC privado predefinido ou o público experimental. Escolha o separador que se aplica ao seu cluster:
Emissor de OIDC privado (predefinição)
Use o
gcloud container attached clusters register
comando para registar o cluster:gcloud container attached clusters register CLUSTER_NAME \ --location=GOOGLE_CLOUD_REGION \ --fleet-project=PROJECT_NUMBER \ --platform-version=PLATFORM_VERSION \ --distribution=aks \ --context=KUBECONFIG_CONTEXT \ --has-private-issuer \ --kubeconfig=KUBECONFIG_PATH
Substitua o seguinte:
- CLUSTER_NAME: o nome do cluster. Este nome pode ser o mesmo AKS_CLUSTER_NAME que usou no passo 1. O CLUSTER_NAME tem de estar em conformidade com a norma RFC 1123 Label Names.
- GOOGLE_CLOUD_REGION: a região a partir da qual administrar o cluster Google Cloud
- PROJECT_NUMBER: o projeto anfitrião do Fleet para registar o cluster
- PLATFORM_VERSION: a versão da plataforma a usar para o cluster
- KUBECONFIG_CONTEXT: contexto no kubeconfig para aceder ao cluster do AKS
- KUBECONFIG_PATH: caminho para o seu kubeconfig
Emissor OIDC público
Obtenha o URL do emissor OIDC do seu cluster com o seguinte comando:
az aks show -n CLUSTER_NAME \ -g RESOURCE_GROUP \ --query "oidcIssuerProfile.issuerUrl" -otsv
Substitua RESOURCE_GROUP pelo grupo de recursos do AKS ao qual o seu cluster pertence.
O resultado deste comando é o URL do seu emissor de OIDC. Guarde este valor para usar mais tarde.
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)
Use o
gcloud container attached clusters register
comando para registar o cluster:gcloud container attached clusters register CLUSTER_NAME \ --location=GOOGLE_CLOUD_REGION \ --fleet-project=PROJECT_NUMBER \ --platform-version=PLATFORM_VERSION \ --distribution=aks \ --issuer-url=ISSUER_URL \ --context=KUBECONFIG_CONTEXT \ --kubeconfig=KUBECONFIG_PATH
Substitua o seguinte:
- CLUSTER_NAME: o nome do cluster. Este nome pode ser o mesmo AKS_CLUSTER_NAME que usou no passo 1. O elemento CLUSTER_NAME tem de estar em conformidade com a norma RFC 1123 Label Names.
- GOOGLE_CLOUD_REGION: a região para administrar o seu cluster Google Cloud
- PROJECT_NUMBER: o projeto anfitrião da frota onde o cluster vai ser registado
- PLATFORM_VERSION: a versão dos clusters anexados do GKE a usar para o cluster
- ISSUER_URL: o URL do emissor obtido anteriormente
- KUBECONFIG_CONTEXT: contexto no kubeconfig para aceder ao seu cluster, conforme extraído anteriormente
- KUBECONFIG_PATH: caminho para o seu kubeconfig
Autorize o Cloud Logging / Cloud Monitoring
Para que os clusters anexados do GKE criem e carreguem registos e métricas do sistema para o Google Cloud, têm de ser autorizados.
Para autorizar a identidade da carga de trabalho do Kubernetes gke-system/gke-telemetry-agent
a escrever registos 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 cluster.
Esta associação de IAM concede acesso a todos os clusters no projeto Google Cloud project para carregar registos e métricas. Só tem de o executar depois de criar o primeiro cluster para o projeto.
A adição desta associação de IAM falha, a menos que tenha sido criado, pelo menos, um cluster no seu projeto Google Cloud . Isto deve-se ao facto de o Workload Identity Pool a que se refere (GOOGLE_PROJECT_ID.svc.id.goog
) não ser aprovisionado até à criação do cluster.