Operations
Deployed and supported. The fields and commands described here are stable within version v1alpha1.
Once the App is applied, sng app is used to monitor and drive it without reopening the manifest:
state of each service, image change, number of replicas, restart, logs, deletion.
Each command that modifies something updates the manifest on the platform side, then the
deployment follows: the command returns before the deployment finishes.
Prerequisites
- A deployed App (From docker compose).
- The
deploy:*rights on your tenant (deploy:readis enough forlist/describe,deploy:logsforlogs,deploy:writefor modifications,deploy:deleteto delete).
Steps
1. See the Apps of the tenant
sng app list
NAME STATUS SERVICES URL
shop prête 4/4 https://api-shop.<tenant>.dev.stackngo.app/
web en attente - -
STATUS is en attente (not deployed yet), prête, en cours, or the reason for the block
(QuotaExceeded, SecretNotFound…). URL is that of the first exposed service.
2. Describe an 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 appends the current manifest; --json returns everything as JSON.
3. Change the image, the size, a 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
Only the given fields change. For an App with a single service, --service is unnecessary.
4. Adjust the number of replicas
sng app scale shop 3 --service api
App "shop" : 3 réplica(s) demandé(s)
Refused if the service has an autoscale (change autoscale.max in the manifest), if it has a
volume and the number exceeds 1, or if it is not a deployment.
5. Restart
sng app restart shop # all deployments
sng app restart shop --service api # just one
App "shop" : redémarrage demandé
Instances are replaced according to the service's strategy, with no other change. Jobs and
cronjobs are not restarted this way (Services, jobs and cronjobs).
6. Read the 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
Each line is prefixed with the name of the instance that wrote it (followed by /init for the
initialization command). By default, the last 200 lines of each container; --tail up to 5000,
--since up to 24h, -f follows the stream for 10 minutes at most.
7. Delete
sng app delete shop
Supprimer l'App "shop" ?
Tapez « oui » pour confirmer : oui
App "shop" supprimée (les volumes restent)
--yes skips the confirmation (required outside a terminal). sng kind delete App shop does the same
thing. Volumes and their data are kept (Storage).
Verification
After each command, sng app describe shop goes through en cours then returns to prête. If
a service stays in Progressing for several minutes, sng app logs shop --service <name>
gives the cause.
Read status.services
Each service has a phase, a reason and a message:
| Phase | Meaning | Usual reasons |
|---|---|---|
Ready | ready (deployment available and up to date, job completed) | Reconciled |
Scheduled | cronjob scheduled; counts as ready | Reconciled |
Progressing | deployment or job in progress; the old instances are still serving | RollingOut, JobRunning, SecretNotFound, QuotaExceeded (scale-up blocked) |
Waiting | nothing is created: missing dependency or registry Secret | WaitingForDependency, DependencyFailed, ImagePullSecretNotFound |
Failed | rejected or failed | Invalid, DomainNotAllowed, HostConflict, NameConflict, QuotaExceeded, ApplyFailed, RolloutFailed, JobFailed |
At the App level, Statut shows the reason of the service in the most trouble (a failure
before a wait, a wait before a deployment in progress), and Message names that service.
The complete list of reasons and fixes: Conditions and reasons.
Manifest or commands?
Both write the same manifest. sng app patch, scale and restart are handy for a
quick action; sng apply of a versioned file remains the reference for any structural
change (adding a service, a volume, an autoscale). After a patch, retrieve the
up-to-date manifest with sng app describe shop --manifest or sng kind get App shop, so as not to
reapply an outdated version.
If two commands modify the same App at the same moment, the second is refused rather than overwriting the first. Run it again.
Going further
sng app listanddescribeshow the manifest and the deployed state;en attentemeans that the deployment has just been requested and its state is not known yet. Usually allow less than two minutes.sng kind get App shopshows the raw manifest;sng kind list Appthe Apps of the tenant without their state.sng app describe shop --jsongives the completestatus.
See also
sng app: complete reference of commands and flags- Healthchecks and scaling
- Manifest reference (
Apppage)