Skip to main content

Operations

Available

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:read is enough for list/describe, deploy:logs for logs, deploy:write for modifications, deploy:delete to 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:

PhaseMeaningUsual reasons
Readyready (deployment available and up to date, job completed)Reconciled
Scheduledcronjob scheduled; counts as readyReconciled
Progressingdeployment or job in progress; the old instances are still servingRollingOut, JobRunning, SecretNotFound, QuotaExceeded (scale-up blocked)
Waitingnothing is created: missing dependency or registry SecretWaitingForDependency, DependencyFailed, ImagePullSecretNotFound
Failedrejected or failedInvalid, 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.

Two modifications at the same time

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 list and describe show the manifest and the deployed state; en attente means that the deployment has just been requested and its state is not known yet. Usually allow less than two minutes.
  • sng kind get App shop shows the raw manifest; sng kind list App the Apps of the tenant without their state.
  • sng app describe shop --json gives the complete status.

See also​