Import au démarrage
Sur cette page
L’image TOSIAM contient la commande tosiam-config. Quand on lui donne un répertoire de configuration, son point d’entrée l’applique à chaque démarrage, une fois le serveur configuré (ou monté de version) : c’est un tosiam-config apply --all-realms contre le serveur lui-même. Comme le plan est recalculé à chaque fois, un démarrage sans changement de la configuration n’écrit rien.
Le déroulement :
- le serveur démarre, se configure ou monte de version comme d’habitude ;
- seul le serveur d’ordinal 0 du StatefulSet (
tosiam-0) applique la configuration ; les autres la reçoivent par le config store ; - pendant l’import, le serveur reste non prêt : il ne reçoit pas de trafic avant d’avoir la configuration voulue ;
- sur un échec, le conteneur s’arrête (et Kubernetes le relance), ou bien démarre sans la configuration, au choix.
L’import demande TOSIAM_AUTO_CONFIGURE=true : sans lui, il est ignoré, et le journal le dit.
Variables d’environnement de l’image#
| Variable | Défaut | Rôle |
|---|---|---|
TOSIAM_CONFIG_IMPORT_DIR | — | Répertoire de la configuration (tosiam.yaml, realms/…) |
TOSIAM_CONFIG_IMPORT_ARCHIVE | — | À la place du répertoire : archive .tar.gz de la configuration |
TOSIAM_CONFIG_IMPORT_PRUNE | none | managed : supprime les objets du périmètre géré absents des fichiers |
TOSIAM_CONFIG_IMPORT_ON_ERROR | fail | fail : le conteneur s’arrête sur un échec ; continue : le serveur démarre sans la configuration, et l’échec est journalisé |
TOSIAM_CONFIG_IMPORT_USERNAME | amadmin | Compte de l’import |
Le mot de passe du compte est lu dans le fichier /run/secrets/tosiam/config-import-password, à défaut dans amadmin-password. Le répertoire et l’archive s’excluent : donnez l’un ou l’autre. Le répertoire ou l’archive doit contenir tosiam.yaml.
Secrets#
Les références ${file:…} des fichiers sont lues dans le conteneur. Montez les secrets en fichiers, par exemple un Secret Kubernetes, et faites-les pointer dessus :
userpassword: ${file:/run/secrets/tosiam-config/app1-secret}Les références ${env:…} lisent les variables d’environnement du conteneur.
Avec le chart Helm#
Le chart tosiam règle ces variables par ses valeurs configImport (préfixées par am. dans le chart tosiam-stack).
-
Mettez la configuration dans une archive, puis dans un ConfigMap. Un ConfigMap monté est plat : il ne peut pas contenir l’arborescence
realms/…elle-même. Sa taille est limitée à 1 Mo.tar czf config.tar.gz -C tosiam-config . kubectl create configmap tosiam-config --from-file=config.tar.gz -
Mettez les secrets référencés par
${file:/run/secrets/tosiam-config/<clé>}dans un Secret :kubectl create secret generic tosiam-config-secrets --from-literal=app1-secret='…' -
Activez l’import :
helm upgrade sso oci://ghcr.io/theopensourceitrust/charts/tosiam-stack --reuse-values \ --set am.configImport.enabled=true \ --set am.configImport.archive.configMap=tosiam-config \ --set am.configImport.secret=tosiam-config-secrets \ --set am.configImport.revision="$(git rev-parse --short HEAD)"
Un changement du ConfigMap ne relance pas les pods. Pour publier une nouvelle configuration, mettez à jour le ConfigMap puis changez configImport.revision, par exemple avec l’empreinte git de la configuration : le StatefulSet redémarre, et le pod 0 applique la nouvelle configuration.
| Valeur | Défaut | Rôle |
|---|---|---|
configImport.enabled | false | Active l’import au démarrage |
configImport.archive.configMap / .key | — / config.tar.gz | ConfigMap qui contient l’archive .tar.gz de la configuration |
configImport.volume | — | À la place de l’archive : volume qui contient le répertoire de la configuration (PVC, CSI…), au format d’un volume de pod sans son nom |
configImport.secret | — | Secret monté sous /run/secrets/tosiam-config, cible des références ${file:…} |
configImport.prune | none | none ou managed |
configImport.onError | fail | fail ou continue |
configImport.username / .passwordSecret | amadmin / — | Compte de l’import ; sans passwordSecret, le mot de passe d’amadmin |
configImport.revision | — | Changer cette valeur relance le StatefulSet |
Lancer la commande dans un pod#
La commande sert aussi à la main, par exemple pour calculer un plan depuis un pod :
kubectl exec tosiam-0 -- sh -c 'tosiam-config plan --server http://$(hostname -f):8080/tosiam \
--dir /tmp/config --all-realms --password-file /run/secrets/tosiam/amadmin-password'L’URL doit être le nom complet du pod : le serveur refuse 127.0.0.1 et localhost.
Mis à jour le