CONTAINER APPS · ÉTUDE DE CAS
Publiez sans crainte : blue/green preprod ⇄ prod en un clic
Un workflow réel pour une équipe qui exploite une application en production sur Managed Containers et souhaite des cycles de déploiement/test longs sans toucher à la production : construisez une copie preprod, testez-la aussi longtemps que vous le souhaitez sur son propre sous-domaine, puis basculez le domaine actif vers elle instantanément — et revenez en arrière tout aussi vite si quelque chose ne va pas. Présenté de deux façons : depuis le panneau de gestion, et avec la CLI cdnctl.
Le scénario
ajansspor.com tourne sur Managed Containers (une container app de prod + un MySQL managé). L'équipe veut tester un changement conséquent pendant plusieurs jours, puis passer en ligne en quelques secondes avec un rollback instantané garanti. Avec le blue/green, nous ne modifions jamais l'application prod en cours d'exécution : nous la clonons vers un environnement preprod, la testons là, puis basculons le domaine de production.
- prod (blue) — l'application en ligne qui sert
ajansspor.com. - preprod (green) — un clone, accessible sur son propre sous-domaine
ca-*.cdn.com.tr. - Promote fait passer
ajansspor.comde prod à preprod en quelques secondes, sans interruption. - Rollback le ramène en arrière — et, pour les changements de données, restaure un instantané automatique de la base de données.
Quand le produit est composé de plusieurs applications (web + api + worker)
La plupart des produits réels forment une stack, pas un seul conteneur. Le blue/green fonctionne sur toute la stack comme une seule unité : un project est l'ensemble des applications de votre compte, et une seule action clone, promeut ou fait un rollback de toutes à la fois.
- Create preprod from all apps clone chaque application prod (web, api, worker, …) en une copie preprod appariée, au sein d'un même project.
- Les liens application-à-application sont reconnectés automatiquement — si
webparle àapi, lewebpreprod parle à l'apipreprod. La stack preprod est autonome et ne pointe jamais vers la production. - Promote (whole project) fait basculer d'un coup le domaine de production de chaque application vers sa copie preprod ; Rollback (whole project) les ramène toutes en arrière. Un changement qui touche plusieurs services passe en ligne — ou est annulé — comme une seule unité.
- Un seul service a changé ? Utilisez Create preprod / Promote pour une seule application, sur cette application uniquement.
Comment videoonly utiliserait ceci : ses applications (front-end, API, workers) vivent dans un seul compte. Vous cliqueriez sur Create preprod from all apps (state shared pour réutiliser la DB/Redis en ligne, ou clone pour tester une migration sur des données copiées), valideriez toute la stack sur les sous-domaines ca-*, puis Promote (whole project) pour faire basculer chaque nom d'hôte de production vers les nouvelles versions en quelques secondes — avec Rollback (whole project) comme échappatoire instantanée.
State : ce que preprod partage avec prod
Choisissez ceci lors de la création du preprod (le --state / la liste déroulante) :
- shared — preprod utilise les mêmes DB/Redis managés et buckets object-storage que prod (via des références sécurisées entre applications ; aucune copie). Idéal pour les changements de code/UI.
- clone — preprod obtient son propre MySQL managé avec une copie des données de prod. Sûr pour les changements de données/schéma ; les données de prod ne sont pas touchées.
- isolated — preprod démarre à vide.
Lors du Promote, la plateforme prend d'abord un instantané automatique de la base de données, afin que Rollback puisse aussi restaurer les données. Le contenu statique/média sur un volume persistant peut être partagé (RWX) pour que les téléversements restent cohérents.
Étape par étape A — dans le panneau
- Ouvrez votre compte CDN → l'onglet Platforms → Managed Container Apps. Le panneau Blue/Green environments se trouve juste au-dessus de Your apps. (Si ce compte sert encore via Pull/Push CDN et n'a pas encore d'applications, cliquez d'abord sur Enable Apps Alongside Current Delivery sous Platforms.)

Le panneau Blue/Green environments au-dessus de la liste des applications - Choisissez un state et cliquez sur Create preprod from all apps (produit entier) — ou Create preprod (single app) si un seul service a changé.

Choisissez un state, puis « Create preprod from all apps » (tout le projet) — ou créez-en un pour une seule application - Les application(s) preprod apparaissent appariées avec prod au sein d'un même project (chacune sur son propre sous-domaine). Déployez et testez-les aussi longtemps que nécessaire — la production continue de servir le trafic sans être touchée.

Le project avec ses applications prod et preprod, ainsi que Promote / Rollback pour tout le projet - Une fois prêt, cliquez sur Promote (whole project) → prod. Chaque domaine de production bascule vers sa copie preprod en quelques secondes.

Promote (whole project) fait basculer chaque domaine de production vers sa copie preprod - Si quelque chose ne va pas, cliquez sur Rollback (whole project) — le trafic revient instantanément vers les applications précédentes (et l'instantané de la base de données pré-promote est restauré). Le bouton Rollback apparaît sur le panneau une fois qu'un promote a été exécuté.
Les captures d'écran ci-dessus sont de véritables captures du panneau CDN.com.tr en production (Platforms → Managed Container Apps → Blue/Green environments).
Étape par étape B — avec cdnctl
Le même flux, scriptable de bout en bout. Application unique :
# 1) Clone prod → preprod (shared add-ons; use --state clone for isolated DB+data)
cdnctl container apps create-preprod --account <uuid> --app <prod_app_uuid> --state shared
# 2) Deploy + test the preprod app on its own subdomain
cdnctl container apps deploy --account <uuid> --app <preprod_app_uuid>
cdnctl container apps expose --account <uuid> --app <preprod_app_uuid>
cdnctl container apps status --account <uuid> --app <preprod_app_uuid>
# 3) Go live: move the production domain to preprod (instant, no downtime)
cdnctl container apps promote --account <uuid> --app <preprod_app_uuid>
# 4) If needed, roll back (traffic + pre-promote DB snapshot)
cdnctl container apps rollback-promotion --account <uuid> --app <prod_app_uuid>
Produit entier (project multi-applications) — les admins/ops l'exécutent sur le serveur avec artisan :
# Clone EVERY prod app in the account into a paired preprod (one project)
php artisan container-apps:env create-preprod --account <uuid> --all --state shared
# ... deploy & test each preprod app on its ca-* subdomain ...
# Promote the whole project (all production domains move together)
php artisan container-apps:env promote --account <uuid> --project <project_uuid>
# Roll the whole project back (traffic + DB snapshots for every app)
php artisan container-apps:env rollback --account <uuid> --project <project_uuid>
Les mêmes actions groupées sont disponibles dans le panneau (le panneau « Blue/Green environments » : Create preprod from all apps, Promote / Rollback (whole project)) et via l'API client (POST …/platform/container/project/{create-preprod,promote,rollback}). Briques de bas niveau : container-apps:switch-origin (déplacer un domaine) et container-apps:db clone|snapshot|restore (opérations de données MySQL managé).
Pourquoi c'est sûr
- La production n'est jamais modifiée sur place — vous construisez et testez sur une application séparée.
- Instantané + réversible — Promote/Rollback est une bascule de propriété de domaine (quelques secondes), pas une reconstruction.
- Les données sont réversibles aussi — Promote prend automatiquement un instantané de la base de données ; Rollback le restaure.
- Par compte / par domaine — le DNS et le TLS ne sont pas affectés ; le certificat de production reste en place.
Voir aussi le guide Environnements Blue/green.