Cloud Intelligence™Cloud Intelligence™

Cloud Intelligence™

Controla la versión de Config Connector en tu cluster de GKE

By Eyal ZekariaJun 2, 20224 min read

Esta página también está disponible en English, Deutsch, Français, Italiano, 日本語 y Português.

Config Connector es una gran herramienta para gestionar recursos de Google Cloud con manifiestos de Kubernetes. Te mostramos cómo ganar mayor control reemplazando la instalación como add-on por una manual.

Config-Connector

Para tener mayor control sobre la versión de Config Connector, reemplaza la instalación como add-on por una manual

Con Config Connector puedes gestionar recursos de GCP usando manifiestos de Kubernetes. Es una gran herramienta creada por Google y disponible como instalación de add-on en clusters de GKE (que cumplan los requisitos). Estas son solo algunas de sus ventajas y casos de uso:

  • Crear la infraestructura subyacente para un servicio desplegado en GKE usando los mismos pipelines y paradigmas (son solo manifiestos YAML adicionales)
  • Usar un cluster central de "control" para levantar otros clusters, logrando así Infrastructure as Code mediante Kubernetes
  • Permitir levantar infraestructura (piensa en entornos de desarrollo o incluso un nuevo cluster de producción) con un solo kubectl apply

Config Connector funciona desplegando un Operator StatefulSet (configconnector-operator-system/configconnector-operator), que a su vez crea todos los recursos CustomResourceDefinition (CRDs) y todos los workloads de soporte en el namespace cnrm-system.

Como Config Connector evoluciona constantemente, suelen incorporarse nuevas funcionalidades a medida que se lanzan nuevas versiones (un nuevo tipo de recurso gestionable por Config Connector o incluso un campo añadido a un CRD). Lamentablemente, la versión de Config Connector que se instala mediante el add-on de GKE está atada a la versión del master de GKE. Esto significa que, para actualizar la versión de Config Connector instalada por el add-on, tendrás que actualizar tu versión de GKE (probablemente a la siguiente versión menor, como mínimo), lo cual no siempre conviene. Además, la versión incluida suele ir varias versiones por detrás de la última disponible de Config Connector, por lo que aun así podrías quedarte sin una nueva funcionalidad o sin un fix añadido en la última versión.

Por las pruebas que hice, puedo confirmar que las siguientes versiones de Config Connector se instalan con el add-on de GKE:

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

La última versión de Config Connector al momento de escribir esto es la v1.83.0.

Instalación manual

Para tener mayor control sobre la versión de Config Connector en un cluster de GKE, puedes reemplazar la instalación del add-on por una manual [1]. Ten en cuenta que, al hacerlo, la responsabilidad de actualizar Config Connector pasa a ser tuya, ya que dejará de actualizarse automáticamente junto con tu cluster de GKE.

Reemplazar la instalación del add-on por una manual

1. desactiva la instalación del add-on en el cluster:

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

2. elimina el StatefulSet del operador de Config Connector:

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

  1. 3. instala la última versión (o la que prefieras) del operador de Config Connector siguiendo la documentación [2]

Con este proceso, todos los CRDs deberían quedar intactos, al igual que el objeto ConfigConnector [3], por lo que tampoco deberían verse afectados los recursos creados con Config Connector.

Verifica que el nuevo pod del operador esté corriendo con la versión deseada:

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

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

y que haya recreado todos los workloads que corren en el namespace cnrm-system (la reconciliación puede tardar un par de 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

De aquí en adelante, si quieres actualizar Config Connector, tendrás que hacerlo manualmente tal como se describe en la documentación [4].

Volver a la instalación con add-on

Si actualizas tu cluster de GKE a una versión cuyo add-on incluye la versión de Config Connector que necesitas, puedes volver a la instalación del add-on y devolver la gestión a GKE.

El proceso básicamente revierte las instrucciones anteriores:

  1. activa el add-on de Config Connector en tu cluster:

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

  1. elimina el StatefulSet del operador de Config Connector:

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

Si observas los pods en el namespace configconnector-operator-system, en algún momento verás que el pod del operador se vuelve a iniciar (porque el add-on recrea el StatefulSet) y corre la versión gestionada por el add-on. Los workloads del namespace cnrm-system también serán reemplazados durante el primer ciclo de reconciliación del operador.

[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