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.

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
- 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:
- habilite o add-on do Config Connector no seu cluster:
gcloud container clusters update <CLUSTER_NAME> --update-addons ConfigConnector=ENABLED
- 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