Aller au contenu principal

DNSZone

Bêta

Fonctionnalité en cours de déploiement. L'interface décrite ici est celle de la prochaine livraison : elle peut encore évoluer, et n'est pas forcément activée sur votre tenant.

Activé progressivement sur les tenants.

apiVersiondns.stackngo.io/v1alpha1
kindDNSZone
Appliqué parsng apply (manifeste) ou sng dns zone create
Commandes liéessng dns zone list · describe · delete, sng template gen DNSZone

À quoi ça sert​

Une DNSZone confie à StackNGO le DNS d'un domaine que vous avez acheté ailleurs. La plateforme vous demande de prouver que le domaine est à vous (un TXT à poser chez son hébergeur DNS actuel), crée la zone chez son fournisseur, puis vous donne les serveurs de noms à déclarer chez votre registraire. Une fois la délégation constatée, la zone est Active : vos DNSRecord et les ingress.domain de vos App y sont publiés.

Exemple minimal​

exemple-fr.yml
apiVersion: dns.stackngo.io/v1alpha1
kind: DNSZone
metadata:
name: exemple.fr
spec:
domain: exemple.fr
sng apply exemple-fr.yml
sng dns zone describe exemple.fr # TXT à poser, puis serveurs de noms

Équivalent sans manifeste : sng dns zone create exemple.fr (objet nommé exemple.fr).

Exemple complet commenté​

exemple-fr.yml
apiVersion: dns.stackngo.io/v1alpha1
kind: DNSZone
metadata:
name: exemple.fr # doit être égal à spec.domain
spec:
domain: exemple.fr # domaine enregistrable (pas un sous-domaine), minuscules, sans point final ; immuable
source: Bring # seule valeur acceptée : domaine apporté (défaut)

Le status est écrit par la plateforme seulement :

status:
phase: Provisioned
verification:
name: _stackngo-verify.exemple.fr
value: sng-verify-4b1f0e9c2a7d4e6b8c3f1a2d5e7b9c0f
nameServers: [dns200.anycast.me, ns200.anycast.me]
verifiedAt: "2026-10-07T09:41:12Z"
observedGeneration: 1
conditions:
- type: Ready
status: "False"
reason: AwaitingDelegation
message: "déclarer chez le registrar les serveurs de noms : dns200.anycast.me, ns200.anycast.me"

Champs​

Règles de validation croisées​

Le schéma refuse, dès sng apply :

  • spec.source autre que Bring : l'achat de domaine (source: Purchase) n'est pas encore disponible ;
  • une modification de spec.domain après création : domain est immuable ;
  • un spec.domain hors du motif DNS (minuscules, au moins un point, 253 caractères au plus).

L'API refuse en plus, dès sng apply ou sng dns zone create :

  • un domaine non enregistrable : sous-domaine (domaine "shop.exemple.fr" : sous-domaine de exemple.fr, déclarer exemple.fr) ou TLD inconnu ;
  • un domaine de la plateforme StackNGO (stackngo.app, stackngo.fr), ou ce qui est dessous ou dessus ;
  • un domaine déjà déclaré par une autre DNSZone de votre tenant, tous contextes confondus (409) ;
  • une autre clé que name dans metadata (tenant, labels, annotations).

Après l'enregistrement, la plateforme vérifie aussi que le domaine n'est pas déjà pris par un autre tenant (phase Rejected, raison Taken).

DNSZone​

DNSZone : domaine apporté par votre tenant ; la plateforme en vérifie la propriété avant de publier le moindre enregistrement.

ChampDescriptionDéfautValidation
apiVersion stringdns.stackngo.io/v1alpha1
kind stringDNSZone
metadata ObjectMetaSeul metadata.name est à renseigner (nom de la ressource dans votre tenant).
spec DNSZoneSpec
status DNSZoneStatus

DNSZoneSpec​

DNSZoneSpec : un domaine dont votre tenant confie le DNS à StackNGO.

ChampDescriptionDéfautValidation
domain stringDomain : domaine enregistrable (ex. exemple.fr), jamais un sous-domaine ; immuable.MaxLength: 253
Pattern: ^([a-z0-9]([-a-z0-9]\{0,61\}[a-z0-9])?\.)+[a-z]([-a-z0-9]\{0,61\}[a-z0-9])?$
source stringSource : Bring (domaine apporté). Purchase (achat du domaine via StackNGO) n'est pas encore disponible.BringEnum: [Bring Purchase]
Optional: {}

DNSZoneStatus​

DNSZoneStatus : avancement de la prise en charge du domaine.

ChampDescriptionDéfautValidation
phase stringPhase : Pending (preuve de propriété attendue), Verified, Provisioned (délégation NS
attendue), Active (enregistrements servis), Lost (délégation perdue) ou Rejected (domaine refusé).
Optional: {}
verification VerificationVerification : TXT à poser pour prouver la propriété (phase Pending).Optional: {}
nameServers string arrayNameServers : serveurs à déclarer chez le registrar du domaine.Optional: {}
verifiedAt TimeVerifiedAt : date de la preuve de propriété.Optional: {}
delegationLostAt TimeDelegationLostAt : premier constat d'une délégation absente après activation.Optional: {}
observedGeneration integerDernière version du manifeste prise en compte par la plateforme.Optional: {}
conditions Condition arrayConditions de la zone (Ready…), avec leur reason et un message lisible, par exemple l'attente de la délégation.Optional: {}

Verification​

Verification : enregistrement TXT à poser chez le DNS actuel du domaine.

ChampDescriptionDéfautValidation
name stringName : nom complet de l'enregistrement TXT.
value stringValue : valeur attendue.

Statut et conditions​

PhaseSignificationCe que vous faites
Pendingen attente de la preuve de propriété ; status.verification donne le TXTposer le TXT chez l'hébergeur DNS actuel
Verifiedpropriété prouvée (verifiedAt) ; la plateforme crée la zoneattendre
Provisionedzone créée ; status.nameServers rempli ; vos enregistrements y sont déjà écritsdéclarer les serveurs de noms chez le registraire
Activetous les serveurs de noms publics du domaine sont ceux de la zonerien
Lostdélégation absente depuis plus de 72 h ; plus rien n'est publiéreposer le TXT, puis rétablir la délégation
Rejecteddomaine refusé ; verification et nameServers vidéscorriger ou supprimer la zone

Une seule condition, Ready : True quand la zone est Active (y compris pendant le délai de grâce d'une délégation absente).

reasonPhaseReadyExplicationAction
AwaitingVerificationPendingFalseTXT absent ou différent ; relu toutes les minutesposer status.verification.name TXT status.verification.value
AwaitingProvisioningVerifiedFalsezone pas encore créée chez le fournisseur ; relu toutes les 5 minattendre ; support si cela dure plus d'un jour ouvré
ProviderErrorVerifiedFalsele fournisseur DNS n'a pas réponduattendre, nouvel essai automatique
AwaitingDelegationProvisionedFalseserveurs de noms publics différents de status.nameServers ; relu toutes les 5 mindéclarer tous les serveurs de nameServers, et eux seuls
DelegationCheckFailedtoute phase après Verifiedinchangéla lecture publique des serveurs de noms a échouéattendre
DelegatedActiveTruedélégation constatée ; recontrôlée toutes les heures—
DelegationMissingActiveTruedélégation absente, depuis moins de 72 h (delegationLostAt)rétablir les serveurs de noms
DelegationLostLostFalsedélégation absente depuis plus de 72 h, ou nouvelle preuve attenduevoir Perte de délégation
NotRegistrableRejectedFalsesous-domaine ou suffixe inconnu ; le message nomme le domaine à déclarerdéclarer le domaine enregistrable
PlatformDomainRejectedFalsele domaine recouvre un domaine de StackNGO—
TakenRejectedFalsele domaine … est déjà déclaré par un autre DNSZone (autre tenant)contacter le support si le domaine est à vous
InvalidRejectedFalsesource non disponibleretirer source

Une zone Rejected est réévaluée : si la cause disparaît (domaine libéré par l'autre tenant, par exemple), elle repasse Pending.

Ce qui se passe à l'application​

Création. Le domaine est réservé pour votre tenant, de façon unique sur toute la plateforme : aucun autre client ne peut le déclarer. Cette réservation est liée à votre tenant tel qu'il existe : un tenant supprimé puis recréé sous le même nom n'hérite pas du domaine.

Mise à jour. spec.domain est immuable. Une réapplication identique ne change rien.

Ce qui se passe quand vous supprimez​

sng dns zone delete exemple.fr ou sng kind delete DNSZone exemple.fr. Les deux sont refusés (409, N enregistrement(s) utilisent encore la zone "exemple.fr", les supprimer d'abord) tant que des DNSRecord de votre tenant visent la zone, tous contextes confondus. Sinon, le domaine est libéré, plus aucun nom du domaine n'est publié, et les App qui l'utilisent passent DomainNotAllowed. Rendez ensuite la délégation à votre ancien hébergeur DNS. Aucun champ deletionPolicy.

Erreurs fréquentes​

SymptômeCauseCorrection
sng dns zone create : domaine "www.exemple.fr" : sous-domaine de exemple.fr, déclarer exemple.frun sous-domaine a été déclarédéclarer exemple.fr ; les sous-domaines se gèrent par DNSRecord
sng dns zone create affiche TXT de vérification pas encore calculéle TXT n'était pas prêt au bout de 20 secondessng dns zone describe exemple.fr quelques instants plus tard
Reste Pending, AwaitingVerificationTXT posé au mauvais endroit (chez le registraire alors que le DNS est hébergé ailleurs), ou nom doublé (_stackngo-verify.exemple.fr.exemple.fr)poser le TXT chez l'hébergeur qui sert le domaine, nom _stackngo-verify ; dig +short TXT _stackngo-verify.exemple.fr @1.1.1.1
Reste Provisioned, AwaitingDelegationun ancien serveur de noms est conservé, ou la propagation n'est pas finiene garder que les serveurs de nameServers ; dig +short NS exemple.fr
Rejected, Takenun autre tenant a déclaré ce domainecontacter le support avec la preuve de propriété
sng dns zone delete ou sng kind delete DNSZone : 409 … enregistrement(s) utilisent encore la zonedes DNSRecord visent la zonesng dns record list --zone exemple.fr, les supprimer
Active puis Lostdomaine expiré, ou serveurs de noms changés depuis plus de 72 hrenouveler le domaine ; reposer le TXT puis rétablir la délégation

Voir aussi​