Cloud Intelligence™Cloud Intelligence™

Cloud Intelligence™

Maîtriser la version de Config Connector sur votre cluster GKE

By Eyal ZekariaJun 2, 20224 min read

Cette page est également disponible en English, Deutsch, Español, Italiano, 日本語 et Português.

Config Connector est un excellent outil pour gérer ses ressources Google Cloud via des manifestes Kubernetes. Voici comment gagner en contrôle en remplaçant l'installation via add-on par une installation manuelle.

Config-Connector

Pour mieux maîtriser la version de Config Connector, remplacez l'installation via add-on par une installation manuelle

Avec Config Connector, vous pouvez gérer les ressources GCP à l'aide de manifestes Kubernetes. Cet excellent outil signé Google est disponible sous forme d'installation via add-on sur les clusters GKE (qui répondent aux prérequis). Voici quelques-uns de ses atouts et cas d'usage :

  • Créer l'infrastructure sous-jacente d'un service déployé sur GKE en réutilisant les mêmes pipelines et paradigmes (il s'agit simplement de manifestes YAML supplémentaires)
  • Utiliser un cluster central de contrôle pour provisionner d'autres clusters, et ainsi mettre en œuvre l'Infrastructure as Code via Kubernetes
  • Provisionner de l'infrastructure (environnements de dev ou même un nouveau cluster de production) en un seul kubectl apply

Config Connector fonctionne en déployant un Operator StatefulSet (configconnector-operator-system/configconnector-operator), qui crée à son tour l'ensemble des ressources CustomResourceDefinition (CRD) ainsi que tous les workloads associés dans le namespace cnrm-system.

Config Connector évoluant en permanence, de nouvelles fonctionnalités sont régulièrement ajoutées au fil des versions (un nouveau type de ressource géré par Config Connector ou même un champ ajouté à une CRD). Malheureusement, la version de Config Connector installée via l'add-on GKE est liée à la version du master GKE. Autrement dit, pour mettre à jour la version de Config Connector installée par l'add-on, il vous faudra mettre à jour votre version de GKE (au minimum vers la version mineure suivante), ce qui n'est pas toujours souhaitable. De plus, la version intégrée accuse généralement quelques versions de retard par rapport à la dernière version disponible de Config Connector : même après cette mise à jour, vous risquez donc de ne pas bénéficier d'une nouvelle fonctionnalité ou d'un correctif présent dans la dernière version.

D'après mes tests, voici les versions de Config Connector livrées avec l'add-on GKE :

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

La dernière version de Config Connector au moment de la rédaction de cet article est la v1.83.0.

Installation manuelle

Pour mieux maîtriser la version de Config Connector sur un cluster GKE, vous pouvez remplacer l'installation via add-on par une installation manuelle [1]. Attention : la responsabilité de la mise à jour de Config Connector vous revient alors, puisqu'il ne sera plus mis à jour automatiquement avec votre cluster GKE.

Remplacer l'installation via add-on par une installation manuelle

1. désactivez l'installation via add-on sur le cluster :

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

2. supprimez le StatefulSet de l'opérateur Config Connector :

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

  1. 3. installez la dernière version (ou toute autre version souhaitée) de l'opérateur Config Connector en suivant la documentation [2]

Avec ce processus, l'ensemble des CRD reste intact, de même que l'objet ConfigConnector [3] : toutes les ressources créées avec Config Connector ne sont donc pas impactées non plus.

Vérifiez que le nouveau pod de l'opérateur tourne bien avec la version souhaitée :

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

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

et qu'il a bien recréé tous les workloads du namespace cnrm-system (la réconciliation peut prendre quelques minutes) :

$ 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

Désormais, toute montée de version de Config Connector devra être effectuée manuellement, comme indiqué dans la documentation [4].

Revenir à l'installation via add-on

Si vous mettez à niveau votre cluster GKE vers une version embarquant la version de Config Connector souhaitée dans l'add-on, vous pouvez revenir à l'installation via add-on et redéléguer la gestion à GKE.

La procédure consiste essentiellement à inverser les étapes précédentes :

  1. activez l'add-on Config Connector sur votre cluster :

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

  1. supprimez le StatefulSet de l'opérateur Config Connector :

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

Si vous observez les pods du namespace configconnector-operator-system, vous constaterez que le pod de l'opérateur redémarre (puisque le StatefulSet est recréé par l'add-on) et tourne avec la version gérée par l'add-on. Les workloads du namespace cnrm-system seront eux aussi remplacés lors de la première boucle de réconciliation de l'opérateur.

[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