Aller au contenu principal

Conditions et raisons

Disponible

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)​

RaisonSensQue faire
ReconciledTout est conformeRien
RollingOutUn déploiement est en cours (nouvelle image, nouvelle configuration)Attendre ; sng app logs si cela dure
JobRunningUn service job est en cours d'exécutionAttendre
JobFailedUn job a échouésng app logs, corriger, réappliquer
RolloutFailedLes nouveaux conteneurs ne deviennent pas prêts (image introuvable, crash, sonde qui échoue)sng app logs ; vérifier image, healthcheck, ports
WaitingForDependencyUn service attend un service de dependsOnRegarder l'état du service attendu
DependencyFailedUn service de dependsOn a échouéCorriger le service en amont
SecretNotFoundUn secret référencé par env ou envFrom n'existe pasCréer le secret (Secrets)
ImagePullSecretNotFoundUn secret de imagePullSecrets n'existe pasCréer le secret ou retirer la référence
RegistryAccessPendingL'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
CertificatePendingLe service répond, mais son certificat HTTPS n'est pas encore émis ; l'App n'est pas Ready tant qu'il manqueAttendre, en général quelques minutes ; pour un domaine apporté, vérifier que la zone est Active
DNSConflictLe nom de domaine du service est déjà publié dans le DNS par quelqu'un d'autre : l'App n'est pas joignable à cette adresseLibérer le nom (supprimer l'enregistrement DNSRecord qui le porte) ou changer ingress.domain ; le service se rétablit de lui-même
QuotaExceededLe quota du tenant ne permet pas les ressources demandéesRéduire size/replicas ou changer de tier
WaitingForDNSZoneLe 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
DomainNotAllowedRefus 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
HostConflictLe nom d'hôte est déjà utilisé par une autre ressourceChoisir un autre domaine ou chemin
NameConflictUn objet du même nom existe déjà et n'appartient pas à cette AppRenommer le service ou l'App
InvalidCombinaison de champs refusée au déploiementLire le message
ApplyFailedLa plateforme n'a pas pu mettre en œuvre le serviceRéessayer ; signaler si cela persiste
NamespaceNotTenantRessource 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 :

PhaseSensQue faire
PendingPas encore déclaré, ou déclaré vide (length: 0) en attente d'une valeursng secret set NAME si vous avez choisi length: 0 ; sinon attendre (au plus 10 min)
ActiveDéclaré, valeur présenteRien
ErrorRefus 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)​

RaisonKindSensQue faire
NotRegistrableDNSZoneLe domaine n'est pas enregistrable (sous-domaine, suffixe public)Déclarer le domaine enregistrable (exemple.fr, pas www.exemple.fr)
PlatformDomainDNSZoneDomaine de la plateformeUtiliser votre zone par défaut
TakenDNSZoneDomaine déjà revendiqué par un autre tenantContacter le support si c'est le vôtre
AwaitingVerificationDNSZoneEn attente du TXT _stackngo-verifyPoser l'enregistrement de status.verification chez votre registraire
AwaitingProvisioningDNSZoneVérifié, zone en cours de créationAttendre
AwaitingDelegationDNSZoneZone prête, serveurs de noms pas encore déclarésDéclarer status.nameServers chez le registraire
DelegationCheckFailedDNSZoneContrôle de délégation impossible pour l'instantAttendre, il est retenté
DelegationMissingDNSZoneLa délégation n'est plus visibleVérifier les NS chez le registraire
DelegatedDNSZoneZone activeRien
DelegationLostDNSZoneDélégation absente depuis plus de 72 h : zone LostRétablir les NS
ProviderErrorDNSZoneErreur du fournisseur DNSRéessayer ; signaler si cela persiste
PublishedDNSRecordEnregistrement publiéRien
ReservedDNSRecordNom réservé au fonctionnement de la plateformeChoisir un autre nom
ConflictDNSRecordNom déjà publié par une autre ressourceLe premier arrivé garde le nom : renommer
ZoneNotOwnedDNSRecordspec.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éeVérifier spec.zone ou créer la DNSZone
ZoneNotReadyDNSRecordLa zone n'est pas encore Active ; publication automatique ensuiteTerminer la délégation
NotTenantles deuxRessource hors d'un tenantSignaler au support
Invalidles deuxCible ou nom invalide (IP privée, CNAME à l'apex…)Lire le message

Registre (RegistryRepository, RegistryAccessKey)​

RaisonSensQue faire
ReconciledConformeRien
InvalidSpecExpression de rétention invalide, nom non conforme OCILire le message
DeletionBlockedSuppression refusée : le dépôt contient des images et deletionPolicy: BlockSupprimer les images, ou passer en Delete
PurgingSuppression des images en cours (deletionPolicy: Delete)Attendre
RegistryUnavailableLe registre ne répond pasRetenté automatiquement
SecretOwnershipConflictUn 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)​

RaisonSensQue faire
AcceptedAccepté et actifRien
IntervalBelowTierinterval plus court que le minimum du tierAllonger l'intervalle ou monter de tier
QuotaExceededTrop de moniteurs, pages ou canaux pour le tierSupprimer ou monter de tier
WaitingForChannelUn 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
SecretNotFoundLe 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
WaitingForMonitorUne 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
NotSupportedOption pas encore disponible (ex. customDomains)Retirer l'option
SyncFailedLes alertes n'ont pas encore pu être activéesRetenté automatiquement
InvalidCombinaison refuséeLire 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)​

RaisonSensQue faire
ReconciledConformeRien
WaitingForTenantL'organisation d'identité du tenant n'existe pas encoreattendre ; sinon contacter le support
WaitingForPolicyUn binding référence une policy pas encore appliquéeAttendre, ou créer la policy
InvalidReferenceRéférence vers une ressource absente (rôle, sous-rôle de childRoles, groupe, certificat)Créer la ressource référencée
InvalidDocumentDocument de policy invalide (action, effet, ressource)Lire le message
ScopeUnresolvedUn sujet du binding ne se résout pas (utilisateur, rôle, trust inconnu)Vérifier les noms
DependencyInUseSuppression 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, SecretUpdatedSecret client (<nom>-oidc) créé ou mis à jourRien
SecretOwnershipConflictUn secret du même nom existe déjàChanger credentialsSecret.name
RotationFailedRotation du secret client échouéeRetenté ; signaler si cela persiste
ProviderUnavailable, IAMUnavailableService d'identité injoignableRetenté automatiquement
DriftDetectedLa ressource a été modifiée hors manifeste ; elle est remise en conformitéRien, ou modifier le manifeste
RegisteredTrust OIDC enregistréRien
Discovered, DiscoveryFailedDécouverte de l'émetteur OIDC réussie ou échouéeVérifier spec.issuer
Invalid, UnsupportedConfigurationCombinaison 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.