Loading...

CONTAINER APPS · GUIDE DU PANNEAU

Migrer un projet Docker multi-services, de bout en bout depuis le panneau

Ceci est le pendant « cliquer-pointer » du guide en ligne de commande cdnctl. Il reprend le même projet multi-services de style docker-compose (services web/API, workers en arrière-plan, une base de données, un cache et un bus de messages) et l'exécute sur la plateforme de conteneurs managés CDN.com.tr — entièrement depuis le panneau de gestion. Chaque étape ci-dessous a un équivalent en ligne de commande ; utilisez celle que vous préférez.

Voie rapide : importez directement votre docker-compose.yml

Vous avez déjà un docker-compose.yml ? L'onglet conteneur peut l'importer en une seule étape — ouvrez Import from Docker Compose, examinez le plan d'aperçu, puis confirmez. Voir le guide d'import Docker Compose ou la référence compose de cdnctl. Les étapes manuelles ci-dessous restent valables pour tout ce que l'import compose ne couvre pas.

1 · Concepts

  • Compte = projet. Un compte peut contenir plusieurs container apps ; votre forfait détermine combien d'applications vous pouvez exécuter.
  • App = une image de conteneur (un service). Chaque app a un port, un contrôle de santé, des ressources, des variables d'environnement et des secrets, et peut être mise à l'échelle sur N réplicas.
  • Les add-ons managés sont des backends avec état — postgres (PostgreSQL/TimescaleDB), mysql, redis et nats (JetStream) — que vous rattachez à une app. La connexion (y compris le mot de passe généré) est injectée directement dans cette app ; le mot de passe n'est jamais réaffiché.
  • Service discovery. Les apps de votre compte partagent un réseau privé et se joignent entre elles par leur nom d'app, exactement comme un service docker-compose — http://<app-name>:<port>. Nommez une app hot-data-store sur le port 8082 et http://hot-data-store:8082 se résout automatiquement.
  • Exposition publique. Toute app peut être publiée sur un sous-domaine CDN.com.tr ou sur votre propre domaine. Chaque service exposé obtient son propre hostname ; les workers et les bases de données restent privés.

2 · Ouvrez l'onglet Container Apps

Connectez-vous, ouvrez CDN Accounts, cliquez sur l'icône de réglages du compte que vous voulez gérer, puis choisissez l'onglet Platforms. En haut, vous verrez les types de plateformes — sélectionnez Container Apps (et appuyez sur Activate la première fois).

Onglets de type de plateforme avec Container Apps sélectionné
Les onglets de plateforme. Le point vert indique la plateforme active pour ce compte.

L'écran Container Apps s'ouvre sur une vue d'ensemble (nombre d'apps, add-ons, sortie edge) avec Create App et Usage Details, suivie de la liste Your apps. Chaque app est une ligne affichant son statut, avec une action Create Test Copy (preprod) et un lien Manage →. Cliquez sur Manage pour ouvrir la page de détail de cette app, où vous connectez tout pour le service.

Vue d'ensemble de Managed Container Apps et la liste Your apps
Cartes de vue d'ensemble en haut ; en dessous, la liste Your apps — une ligne par app avec son badge de statut, une action Create Test Copy et un lien Manage →. Ouvrez une app pour accéder à sa route, à l'action Expose on cdn.com.tr et aux sections Add-ons / Imports / Jobs / Storage / Env.

3 · Créez et connectez un service

Cliquez sur Create App et remplissez le formulaire — une app par service :

  • App name — c'est aussi le hostname interne utilisé par les autres apps (gardez-le identique au nom de votre service compose).
  • Image + Tag — générez chaque service pour linux/amd64 et poussez-le vers un registre que la plateforme peut pull.
  • Port, Replicas, Plan et Healthcheck path — laissez le port vide pour un worker en arrière-plan qui n'écoute pas.
  • Registry credential — choisissez un identifiant enregistré pour les images privées, ou ajoutez-en un directement dans la ligne Private registry credential (le token est stocké chiffré et n'est plus jamais réaffiché).
  • Env values (un KEY=value par ligne) et Secrets — les secrets sont stockés comme des secrets Kubernetes chiffrés et ne sont plus affichés après l'enregistrement.
Formulaire de création de container app
Le formulaire de création d'app. Les variables d'environnement sont visibles dans la config de l'app ; les secrets sont en écriture seule. Pour un service propriétaire d'un addon, vous n'avez pas besoin de saisir sa chaîne de connexion — voir l'étape 4.

Cochez Managed Redis, Managed DB ou Object Storage sur le formulaire pour les rattacher lors de la création de l'app, ou ajoutez-les ensuite depuis la page de détail de l'app (étape 4).

4 · Ajoutez des bases de données managées, un cache et un bus de messages

Ouvrez l'app (Manage →), puis son onglet Add-ons, et utilisez les actions pour activer Redis, une database (PostgreSQL/MySQL) ou NATS. L'addon est provisionné pour cette app et sa connexion est injectée automatiquement :

Panneau des add-ons managés avec les actions d'activation/désactivation
Le panneau Add-ons sur la page de détail de l'app. Activer un addon redéploie l'app avec la connexion câblée.
# auto-injected into the app the addon is enabled on:
DATABASE_HOST, DATABASE_PORT, DATABASE_NAME, DATABASE_USER   # env
DATABASE_PASSWORD, DATABASE_URL                              # secrets (full postgres:// URL)
REDIS_URL        # redis://<redis-host>:6379/0
NATS_URL         # nats://<nats-host>:4222

Partager un backend entre applications. Les backends sans mot de passe — NATS, et Redis tel que configuré ici — sont aussi accessibles depuis vos autres apps : définissez NATS_URL/REDIS_URL en env sur chaque consommateur, en utilisant le host de l'addon. Une base de données SQL protégée par mot de passe n'est jamais injectée que dans l'app qui la possède (le mot de passe n'est jamais affiché) ; n'essayez donc pas de la réutiliser depuis une seconde app — laissez une app posséder la base de données et faites en sorte que les autres l'appellent, elle, ou exécutez votre propre image de base de données avec un mot de passe que vous définissez.

5 · Déployez, vérifiez le statut et les logs

Enregistrer une app met un déploiement en file d'attente. Le badge de statut passe à running — à la fois dans la liste Your apps et sur la page de détail de l'app — quand le conteneur est en bonne santé. Sur la page de détail, utilisez les boutons d'action pour voir le statut / le runtime, les logs et l'activité, et le menu Operations (barre du haut) pour suivre chaque déploiement jusqu'à son terme. Déployez d'abord le service qui initialise le schéma de votre base de données si vos apps exécutent des migrations au démarrage.

Le compteur running / replicas de la vue d'ensemble et l'en-tête Your apps reflètent l'état en direct — une app y passe à running dès que son pod est prêt.

6 · Exposez des services publiquement

Sur la page de détail de l'app, cliquez sur Expose on cdn.com.tr pour générer le sous-domaine immuable propre à l'app <uid>.cdn.com.tr (le HTTPS est géré pour vous). La route de l'app affiche alors l'adresse en ligne. Exposez autant de services que nécessaire — un seul compte, de nombreux hostnames publics. Pour utiliser votre propre domaine à la place, ajoutez-le via DNS Management et pointez-le vers l'app.

N'exposez que les services qui doivent être publics. Les workers en arrière-plan et les bases de données restent privés. Ajoutez une authentification à tout service HTTP que vous publiez.

7 · Observabilité (vue unifiée)

Exécutez votre stack de monitoring comme des apps ordinaires : un collecteur de métriques qui scrape vos services (construit avec votre config de scrape intégrée, gardé interne) et un dashboard que vous exposez publiquement. Créez les deux comme n'importe quelle autre app (étape 3), connectez le dashboard au collecteur par son nom d'app (http://<collector-name>:<port>), puis Exposez uniquement le dashboard. Il interroge le collecteur via le réseau privé et est accessible depuis son sous-domaine cdn.com.tr.

8 · Modifiez, mettez à l'échelle, redémarrez et supprimez

Ouvrez une app (Manage →) ; sa page de détail porte ces actions :

  • Edit () — changez l'image/le tag, le port, les replicas, le contrôle de santé, l'env et les secrets, puis redéployez.
  • Restart et scale — mettez les replicas à 0 pour arrêter un service et à 1+ pour le redémarrer.
  • Delete () — supprime l'app et son sous-domaine public. Désactiver un addon de données conserve son volume par défaut ; supprimer les données nécessite une confirmation explicite.

Vous préférez le terminal ? Chaque action ici correspond exactement à une commande cdnctl.