Aller au contenu principal

Versions et compatibilité

Où en est StackNGO​

StackNGO est en préversion. Tout ce qui est documenté ici fonctionne, mais les interfaces peuvent encore évoluer. Chaque page porte un badge qui dit si la fonctionnalité est disponible, en bêta ou en préparation ; ce journal annonce les changements.

Ce que v1alpha1 veut dire​

Tous les manifestes sont en version v1alpha1. Concrètement :

  • Ajouts sans rupture : de nouveaux champs optionnels, de nouvelles valeurs d'énumération, de nouvelles conditions peuvent apparaître à tout moment. Un manifeste valide aujourd'hui le reste.
  • Changements incompatibles possibles, mais annoncés : un champ peut être renommé, déplacé ou rendu obligatoire. Ces changements sont listés ici avec la marche à suivre, et l'ancien champ reste accepté pendant au moins une version intermédiaire quand c'est possible.
  • Le passage à v1beta1 marquera la stabilisation : à partir de là, aucune rupture sans nouvelle version d'API et conversion automatique.

Le status des ressources suit la même règle : les reason documentées sont stables, de nouvelles peuvent s'ajouter.

CLI​

La CLI suit un versionnage sémantique. Tant qu'aucune version n'est publiée, elle s'installe depuis les sources et affiche dev. Les commandes marquées bêta peuvent changer de flags ; les commandes disponibles ne changent qu'avec une version majeure.

API HTTP​

  • Le préfixe /v1 est stable. Les routes marquées bêta dans la spécification OpenAPI (x-stackngo-status: beta) peuvent changer de forme.
  • Les champs de réponse ne sont jamais retirés sans annonce ; de nouveaux champs peuvent apparaître. Un client doit ignorer les champs qu'il ne connaît pas.
  • Les champs de requête inconnus sont refusés (400) : un client qui envoie un champ encore non déployé reçoit une erreur claire plutôt qu'un silence.

Journal​

0.0.1 Beta — Authentification de vos utilisateurs​

  • Annuaire par tenant : les utilisateurs de vos applications ont un annuaire propre à votre tenant, disponible dès sa création (plus de sng iam init). Invitation ou inscription ouverte, connexion sans mot de passe (lien envoyé par e-mail, Google, GitHub, GitLab, Microsoft, LinkedIn, OpenID Connect, passkeys), blocage de comptes, rôles et permissions. Voir Utilisateurs de vos applications.
  • OIDC : une IAMApplication avec directory: tenant se connecte à l'émetteur de votre tenant ; les jetons portent tenant, roles et permissions. Voir Authentification de vos applications.
  • Page de connexion personnalisable (logo, couleurs, thème, textes) avec aperçu dans la console, et nouveau Kind IAMProvider pour les fournisseurs de connexion.
  • CLI : sng iam est refondu (user, invitation, role, app, provider, login-page). Retirés : sng iam init, config, group, user create|update, role assign|unassign|resources|sub|group, app link|unlink ; les rôles se créent avec sng iam role create --permission. Voir sng iam.
  • Manifestes : IAMApplication gagne le champ directory (platform par défaut, tenant) ; IAMRole et IAMGroup ne déclarent plus les rôles de vos utilisateurs.
  • Console : nouvelle section Authentification (utilisateurs, rôles, applications, fournisseurs, page de connexion).

0.0.1 Beta — Éditeur de ressources de la console​

  • Console : un éditeur unique, avec deux onglets synchronisés Formulaire et YAML, crée et modifie vos ressources (Registre, Supervision, Applications, Créer une ressource). Création depuis un gabarit ou un squelette minimal, plusieurs objets séparés par ---, refus affichés sur le champ concerné, utilisable sur téléphone. Voir l'éditeur de ressources.

0.0.1 Beta — Correctifs​

  • Registre : le Kind ZotRepository est renommé RegistryRepository (et ZotRobot est devenu RegistryAccessKey) ; réappliquez vos manifestes avec le nouveau Kind.
  • Registre : l'ancien secret d'un RegistryAccessKey reste accepté 24 h après un renouvellement (au lieu d'une heure), réglable de 0 à 720 h avec spec.graceHours.
  • Identité : assignableRoles (IAMApplication) et assignableByApplications (IAMRole), qui étaient acceptés sans effet, sont désormais refusés avec la raison UnsupportedConfiguration. childRoles désigne maintenant un autre IAMRole par son nom ; un nom inconnu donne InvalidReference. Les policies gérées affichent une description.
  • Supervision : un canal de notification dont le secret manque n'empêche plus les autres canaux d'alerter ; il affiche la raison SecretNotFound.
  • DNS : un DNSRecord appliqué par sng apply exige une DNSZone déclarée, comme sng dns record set ; supprimer une DNSZone qui a encore des enregistrements est refusé (409) quelle que soit la commande. sng dns zone create affiche directement le TXT à poser.
  • Accès CI (OIDC) : un émetteur de la plateforme est refusé dès la création du trust ; sans audiences, l'URL de l'API est retenue ; sng tenant oidc get affiche le résultat de la vérification de l'émetteur.
  • API : les erreurs 415 et 429 sont en JSON comme les autres ; la limite de débit passe à 300 requêtes par minute et par adresse IP ; l'en-tête X-Tenant-Token est refusé sur toutes les routes.
  • CLI : sng tenant use et sng tenant assume disent quoi faire quand l'accès manque ; sng iam app link fonctionne ; sng sso login --client-credentials accepte --client-id (ou STNG_OAUTH_CLIENT_ID) ; sng monitor create prend 5m par défaut, accepté par tous les tiers ; sng apply, plan, list, edit et delete affichent Kind/nom ; sng registry respecte --tenant sur toutes ses commandes, affiche le digest une seule fois, et build analyse l'image avec trivy sur votre poste (--registry-scan pour l'analyse du registre).
  • Secrets : un secret supprimé se restaure avec toutes ses versions (sng secret restore, POST /v1/secrets/{name}/restore, action ssm:write). La rotation planifiée s'annule sans toucher la valeur (POST /v1/secrets/{name}/rotate/cancel, action ssm:rotate) ; un SSMSecret qui porte rotateDays la réarme. Avec spec.materialize: true, un SSMSecret est utilisable par vos sites statiques et vos canaux de notification, même si aucune App ne le lit.
  • Applications : une App tire les images du registre de la plateforme sans imagePullSecrets (robot default-pull en lecture dans chaque tenant). Un service exposé n'est Ready qu'une fois son certificat HTTPS émis. Nouvelles raisons : RegistryAccessPending, CertificatePending, DNSConflict (nom de domaine déjà pris dans le DNS, auparavant silencieux).
  • État des ressources : sng kind get KIND NAME affiche l'état observé en commentaires sous le manifeste, et --json (comme GET /v1/resources/{kind}/{name}) inclut status, pour App, SSMSecret, CDNSite, RegistryRepository, RegistryAccessKey, IAMApplication, IAMRole et IAMGroup.
  • Registre : sng registry robot credentials NAME [--show-password] (et GET /v1/registry/robots/{name}/credentials, action registry:admin) remet les identifiants d'un robot à un outil sans session.
  • Identité : sng iam role assign et sng iam group add-user acceptent le nom du manifeste d'un IAMRole ou d'un IAMGroup (409 tant qu'il n'est pas prêt). deletionPolicy: Block attend que la ressource ne soit plus utilisée, avec un message qui dit par quoi, puis la supprime : la recréer sous le même nom fonctionne.
  • Sites statiques : chaque dossier sert son index.html (/docs/intro/ et /docs/intro) ; une page introuvable n'est plus gardée en cache que 30 secondes ; HTTPS automatique pour chaque site.
  • Tiers : grille 3XS, 2XS, XS, S, M, L, XL, 2XL, 3XL, tenant créé en 3XS ; les anciens noms XXS, XXL et XXXL restent acceptés. Un tenant existant garde ses ressources sous le nom correspondant de la nouvelle grille.
  • Déconnexion : sng sso logout et POST /v1/iam/logout mettent réellement fin aux sessions, en quelques secondes : la session présentée, ou toutes les sessions du compte avec le jeton d'identité. Une session terminée reçoit 401.

2026-10 — Refonte de la documentation​

  • Nouvelle documentation : manifestes, CLI et API documentés depuis le code, en français et en anglais.
  • La spécification OpenAPI est servie par l'API sur GET /v1/openapi.yaml.
  • Fonctionnalités en bêta : DNS (DNSZone, DNSRecord, sng dns), registre d'images (sng registry), supervision (Monitor, NotificationChannel, StatusPage), accès CI par OIDC (IAMOIDCTrust, sng tenant oidc), tiers de tenant (sng tenant tier).
  • En préparation : OpenTofu (Workspace, Provider), API générées (GeneratedAPI).

2026-09 — Secrets déclaratifs et rotation​

  • SSMSecret : secret déclaré par manifeste, valeur générée par la plateforme, rotation périodique (spec.rotateDays).
  • sng secret set sans valeur génère une valeur aléatoire ; flags --length, --contains, --rotation.
  • Rupture : sng secret rotate ne prend plus de valeur en argument ; la nouvelle valeur est générée ou fournie par --key / flags de génération.

2026-09 — Identité v5​

  • Un seul jeton par requête ; l'en-tête X-Tenant-Token est refusé.
  • Permissions par policies (sng tenant policy), policies gérées admin, readonly, readwrite, assume-role, plus deux policies réservées au fonctionnement des secrets.
  • sng tenant use et sng tenant assume remplacent les anciennes commandes de session.