Opérations
Fonctionnalité déployée et prise en charge. Les champs et commandes décrits ici sont stables au sein de la version v1alpha1.
Une fois l'App appliquée, sng app sert à la suivre et à la piloter sans rouvrir le manifeste :
état de chaque service, changement d'image, nombre de réplicas, redémarrage, logs, suppression.
Chaque commande qui modifie quelque chose met à jour le manifeste côté plateforme, puis le
déploiement suit : la commande rend la main avant la fin du déploiement.
Prérequis
- Une App déployée (Depuis docker compose).
- Les droits
deploy:*sur votre tenant (deploy:readsuffit pourlist/describe,deploy:logspourlogs,deploy:writepour les modifications,deploy:deletepour supprimer).
Étapes
1. Voir les Apps du tenant
sng app list
NAME STATUS SERVICES URL
shop prête 4/4 https://api-shop.<tenant>.dev.stackngo.app/
web en attente - -
STATUS vaut en attente (pas encore déployée), prête, en cours, ou la raison du blocage
(QuotaExceeded, SecretNotFound…). URL est celle du premier service exposé.
2. Détailler une App
sng app describe shop
App : shop
Statut : prête
SERVICE KIND IMAGE PHASE URL DETAIL
api deployment registry.gitlab.com/stackngo/shop-api:1.4.2 Ready https://api-shop.<tenant>.dev.stackngo.app/ Reconciled 2/2 prêts
cleanup cronjob registry.gitlab.com/stackngo/shop-api:1.4.2 Scheduled - Reconciled planifié : 0 3 * * *
db deployment postgres:17 Ready - Reconciled 1/1 prêts
migrate job registry.gitlab.com/stackngo/shop-api:1.4.2 Ready - Reconciled terminé
--manifest ajoute le manifeste courant à la suite ; --json rend tout en JSON.
3. Changer l'image, la taille, une variable
sng app patch shop --service api --image registry.gitlab.com/stackngo/shop-api:1.4.3
sng app patch shop --service api --size s --env LOG_LEVEL=debug
App "shop" modifiée ; déploiement en cours
Seuls les champs donnés changent. Pour une App à un seul service, --service est inutile.
4. Ajuster le nombre de réplicas
sng app scale shop 3 --service api
App "shop" : 3 réplica(s) demandé(s)
Refusé si le service a un autoscale (changez autoscale.max dans le manifeste), s'il a un
volume et que le nombre dépasse 1, ou s'il n'est pas un deployment.
5. Redémarrer
sng app restart shop # tous les deployments
sng app restart shop --service api # un seul
App "shop" : redémarrage demandé
Les exemplaires sont remplacés selon la strategy du service, sans autre changement. Les jobs et
cronjobs ne se redémarrent pas ainsi (Services, jobs et cronjobs).
6. Lire les logs
sng app logs shop --service api --since 10m
sng app logs shop -f
[shop-api-7c9d4b8f6-x2k9q] 2026-10-07T09:12:03Z INFO listening on :8080
[shop-api-7c9d4b8f6-m4r1z] 2026-10-07T09:12:04Z INFO listening on :8080
[shop-db-5f8b7c6d9-q7w2e] 2026-10-07 09:11:58.102 UTC [1] LOG: database system is ready to accept connections
Chaque ligne est préfixée du nom de l'exemplaire qui l'a écrite (suivi de /init pour la
commande d'initialisation). Par défaut, les 200 dernières lignes de chaque conteneur ; --tail jusqu'à 5000,
--since jusqu'à 24h, -f suit le flux pendant 10 minutes au plus.
7. Supprimer
sng app delete shop
Supprimer l'App "shop" ?
Tapez « oui » pour confirmer : oui
App "shop" supprimée (les volumes restent)
--yes saute la confirmation (obligatoire hors terminal). sng kind delete App shop fait la même
chose. Les volumes et leurs données sont conservés (Stockage).
Vérification
Après chaque commande, sng app describe shop passe par en cours puis revient à prête. Si
un service reste en Progressing plusieurs minutes, sng app logs shop --service <nom>
donne la cause.
Lire status.services
Chaque service a une phase, une raison et un message :
| Phase | Sens | Raisons habituelles |
|---|---|---|
Ready | prêt (deployment disponible et à jour, job terminé) | Reconciled |
Scheduled | cronjob planifié ; compte comme prêt | Reconciled |
Progressing | déploiement ou job en cours ; les anciens exemplaires servent encore | RollingOut, JobRunning, SecretNotFound, QuotaExceeded (montée en charge bloquée) |
Waiting | rien n'est créé : dépendance ou Secret de registre manquant | WaitingForDependency, DependencyFailed, ImagePullSecretNotFound |
Failed | refusé ou en échec | Invalid, DomainNotAllowed, HostConflict, NameConflict, QuotaExceeded, ApplyFailed, RolloutFailed, JobFailed |
Au niveau de l'App, Statut reprend la raison du service le plus en difficulté (un échec
avant une attente, une attente avant un déploiement en cours), et Message cite ce service.
La liste complète des raisons et des corrections : Conditions et raisons.
Manifeste ou commandes ?
Les deux écrivent le même manifeste. sng app patch, scale et restart sont pratiques pour un
geste rapide ; sng apply d'un fichier versionné reste la référence pour tout changement de
structure (ajouter un service, un volume, un autoscale). Après un patch, récupérez le
manifeste à jour avec sng app describe shop --manifest ou sng kind get App shop, pour ne pas
réappliquer une version périmée.
Si deux commandes modifient la même App au même instant, la seconde est refusée plutôt que d'écraser la première. Relancez-la.
Pour aller plus loin
sng app listetdescribemontrent le manifeste et l'état déployé ;en attentesignifie que le déploiement vient d'être demandé et que son état n'est pas encore connu. Comptez généralement moins de deux minutes.sng kind get App shopmontre le manifeste brut ;sng kind list Apples Apps du tenant sans leur état.sng app describe shop --jsondonne lestatuscomplet.
Voir aussi
sng app: référence complète des commandes et flags- Healthchecks et scaling
- Référence des manifestes (page
App)