Skip to main content

Conditions and reasons

Available

Deployed and supported. The fields and commands described here are stable within version v1alpha1.

When a resource doesn't do what you expect, its status says so: a condition (Ready, Accepted, Published…) set to False, a short reason and a message. This page gathers all reasons, by family of kinds. The details of each kind are on its reference page. The command that reads the state of each kind is listed in sng kind get.

sng app describe web # App
sng secret describe db # SSMSecret
sng dns record describe ID # DNSRecord
sng kind get RegistryAccessKey ci # any kind: the manifest, then its state as comments

Applications (App)​

ReasonMeaningWhat to do
ReconciledEverything is compliantNothing
RollingOutA deployment is in progress (new image, new configuration)Wait; sng app logs if it takes long
JobRunningA job service is runningWait
JobFailedA job failedsng app logs, fix, reapply
RolloutFailedThe new containers do not become ready (image not found, crash, failing probe)sng app logs; check image, healthcheck, ports
WaitingForDependencyA service is waiting for a service in dependsOnLook at the state of the awaited service
DependencyFailedA service in dependsOn failedFix the upstream service
SecretNotFoundA secret referenced by env or envFrom does not existCreate the secret (Secrets)
ImagePullSecretNotFoundA secret in imagePullSecrets does not existCreate the secret or remove the reference
RegistryAccessPendingThe image comes from the platform registry and the tenant's read access is not ready yet (tenant just created)Wait: the service starts on its own
CertificatePendingThe service responds, but its HTTPS certificate is not issued yet; the App is not Ready while it is missingWait, usually a few minutes; for a brought domain, check that the zone is Active
DNSConflictThe service's domain name is already published in DNS by someone else: the App cannot be reached at that addressFree the name (delete the DNSRecord that carries it) or change ingress.domain; the service recovers on its own
QuotaExceededThe tenant quota does not allow the requested resourcesReduce size/replicas or change tier
WaitingForDNSZoneThe service waits for the DNS zone of its brought domain (domain not declared yet, verification or zone creation in progress, zone lost); the name is not served while it waits (phase Waiting)Follow the message: it says what is missing (Domains on an App). The service is published on its own as soon as the zone is ready
DomainNotAllowedFinal refusal: the domain is a platform domain (stackngo.fr, stackngo.app)Use your default zone or bring your domain; nothing to wait for, the refusal does not lift
HostConflictThe hostname is already used by another resourceChoose another domain or path
NameConflictAn object with the same name already exists and does not belong to this AppRename the service or the App
InvalidCombination of fields rejected at deploymentRead the message
ApplyFailedThe platform could not implement the serviceRetry; report it if it persists
NamespaceNotTenantResource attached to no tenant (does not happen with sng apply)Report it to support

Phases per service (status.services.<name>.phase): Ready, Progressing, Waiting, Failed, Scheduled (cronjob). Details: App page of the manifest reference.

Secrets (SSMSecret)​

An SSMSecret has no coded reason but a phase and a message:

PhaseMeaningWhat to do
PendingNot declared yet, or declared empty (length: 0) awaiting a valuesng secret set NAME if you chose length: 0; otherwise wait (10 min at most)
ActiveDeclared, value presentNothing
ErrorRejected by the secrets service (missing policy, invalid name), or materialize: true while another secret of the same name already exists (the value could not be made available to the other resources of the tenant)Read status.message; rename the SSMSecret in the second case

Details: SSMSecret page of the manifest reference.

DNS (DNSZone, DNSRecord)​

ReasonKindMeaningWhat to do
NotRegistrableDNSZoneThe domain is not registrable (subdomain, public suffix)Declare the registrable domain (exemple.fr, not www.exemple.fr)
PlatformDomainDNSZonePlatform domainUse your default zone
TakenDNSZoneDomain already claimed by another tenantContact support if it is yours
AwaitingVerificationDNSZoneWaiting for the _stackngo-verify TXTCreate the record from status.verification at your registrar
AwaitingProvisioningDNSZoneVerified, zone being createdWait
AwaitingDelegationDNSZoneZone ready, name servers not declared yetDeclare status.nameServers at the registrar
DelegationCheckFailedDNSZoneDelegation check not possible for nowWait, it is retried
DelegationMissingDNSZoneThe delegation is no longer visibleCheck the NS at the registrar
DelegatedDNSZoneZone activeNothing
DelegationLostDNSZoneDelegation missing for more than 72 h: zone LostRestore the NS
ProviderErrorDNSZoneDNS provider errorRetry; report it if it persists
PublishedDNSRecordRecord publishedNothing
ReservedDNSRecordName reserved for the operation of the platformChoose another name
ConflictDNSRecordName already published by another resourceFirst come keeps the name: rename
ZoneNotOwnedDNSRecordspec.zone is not (yet) a proven zone of the tenant; the record is accepted, kept, and published on its own as soon as the zone is provenCheck spec.zone or create the DNSZone
ZoneNotReadyDNSRecordThe zone is not Active yet; published automatically afterwardsFinish the delegation
NotTenantbothResource outside a tenantReport it to support
InvalidbothInvalid target or name (private IP, CNAME at the apex…)Read the message

Registry (RegistryRepository, RegistryAccessKey)​

ReasonMeaningWhat to do
ReconciledCompliantNothing
InvalidSpecInvalid retention expression, name not OCI-compliantRead the message
DeletionBlockedDeletion refused: the repository contains images and deletionPolicy: BlockDelete the images, or switch to Delete
PurgingImage deletion in progress (deletionPolicy: Delete)Wait
RegistryUnavailableThe registry does not respondRetried automatically
SecretOwnershipConflictA secret with the same name as the access key's already existsChange spec.secretName or delete the existing secret

Monitoring (Monitor, NotificationChannel, StatusPage)​

ReasonMeaningWhat to do
AcceptedAccepted and activeNothing
IntervalBelowTierinterval shorter than the tier minimumLengthen the interval or move up a tier
QuotaExceededToo many monitors, pages or channels for the tierDelete some or move up a tier
ChannelNotFoundA channel in notificationChannelRefs does not existCreate the channel
SecretNotFoundA channel's secret is missing or lacks the given key; only that channel is set asideCreate the secret or fix name / key
MonitorNotFoundA status page references a nonexistent monitorFix groups[].monitors
NotSupportedOption not available yet (e.g. customDomains)Remove the option
SyncFailedAlerts could not be activated yetRetried automatically
InvalidCombination rejectedRead the message

Monitor states (status.state): Pending, Up, Down, Unknown, Paused, Maintenance.

Static sites (CDNSite)​

Conditions: DomainAllowed (the domain is in a zone of the tenant), S3Reachable (the site storage responds with the given credentials), Ready. Phases: Pending, Ready, Conflict (domain already served by another site, the oldest wins), Invalid. Frequent reasons: NotAllowed (domain outside your zones), AccessDenied (storage credentials rejected).

Identity (IAMApplication, IAMRole, IAMGroup, IAMPolicy, IAMPolicyBinding, IAMOIDCTrust)​

ReasonMeaningWhat to do
ReconciledCompliantNothing
WaitingForTenantThe tenant's identity organization does not exist yetwait; otherwise contact support
WaitingForPolicyA binding references a policy not applied yetWait, or create the policy
InvalidReferenceReference to a missing resource (role, childRoles sub-role, group, certificate)Create the referenced resource
InvalidDocumentInvalid policy document (action, effect, resource)Read the message
ScopeUnresolvedA subject of the binding does not resolve (unknown user, role, trust)Check the names
DependencyInUseDeletion pending (deletionPolicy: Block): the resource is still in use; the message says by what (suppression bloquée : le rôle est encore attribué à 2 utilisateurs)Remove what uses it: the deletion completes on its own within a minute
SecretCreated, SecretUpdatedClient secret (<name>-oidc) created or updatedNothing
SecretOwnershipConflictA secret with the same name already existsChange credentialsSecret.name
RotationFailedRotation of the client secret failedRetried; report it if it persists
ProviderUnavailable, IAMUnavailableIdentity service unreachableRetried automatically
DriftDetectedThe resource was modified outside the manifest; it is brought back into complianceNothing, or modify the manifest
RegisteredOIDC trust registeredNothing
Discovered, DiscoveryFailedDiscovery of the OIDC issuer succeeded or failedCheck spec.issuer
Invalid, UnsupportedConfigurationCombination of fields rejected, or field not supported yet (assignableRoles, assignableByApplications)Read the message; remove the field

HTTP codes​

Errors returned by the API (and therefore by the CLI) before the resource even exists are in API errors. Messages specific to the CLI are in CLI errors.