Un outil pour les diriger tous. Comment kapitan permet de décrire un environnement de déploiement complet, quel que soit l’outil utilisé (Ansible, Kubernetes, …), du provisionning du matériel jusqu’à l’installation des applications en passant par la documentation.
7. Et encore ?
Moteur de configuration générique
Basé sur des templates
Pour Kubernetes, Terraform et autres choses
Source : https://kapitan.dev/
8. Et concrètement ?
Provisionner le matériel avec Terraform, Ansible ou autres
Générer tous les manifestes Kubernetes d’une application
Documenter l’ensemble de l’environnement
Générer les scripts de maintenance
À partir d’un seul inventaire facile à réutiliser et à personnaliser
11. Kapitan = 3 bonnes idées réunies :
– Inventaire unique pour la configuration
– Templates Jinja2 pour documents textes
– Composants Jsonnet pour documents structuré
12. Questions
Pourquoi ne pas réutiliser l’inventaire
d’Ansible, Terraform etc ?
Pourquoi ne pas déployer les applications
kubernetes avec Helm ?
13. Inventaire unique
Source de vérité pour tout l’environnement.
Fonctions :
– Concepts de Targets et de Classes
– Surcharge des paramètres (ordre d’inclusion des fichiers)
– Référencement de paramètres de l’inventaire (en lazy)
– Gestion des secrets (y compris génération)
14. Jinja2
Moteur de templates
pour documents textes,
familier aux utilisateurs Ansible.
Usage :
– Génération de scripts, documentations,
tout ce qui n’est pas un arbre d’objets
Source : https://jinja.palletsprojects.com/en/2.10.x/
15. Jsonnet : « The Data Templating Language »
= JSON + :
– Variables (normales et cachées), Fonctions, Imports
– Syntaxe pour remplacer / surcharger un objet
– Bibliothèque standard
– Syntaxe pour les commentaires :-)
Usage :
– Génération de manifestes JSON ou YAML
concis, réutilisables et validables
Source : https://jsonnet.org/
16. Bibliothèque Kapitan
Accessible depuis templates Jinja2
comme depuis composants jsonnet.
Donne accès :
- objets Kapitan : inventory etc.
- helpers divers : yaml_load/dump, jsonschema etc.
Source : https://kapitan.dev/compile/