Cloud Intelligence™Cloud Intelligence™

Cloud Intelligence™

Assuma o controle da versão do Config Connector no seu cluster GKE

By Eyal ZekariaJun 2, 20224 min read

Esta página também está disponível em English, Deutsch, Español, Français, Italiano e 日本語.

O Config Connector é uma ótima ferramenta para gerenciar recursos do Google Cloud com manifestos Kubernetes. Veja como ganhar mais controle trocando a instalação via add-on por uma manual.

Config-Connector

Para ter mais controle sobre a versão do Config Connector, troque a instalação via add-on por uma manual

Com o Config Connector, dá para gerenciar recursos do GCP usando manifestos Kubernetes. É uma excelente ferramenta criada pelo Google e disponível como instalação via add-on em clusters GKE (que atendam aos requisitos). Estes são apenas alguns dos benefícios e casos de uso:

  • Criar a infraestrutura de base de um serviço implantado no GKE usando os mesmos pipelines e paradigmas (são só manifestos YAML adicionais)
  • Usar um cluster central de "controle" para subir outros clusters, viabilizando Infrastructure as Code com Kubernetes
  • Subir infraestrutura (pense em ambientes de dev ou até em um novo cluster de produção) com um único kubectl apply

O Config Connector funciona implantando um Operator StatefulSet (configconnector-operator-system/configconnector-operator), que por sua vez cria todos os recursos CustomResourceDefinition (CRDs) e todos os workloads de apoio no namespace cnrm-system.

Como o Config Connector evolui constantemente, novos recursos costumam ser adicionados a cada nova versão (um novo tipo de recurso gerenciado pelo Config Connector ou até um campo novo em um CRD). Infelizmente, a versão do Config Connector instalada pelo add-on do GKE está atrelada à versão do master do GKE. Ou seja, para atualizar a versão do Config Connector instalada pelo add-on, você vai precisar atualizar a versão do GKE (provavelmente para a próxima versão minor, no mínimo), o que nem sempre é desejável. Além disso, a versão embarcada costuma estar algumas versões atrás da mais recente do Config Connector, então, mesmo atualizando, talvez você ainda não tenha acesso a um recurso novo ou a uma correção lançada na versão mais atual.

Pelos testes que fiz, posso afirmar que as seguintes versões do Config Connector vêm com o add-on do GKE:

  • v1.69.0 para GKE 1.21.x
  • v1.71.0 para GKE 1.22.x

A versão mais recente do Config Connector no momento em que este artigo foi escrito é a v1.83.0.

Instalação manual

Para ter mais controle sobre a versão do Config Connector em um cluster GKE, você pode trocar a instalação via add-on por uma manual [1]. Vale lembrar que, ao fazer isso, a responsabilidade de atualizar o Config Connector passa a ser sua, já que ele não será mais atualizado automaticamente junto com o cluster GKE.

Trocando a instalação via add-on por uma manual

1. desative a instalação via add-on no cluster:

gcloud container clusters update <CLUSTER_NAME> --update-addons ConfigConnector=DISABLED

2. exclua o StatefulSet do operator do Config Connector:

kubectl -nconfigconnector-operator-system delete statefulset configconnector-operator

  1. 3. instale a versão mais recente (ou a versão que preferir) do operator do Config Connector conforme a documentação [2]

Com esse processo, todos os CRDs devem permanecer intactos, assim como o objeto ConfigConnector [3], então os recursos criados com o Config Connector também não devem ser afetados.

Confirme se o novo pod do operator está rodando na versão desejada:

$ kubectl -nconfigconnector-operator-system get statefulsets configconnector-operator -oyaml |grep operator-version | head -n1

cnrm.cloud.google.com/operator-version: 1.83.0

e se ele recriou todos os workloads em execução no namespace cnrm-system (a reconciliação pode levar alguns minutos):

$ kubectl -ncnrm-system get po -oyaml |grep /version

  cnrm.cloud.google.com/version: 1.83.0

  cnrm.cloud.google.com/version: 1.83.0

  cnrm.cloud.google.com/version: 1.83.0

  cnrm.cloud.google.com/version: 1.83.0

A partir daí, se quiser fazer upgrade do Config Connector, você terá que fazer manualmente, conforme descrito na documentação [4].

Voltando para a instalação via add-on

Se você atualizar o cluster GKE para uma versão cujo add-on já contém a versão desejada do Config Connector, dá para voltar à instalação via add-on e devolver o gerenciamento ao GKE.

O processo basicamente inverte as instruções anteriores:

  1. habilite o add-on do Config Connector no seu cluster:

gcloud container clusters update <CLUSTER_NAME> --update-addons ConfigConnector=ENABLED

  1. exclua o StatefulSet do operator do Config Connector:

kubectl -nconfigconnector-operator-system delete statefulset configconnector-operator

Se você acompanhar os pods no namespace configconnector-operator-system, em algum momento vai ver o pod do operator subir de novo (já que o StatefulSet é recriado pelo add-on), rodando a versão gerenciada pelo add-on. Os workloads no namespace cnrm-system também serão substituídos no primeiro loop de reconciliação do operator.

[1] https://cloud.google.com/config-connector/docs/how-to/advanced-install#manual

[2] https://cloud.google.com/config-connector/docs/how-to/advanced-install#installing_the_operator

[3] https://cloud.google.com/config-connector/docs/how-to/install-upgrade-uninstall#addon-configuring

[4] https://cloud.google.com/config-connector/docs/how-to/advanced-install#upgrading