Environnements et restauration
Fonctionnalité déployée et prise en charge. Les champs et commandes décrits ici sont stables au sein de la version v1alpha1.
La plateforme garde l'historique de tout ce que vous appliquez. Vous pouvez donc figer ce
qui tourne pendant que vous préparez la suite, revenir à une version précédente, ou
cloner un tenant. Pour tenir plusieurs environnements côte à côte (dev, prod…), créez un tenant par environnement.
Quel outil pour quel besoin
| Besoin | Commande |
|---|---|
| Tenir plusieurs environnements côte à côte | un tenant par environnement : sng tenant create acme-dev, puis sng tenant use acme-dev |
| Geler ce qui tourne pendant qu'on continue à préparer | sng env checkout <nom> |
| Libérer ce qui a été préparé | sng env refresh ou sng env checkout main |
| Revenir à une version figée | sng env restore env/<tenant>/<nom> |
| Un nouvel environnement qui part d'une copie de l'existant | sng env create-tenant <nouveau-tenant> |
Un tenant par environnement
Un environnement, c'est un tenant : chacun a ses propres manifestes, ses droits, son quota et
ses domaines. Nommez-les acme-dev, acme-prod, acme-staging… (les noms dev, prod et
staging seuls sont réservés, voir Noms de tenant).
sng tenant use acme-dev
sng apply ./manifests # appliqué dans acme-dev
sng tenant use acme-prod # passer à l'autre environnement
sng apply ./manifests # appliqué dans acme-prod
Ce que vous obtenez : App web dans acme-dev et App web dans acme-prod sont deux
ressources distinctes, avec leurs propres droits et leur propre quota.
Pour partir d'une copie de l'existant, voir « Créer un tenant à partir d'un autre » plus bas.
Figer ce qui tourne
Par défaut, chaque sng apply est mis en œuvre immédiatement. Pendant une période sensible
(un lancement, une démonstration), vous pouvez figer le tenant : ce qui tourne ne change
plus, mais vous continuez d'appliquer vos manifestes, qui sont enregistrés pour plus tard.
sng env checkout v2
La commande ne répond rien quand elle réussit ; le tenant est figé en moins d'une minute. Vérifiez :
sng env list
branch v2
follow-main false
branchvautmainquand le tenant n'est pas figé, ou<nom>quand il est figé sur la version<nom>.follow-mainvauttruequand la version figée rattrape automatiquement vos nouveauxapply(voir ci-dessous).
Libérer ce qui a été préparé
Trois façons de reprendre :
sng env refresh # applique tout de suite ce qui a été préparé, puis continue de suivre
sng env checkout v2 --follow # reste sur v2, mais rattrape automatiquement chaque nouvel apply
sng env checkout main # revient au fonctionnement normal
| Commande | Effet |
|---|---|
checkout NAME | Fige le tenant sur la version NAME, créée à partir de ce qui tourne si elle n'existe pas |
checkout NAME --follow | Idem, mais la version avance d'elle-même à chaque nouvel apply |
refresh | Rattrape immédiatement les apply en attente et active le suivi |
checkout main | Revient au fonctionnement normal : chaque apply est mis en œuvre immédiatement |
Ce que vous pouvez en attendre : chaque commande est effective en moins d'une minute.
Revenir à une version précédente
Avant un changement risqué, figez la version qui fonctionne (sng env checkout stable). Si
le changement se passe mal, revenez-y :
sng pull ./avant-restauration # garder une trace de ce que vous allez remplacer
sng env restore env/acme/stable
Ce que vous obtenez :
- l'état désiré de votre tenant redevient exactement celui de la version indiquée ;
- les manifestes ajoutés depuis sont supprimés, ceux modifiés reviennent en arrière ;
- vos secrets ne sont pas touchés : ils ne font pas partie des manifestes.
REF est main (la dernière version appliquée) ou une version figée, sous la forme
env/<tenant>/<nom> (<nom> est la branche affichée par sng env list).
sng env restore agit immédiatement, sans demander de confirmation. Faites toujours un
sng pull avant. L'action exige env:admin (policy admin).
Créer un tenant à partir d'un autre
sng env create-tenant acme-staging # copie ce qui tourne
sng env create-tenant acme-demo env/acme/v2 # copie une version figée
Ce que vous obtenez : un nouveau tenant acme-staging (mêmes règles de nom que
sng tenant create) qui contient les mêmes manifestes. Il démarre en tier 3XS, avec ses
propres policies, et vous en êtes administrateur. Comme pour tout nouveau tenant, ouvrir une
session peut demander une ou deux minutes.
Les secrets ne sont pas copiés : déclarez-les ou posez-les dans le nouveau tenant (Secrets).
Si ça ne marche pas
| Message | Cause | Correction |
|---|---|---|
forbidden (no policy of this tenant allows it: see sng tenant policy list) | Il manque env:write (checkout, refresh) ou env:admin (restore, create-tenant) | Demander la policy à un administrateur du tenant |
already on main | refresh alors que le tenant n'est pas figé | Rien à faire : vos apply sont déjà mis en œuvre |
invalid organization: … | Nom du nouveau tenant invalide ou réservé | Voir Noms de tenant |
conflict | Le nom du nouveau tenant est déjà pris | En choisir un autre |
policies_pending juste après create-tenant | Le nouveau tenant n'est pas encore prêt | Réessayer dans une minute |