Conditions et raisons
Fonctionnalité déployée et prise en charge. Les champs et commandes décrits ici sont stables au sein de la version v1alpha1.
Quand une ressource ne fait pas ce que vous attendez, son status le dit : une condition
(Ready, Accepted, Published…) à False, une raison courte et un message. Cette
page regroupe toutes les raisons, par famille de kinds. Le détail de chaque kind est dans sa
page de référence. La commande qui lit l'état de chaque kind est listée dans
sng kind get.
sng app describe web # App
sng secret describe db # SSMSecret
sng dns record describe ID # DNSRecord
sng kind get RegistryAccessKey ci # tout kind : le manifeste, puis son état en commentaires
Applications (App)
| Raison | Sens | Que faire |
|---|---|---|
Reconciled | Tout est conforme | Rien |
RollingOut | Un déploiement est en cours (nouvelle image, nouvelle configuration) | Attendre ; sng app logs si cela dure |
JobRunning | Un service job est en cours d'exécution | Attendre |
JobFailed | Un job a échoué | sng app logs, corriger, réappliquer |
RolloutFailed | Les nouveaux conteneurs ne deviennent pas prêts (image introuvable, crash, sonde qui échoue) | sng app logs ; vérifier image, healthcheck, ports |
WaitingForDependency | Un service attend un service de dependsOn | Regarder l'état du service attendu |
DependencyFailed | Un service de dependsOn a échoué | Corriger le service en amont |
SecretNotFound | Un secret référencé par env ou envFrom n'existe pas | Créer le secret (Secrets) |
ImagePullSecretNotFound | Un secret de imagePullSecrets n'existe pas | Créer le secret ou retirer la référence |
RegistryAccessPending | L'image vient du registre de la plateforme et l'accès en lecture du tenant n'est pas encore prêt (tenant tout juste créé) | Attendre : le service démarre de lui-même |
CertificatePending | Le service répond, mais son certificat HTTPS n'est pas encore émis ; l'App n'est pas Ready tant qu'il manque | Attendre, en général quelques minutes ; pour un domaine apporté, vérifier que la zone est Active |
DNSConflict | Le nom de domaine du service est déjà publié dans le DNS par quelqu'un d'autre : l'App n'est pas joignable à cette adresse | Libérer le nom (supprimer l'enregistrement DNSRecord qui le porte) ou changer ingress.domain ; le service se rétablit de lui-même |
QuotaExceeded | Le quota du tenant ne permet pas les ressources demandées | Réduire size/replicas ou changer de tier |
WaitingForDNSZone | Le service attend la zone DNS de son domaine apporté (domaine pas encore déclaré, vérification ou création de la zone en cours, zone perdue) ; le nom n'est pas servi pendant l'attente (phase Waiting) | Suivre le message : il indique ce qui manque (Domaines sur une App). Le service se publie seul dès que la zone est prête |
DomainNotAllowed | Refus définitif : le domaine est celui de la plateforme (stackngo.fr, stackngo.app) | Utiliser votre zone par défaut ou apporter votre domaine ; rien à attendre, le refus ne se lève pas |
HostConflict | Le nom d'hôte est déjà utilisé par une autre ressource | Choisir un autre domaine ou chemin |
NameConflict | Un objet du même nom existe déjà et n'appartient pas à cette App | Renommer le service ou l'App |
Invalid | Combinaison de champs refusée au déploiement | Lire le message |
ApplyFailed | La plateforme n'a pas pu mettre en œuvre le service | Réessayer ; signaler si cela persiste |
NamespaceNotTenant | Ressource rattachée à aucun tenant (n'arrive pas avec sng apply) | Signaler au support |
Phases par service (status.services.<nom>.phase) : Ready, Progressing, Waiting,
Failed, Scheduled (cronjob). Détail : page App de la référence des manifestes.
Secrets (SSMSecret)
Un SSMSecret n'a pas de raison codée mais une phase et un message :
| Phase | Sens | Que faire |
|---|---|---|
Pending | Pas encore déclaré, ou déclaré vide (length: 0) en attente d'une valeur | sng secret set NAME si vous avez choisi length: 0 ; sinon attendre (au plus 10 min) |
Active | Déclaré, valeur présente | Rien |
Error | Refus du service de secrets (policy manquante, nom invalide), ou materialize: true alors qu'un autre secret du même nom existe déjà (the value could not be made available to the other resources of the tenant) | Lire status.message ; renommer le SSMSecret dans le second cas |
Détail : page SSMSecret de la référence des manifestes.
DNS (DNSZone, DNSRecord)
| Raison | Kind | Sens | Que faire |
|---|---|---|---|
NotRegistrable | DNSZone | Le domaine n'est pas enregistrable (sous-domaine, suffixe public) | Déclarer le domaine enregistrable (exemple.fr, pas www.exemple.fr) |
PlatformDomain | DNSZone | Domaine de la plateforme | Utiliser votre zone par défaut |
Taken | DNSZone | Domaine déjà revendiqué par un autre tenant | Contacter le support si c'est le vôtre |
AwaitingVerification | DNSZone | En attente du TXT _stackngo-verify | Poser l'enregistrement de status.verification chez votre registraire |
AwaitingProvisioning | DNSZone | Vérifié, zone en cours de création | Attendre |
AwaitingDelegation | DNSZone | Zone prête, serveurs de noms pas encore déclarés | Déclarer status.nameServers chez le registraire |
DelegationCheckFailed | DNSZone | Contrôle de délégation impossible pour l'instant | Attendre, il est retenté |
DelegationMissing | DNSZone | La délégation n'est plus visible | Vérifier les NS chez le registraire |
Delegated | DNSZone | Zone active | Rien |
DelegationLost | DNSZone | Délégation absente depuis plus de 72 h : zone Lost | Rétablir les NS |
ProviderError | DNSZone | Erreur du fournisseur DNS | Réessayer ; signaler si cela persiste |
Published | DNSRecord | Enregistrement publié | Rien |
Reserved | DNSRecord | Nom réservé au fonctionnement de la plateforme | Choisir un autre nom |
Conflict | DNSRecord | Nom déjà publié par une autre ressource | Le premier arrivé garde le nom : renommer |
ZoneNotOwned | DNSRecord | spec.zone n'est pas (encore) une zone prouvée du tenant ; l'enregistrement est accepté, conservé, et publié tout seul dès que la zone est prouvée | Vérifier spec.zone ou créer la DNSZone |
ZoneNotReady | DNSRecord | La zone n'est pas encore Active ; publication automatique ensuite | Terminer la délégation |
NotTenant | les deux | Ressource hors d'un tenant | Signaler au support |
Invalid | les deux | Cible ou nom invalide (IP privée, CNAME à l'apex…) | Lire le message |
Registre (RegistryRepository, RegistryAccessKey)
| Raison | Sens | Que faire |
|---|---|---|
Reconciled | Conforme | Rien |
InvalidSpec | Expression de rétention invalide, nom non conforme OCI | Lire le message |
DeletionBlocked | Suppression refusée : le dépôt contient des images et deletionPolicy: Block | Supprimer les images, ou passer en Delete |
Purging | Suppression des images en cours (deletionPolicy: Delete) | Attendre |
RegistryUnavailable | Le registre ne répond pas | Retenté automatiquement |
SecretOwnershipConflict | Un secret du même nom que celui de la clé d'accès existe déjà | Changer spec.secretName ou supprimer le secret existant |
Supervision (Monitor, NotificationChannel, StatusPage)
| Raison | Sens | Que faire |
|---|---|---|
Accepted | Accepté et actif | Rien |
IntervalBelowTier | interval plus court que le minimum du tier | Allonger l'intervalle ou monter de tier |
QuotaExceeded | Trop de moniteurs, pages ou canaux pour le tier | Supprimer ou monter de tier |
WaitingForChannel | Un canal de notificationChannelRefs n'existe pas ou est refusé : le moniteur est sondé, seule l'alerte attend (condition Ready=False) | Créer ou corriger le canal ; l'alerte part dès qu'il existe |
SecretNotFound | Le secret d'un canal est introuvable ou n'a pas la clé indiquée ; seul ce canal est écarté | Créer le secret ou corriger name / key |
WaitingForMonitor | Une page de statut référence un moniteur inexistant : la page est servie sans lui (condition Ready=False) | Créer le moniteur, ou corriger groups[].monitors ; la page se complète seule |
NotSupported | Option pas encore disponible (ex. customDomains) | Retirer l'option |
SyncFailed | Les alertes n'ont pas encore pu être activées | Retenté automatiquement |
Invalid | Combinaison refusée | Lire le message |
États d'un moniteur (status.state) : Pending, Up, Down, Unknown, Paused, Maintenance.
Sites statiques (CDNSite)
Conditions : DomainAllowed (le domaine est dans une zone du tenant), S3Reachable (le
stockage du site répond avec les identifiants donnés), Ready. Phases : Pending, Ready,
Conflict (domaine déjà servi par un autre site, le plus ancien gagne), Invalid.
Raisons fréquentes : NotAllowed (domaine hors de vos zones), AccessDenied (identifiants
de stockage refusés).
Identité (IAMApplication, IAMRole, IAMGroup, IAMPolicy, IAMPolicyBinding, IAMOIDCTrust)
| Raison | Sens | Que faire |
|---|---|---|
Reconciled | Conforme | Rien |
WaitingForTenant | L'organisation d'identité du tenant n'existe pas encore | attendre ; sinon contacter le support |
WaitingForPolicy | Un binding référence une policy pas encore appliquée | Attendre, ou créer la policy |
InvalidReference | Référence vers une ressource absente (rôle, sous-rôle de childRoles, groupe, certificat) | Créer la ressource référencée |
InvalidDocument | Document de policy invalide (action, effet, ressource) | Lire le message |
ScopeUnresolved | Un sujet du binding ne se résout pas (utilisateur, rôle, trust inconnu) | Vérifier les noms |
DependencyInUse | Suppression en attente (deletionPolicy: Block) : la ressource est encore utilisée ; le message dit par quoi (suppression bloquée : le rôle est encore attribué à 2 utilisateurs) | Retirer ce qui l'utilise : la suppression aboutit d'elle-même dans la minute |
SecretCreated, SecretUpdated | Secret client (<nom>-oidc) créé ou mis à jour | Rien |
SecretOwnershipConflict | Un secret du même nom existe déjà | Changer credentialsSecret.name |
RotationFailed | Rotation du secret client échouée | Retenté ; signaler si cela persiste |
ProviderUnavailable, IAMUnavailable | Service d'identité injoignable | Retenté automatiquement |
DriftDetected | La ressource a été modifiée hors manifeste ; elle est remise en conformité | Rien, ou modifier le manifeste |
Registered | Trust OIDC enregistré | Rien |
Discovered, DiscoveryFailed | Découverte de l'émetteur OIDC réussie ou échouée | Vérifier spec.issuer |
Invalid, UnsupportedConfiguration | Combinaison de champs refusée, ou champ pas encore pris en charge (assignableRoles, assignableByApplications) | Lire le message ; retirer le champ |
Codes HTTP
Les erreurs renvoyées par l'API (et donc par la CLI) avant même que la ressource existe sont dans Erreurs de l'API. Les messages propres à la CLI sont dans Erreurs de la CLI.