Nous disposons d'un ensemble assez vaste de fichiers de configuration yaml que nous utilisons pour définir les déploiements, les ensembles étatiques, les espaces de noms, les services, etc. ressources qui doivent être créées dans l'API kubernetes sur un cluster.
Nous avons expérimenté quelques outils comme terraform et ansible pour déployer le calcul sous-jacent et le cluster k8s, et ils fonctionnent bien pour appliquer la gestion de la configuration à ce niveau.
Ce que je n'ai pas trouvé, c'est un bon moyen d'automatiser intelligemment le déploiement et la mise à jour de ces ressources. Nous utilisons le contrôle de la source pour gérer les changements apportés à ces définitions de ressources et nous introduisons ces changements dans les clusters de test et de production à l'aide de la fonction kubectl apply -f
.
Il s'agit souvent d'un changement simple, comme la mise à jour de la balise image d'un pod dans un déploiement. Dans ce cas, un simple patch de l'image image
sur le déploiement est tout ce qui est nécessaire.
Pour certaines des ressources canoniques, j'ai joué un peu avec fournisseur de terraforme kubernetes . C'est plutôt cool car il est conscient des propriétés et peut faire des choses comme décider entre un démontage/reconstruction d'une entité et un simple patch.
Il est cependant moins bon dans sa vitesse de développement. Il est difficile de faire quoi que ce soit au-delà de la version vanilla k8s. Cela rend l'outil inutile pour les ressources personnalisées comme celles utilisées avec les opérateurs. Il existe des fournisseurs similaires qui appliqueront vos définitions yaml de k8s en envoyant un message à kubectl
mais ils ne sont pas conscients des propriétés.
Toute indication sur les solutions serait appréciée avant que je ne commence à appliquer un peu de bash-fu.