Sans le chart : Ansible
demo/k3s/ansible/deploy.yml cree les objets que le chart rend avec
plusieurs replicas, ban.backend: configmap, le Secret partage, le canal du
cluster, la porte de controle et cluster.unreadyWhen: auto, pour un
cluster deploye par Ansible plutot que par Helm.
ansible-galaxy collection install kubernetes.core
pip install kubernetes
ansible-playbook demo/k3s/ansible/deploy.yml -e ns=files -e release=gate \
-e config_file=config.toml -e replicas=3
config_file est le config.toml que le chart prendrait en
config.inline : ecoutes sur 0.0.0.0, backend = "configmap" sous
[sftp.ban], [api.ban] et [admin.ban] (celles de ban_lists), allow_static_token = false sous
[admin] (le chart l’ecrit), host_keys sous /keys, du Secret
<release>-host-keys, a creer.
| Objet | Comme le chart |
|---|---|
ServiceAccount <release> | son jeton monte (automountServiceAccountToken: true) : les pods lisent et ecrivent les objets ci-dessous par l’API Kubernetes |
Roles <release>-bans, <release>-access | get, update, patch sur cette seule ConfigMap ; watch sur la collection pour les bans (un watch ne peut nommer un objet) |
Role <release>-cluster-secret | get, update sur ce seul Secret |
Secret <release>-cluster, ConfigMaps <release>-bans, <release>-access | crees vides, seulement s’ils manquent : les pods y ecrivent leurs entrees, un passage suivant n’y touche pas |
ConfigMap <release>-config | config.toml, monte en entier sur /config |
Services <release> (SFTP), <release>-api (API de fichiers), <release>-control (console, /metrics, sondes) | TCP, ClusterIP (sftp_service_type, admin_service_type, control_service_type) |
Service <release>-cluster | headless, publishNotReadyAddresses: true : un pod retire par les detecteurs reste un pair |
NetworkPolicy <release> | SFTP et API de fichiers depuis toute source ; port de controle depuis les pods du cluster ; port du cluster depuis les pods de la release |
Deployment <release> | les variables CRAFT_FILE_GATE_* du chart (port de controle, Secret, revocations, acces temporaires, une par liste de bans de ban_lists, canal du cluster, min_peers, unready_when, fils de hachage d’apres requests.cpu) ; sondes startupProbe et livenessProbe sur /livez, readinessProbe sur /readyz, toutes sur le port de controle ; le contexte de securite du chart ; termination_grace_secs : shutdown_grace_period_secs plus 60 s, 90 par defaut |
Aucun Role ne porte create : sur une collection, il couvrirait chaque objet
du namespace. Les variables, leurs defauts et leurs noms : le haut de
deploy.yml.
Le verifier contre le chart
demo/k3s/demo.sh deploy ansible # le playbook, dans un conteneur, contre le k3s de la demo
demo/k3s/demo.sh check ansible
check ansible compare chaque objet, avec les defauts qu’ajoute le serveur
d’API, au chart rendu depuis les memes entrees (les valeurs du mode
cluster, un essai a blanc cote serveur), puis joue le
scenario sur ses pods. Il ecrit
the 17 objects of the chart, identical, ou les differences.