Aller au contenu principal

Directus sur Cloud Run

Directus sur Cloud Run

Directus est une plateforme open source de CMS headless et de Backend-as-a-Service (BaaS) qui encapsule n'importe quelle base de données SQL avec des API REST et GraphQL générées automatiquement et une application d'administration sans code. Ce module déploie Directus sur Cloud Run v2 en s'appuyant sur le socle App_CloudRun, qui provisionne et gère l'infrastructure Google Cloud partagée.

Ce guide se concentre sur les services cloud utilisés par Directus et sur la manière de les explorer et de les exploiter depuis la console Google Cloud et la ligne de commande. Pour les mécanismes communs à toutes les applications Cloud Run — Workload Identity, entrée, autoscaling, CI/CD, Cloud Armor, IAP, Binary Authorization, VPC Service Controls, sauvegardes et cycle de vie du déploiement — reportez-vous au guide du socle App_CloudRun plutôt que de les répéter ici.


1. Vue d'ensemble​

Directus s'exécute sous la forme d'un conteneur Node.js sur Cloud Run entièrement géré. Le déploiement assemble un ensemble ciblé de services Google Cloud :

FonctionnalitéService Google CloudRemarques
CalculCloud Run v2Serverless, mise à l'échelle automatique jusqu'à zéro entre les requêtes
Base de donnéesCloud SQL for PostgreSQL 15Obligatoire — Directus impose en dur DB_CLIENT = "pg"
Fichiers partagésFilestore (NFS)Ressources et médias téléversés partagés entre toutes les instances
Stockage d'objetsCloud StorageUn bucket dédié aux téléversements ; GCS est le pilote de stockage par défaut de Directus
CacheRedisActivé par défaut ; utilise par défaut l'adresse IP de l'hôte NFS lorsqu'aucun hôte explicite n'est défini
SecretsSecret ManagerKEY, SECRET, ADMIN_PASSWORD et URL de connexion REDIS générés automatiquement
EntréeCloud Load BalancingHTTPS via un NEG serverless + domaine personnalisé et certificat géré en option

Valeurs par défaut judicieuses à connaître d'emblée :

  • PostgreSQL 15 est obligatoire. Directus impose en dur DB_CLIENT = "pg". Passer à MySQL ou à NONE empêche le démarrage.
  • GCS est le pilote de stockage de fichiers par défaut. Directus_Common injecte automatiquement STORAGE_GCS_DRIVER, STORAGE_GCS_BUCKET et STORAGE_LOCATIONS = "gcs", de sorte que tous les téléversements aboutissent dans le bucket Cloud Storage dédié.
  • La migration automatique et l'amorçage s'exécutent à chaque démarrage. AUTO_MIGRATE = "true" applique toutes les migrations de schéma de base de données en attente au démarrage. BOOTSTRAP = "true" crée l'utilisateur administrateur et les collections système au premier démarrage — les deux opérations sont idempotentes.
  • La mise à l'échelle à zéro est la valeur par défaut (min_instance_count = 0). Directus utilise des sessions stockées dans Redis, de sorte que les démarrages à froid sont acceptables pour les déploiements dont la latence n'est pas critique. Définissez min_instance_count = 1 pour éliminer les démarrages à froid en production.
  • Les KEY et SECRET de Directus sont générés automatiquement et stockés dans Secret Manager. Leur rotation après le premier déploiement invalide toutes les sessions actives et tous les JWT.

2. Services Google Cloud et comment les explorer​

Toutes les commandes supposent que PROJECT, REGION et SERVICE_NAME sont définis. Le nom du service et les autres identifiants figurent dans les sorties du déploiement.

A. Service Cloud Run — la charge de travail Directus​

Directus s'exécute sous la forme d'un unique service Cloud Run. Chaque nouveau déploiement crée une nouvelle révision ; la gestion du trafic détermine quelle révision reçoit le trafic.

  • Console : Cloud Run → sélectionnez le service pour consulter les révisions, la répartition du trafic, les journaux et les métriques.
  • CLI :
    gcloud run services list --project "$PROJECT" --region "$REGION"
    gcloud run services describe "$SERVICE_NAME" --project "$PROJECT" --region "$REGION"
    gcloud run revisions list --service "$SERVICE_NAME" --project "$PROJECT" --region "$REGION"
    # Stream live logs:
    gcloud run services logs tail "$SERVICE_NAME" --project "$PROJECT" --region "$REGION"
    # Verify the health endpoint manually:
    curl -sf "$(gcloud run services describe "$SERVICE_NAME" --project "$PROJECT" --region "$REGION" --format='value(status.url)')/server/ping"

Consultez App_CloudRun pour l'autoscaling, la concurrence, les environnements d'exécution et la répartition du trafic.

B. Cloud SQL for PostgreSQL 15​

Directus stocke toutes les données applicatives dans une instance gérée Cloud SQL for PostgreSQL 15. Les instances se connectent par défaut en TCP (connecteur Cloud SQL, sans socket Unix par défaut sur Cloud Run). Un job db-init s'exécute à chaque apply (de manière idempotente) : il crée la base de données et l'utilisateur de l'application, accorde les privilèges et installe l'extension uuid-ossp.

  • Console : SQL → sélectionnez l'instance pour consulter les connexions, les sauvegardes, les flags et les métriques.
  • CLI :
    gcloud sql instances list --project "$PROJECT"
    gcloud sql instances describe <instance-name> --project "$PROJECT"
    # Open an interactive shell to inspect schema/data:
    gcloud sql connect <instance-name> --user=<db-user> --project "$PROJECT"

Le nom de l'instance, le nom de la base de données, l'utilisateur et le secret Secret Manager contenant le mot de passe figurent tous dans les sorties. Pour le modèle de connexion, les sauvegardes automatiques et la rotation du mot de passe, consultez App_CloudRun.

C. Filestore (NFS) et Cloud Storage​

Les ressources téléversées sont écrites sur un partage Filestore (NFS) monté dans chaque instance, afin que tous les réplicas voient les mêmes fichiers. Un bucket Cloud Storage dédié aux téléversements est également provisionné ; Directus est configuré pour utiliser GCS comme pilote de stockage principal via STORAGE_GCS_DRIVER = "gcs".

  • Console : Filestore → Instances pour le partage NFS ; Cloud Storage → Buckets pour le bucket des téléversements.
  • CLI :
    gcloud filestore instances list --project "$PROJECT"
    gcloud storage buckets list --project "$PROJECT"
    gcloud storage ls gs://<uploads-bucket>/ # bucket name is in the Outputs

Consultez App_CloudRun pour le provisionnement NFS, GCS Fuse et les options CMEK.

D. Cache Redis​

Redis sert de support à la mise en cache des réponses d'API de Directus et à l'état de limitation de débit. Lorsqu'aucun hôte Redis explicite n'est configuré et que NFS est activé, l'adresse IP de l'hôte NFS est utilisée comme point de terminaison Redis par défaut. L'URL de connexion Redis complète (y compris un éventuel mot de passe d'authentification) est stockée comme secret Secret Manager et injectée sous forme de variable d'environnement REDIS.

  • Console : Memorystore → Redis (si vous utilisez une instance gérée).
  • CLI :
    # Confirm REDIS is injected into the Cloud Run service environment:
    gcloud run services describe "$SERVICE_NAME" --project "$PROJECT" --region "$REGION" \
    --format='yaml(spec.template.spec.containers[0].env)'

E. Secret Manager​

Quatre secrets sont générés et stockés automatiquement : KEY (chiffrement des données), SECRET (signature des JWT), ADMIN_PASSWORD (compte administrateur initial) et REDIS (URL de connexion Redis lorsque Redis est activé). Le mot de passe de la base de données est géré séparément par le socle.

  • Console : Security → Secret Manager.
  • CLI :
    gcloud secrets list --project "$PROJECT"
    # Retrieve the admin password:
    gcloud secrets versions access latest --secret=<prefix>-admin-password --project "$PROJECT"
    # Retrieve the DB password:
    gcloud secrets versions access latest --secret=<database_password_secret> --project "$PROJECT"

Le nom database_password_secret figure dans les sorties. Consultez App_CloudRun pour le modèle d'injection des secrets.

F. Réseau et entrée​

Le service Cloud Run est placé derrière un groupe de points de terminaison du réseau (NEG) serverless rattaché à un équilibreur de charge Cloud global. HTTPS est géré automatiquement. Un domaine personnalisé avec un certificat géré par Google peut être activé, et une adresse IP statique peut être réservée.

  • Console : Network services → Load balancing ; Cloud Run → service → onglet Mise en réseau.
  • CLI :
    gcloud run services describe "$SERVICE_NAME" --project "$PROJECT" --region "$REGION" \
    --format='value(status.url)'
    gcloud compute addresses list --project "$PROJECT"

Consultez App_CloudRun pour les détails sur les domaines personnalisés, Cloud CDN et l'adresse IP statique.

G. Cloud Logging et Monitoring​

Les sorties stdout/stderr des conteneurs sont envoyées vers Cloud Logging. Les métriques Cloud Run et les tests de disponibilité facultatifs sont envoyés vers Cloud Monitoring.

  • Console : Logging → Logs Explorer ; Monitoring → Dashboards / Alerting.
  • CLI :
    gcloud logging read \
    'resource.type="cloud_run_revision" AND resource.labels.service_name="'"$SERVICE_NAME"'"' \
    --project "$PROJECT" --limit 50

3. Comportement de l'application Directus​

  • Configuration de la base de données au premier déploiement. Un job db-init s'exécute à chaque apply (execute_on_apply = true). Il crée l'utilisateur de base de données Directus avec le mot de passe généré, crée la base de données directus, installe l'extension uuid-ossp et accorde tous les privilèges. Le job est idempotent.
  • Amorçage au premier démarrage. BOOTSTRAP = "true" crée l'utilisateur administrateur initial et les collections système de Directus au premier démarrage. L'adresse e-mail de l'administrateur vaut par défaut admin@example.com — remplacez-la via environment_variables = { ADMIN_EMAIL = "you@example.com" } avant le premier déploiement.
  • Migrations à chaque démarrage. AUTO_MIGRATE = "true" fait exécuter database migrate:latest par Directus à chaque démarrage d'instance, de sorte que la mise à niveau de application_version applique automatiquement les changements de schéma.
  • Sonde de santé. La sonde de démarrage cible /server/ping avec un délai initial de 30 secondes et un seuil d'échec généreux (failure_threshold = 10, period_seconds = 20) pour laisser le temps à la configuration de la base de données au premier démarrage. La sonde de vivacité cible également /server/ping.
  • Connexions TCP à la base de données par défaut. Contrairement à la variante GKE (qui utilise un socket Unix via le sidecar Auth Proxy), la variante Cloud Run se connecte à Cloud SQL en TCP à l'aide du connecteur Cloud SQL (enable_cloudsql_volume = false par défaut). Le trafic sortant ne transite que vers des adresses IP privées (vpc_egress_setting = "PRIVATE_RANGES_ONLY").
  • Rotation de KEY et SECRET. La rotation du secret KEY invalide immédiatement toutes les sessions utilisateur actives. La rotation de SECRET invalide tous les JWT émis. N'effectuez jamais l'une ou l'autre sans fenêtre de maintenance planifiée ni notification des clients.
  • Connexion administrateur. Récupérez le mot de passe administrateur généré dans Secret Manager (voir §2.E). L'adresse e-mail de l'administrateur par défaut est admin@example.com, sauf si elle a été remplacée.

4. Variables de configuration​

Les variables sont regroupées exactement comme elles apparaissent sur la plateforme de déploiement. Seuls les paramètres propres à Directus ou notables pour lui sont listés ; toutes les autres entrées sont héritées d'App_CloudRun avec leur comportement et leurs valeurs par défaut standard.

Groupe 1 — Projet et identité​

VariableValeur par défautDescription
project_id(obligatoire)Projet Google Cloud cible.
regionus-central1Région du service Cloud Run et des ressources régionales.

Groupe 2 — Environnement de déploiement​

VariableValeur par défautDescription
tenant_iddemoSuffixe court qui rend les noms de ressources uniques par environnement. Ne le modifiez pas après le premier déploiement.
support_users[]Adresses e-mail bénéficiant d'un accès au projet et des alertes de monitoring.
resource_labels{}Libellés appliqués à toutes les ressources pour le suivi des coûts et de la propriété.

Groupe 3 — Identité de l'application​

VariableValeur par défautDescription
application_namedirectusNom de base des ressources. Ne le modifiez pas après le premier déploiement — il est intégré aux identifiants des secrets Secret Manager.
display_nameDirectus CMSNom convivial affiché dans la console.
application_version11.1.0Tag de version de l'image Directus ; incrémentez-le pour déployer une nouvelle version. Fixez un tag précis — évitez latest en production.
descriptionDirectus - Open Source Headless CMS and Backend-as-a-ServiceAnnotation de description du service.

Groupe 4 — Exécution et mise à l'échelle​

VariableValeur par défautDescription
deploy_applicationtrueDéfinissez false pour ne provisionner que l'infrastructure (Cloud SQL, stockage, secrets) sans déployer le service Cloud Run.
cpu_limit1000mvCPU par instance ; 1 vCPU convient aux charges de travail légères.
memory_limit1GiMémoire par instance ; 1 GiB par défaut pour un usage léger/typique (environ 150Mi observés) — portez-la à 2 GiB pour la production ou pour des schémas volumineux et des transformations d'images.
cpu_always_allocatedfalseFacturation à la requête — sans risque pour le mode requête/réponse par défaut de Directus. Ne définissez true que si vous activez les abonnements temps réel/WebSocket ou des flux planifiés qui doivent s'exécuter sans requête entrante.
min_instance_count0Nombre minimal d'instances. Définissez 1 pour éliminer les démarrages à froid en production.
max_instance_count1Plafond de concurrence maximal. Augmentez-le pour le trafic de production.
container_port8055Port d'écoute par défaut de Directus.
execution_environmentgen2Environnement d'exécution Cloud Run de deuxième génération (recommandé).
enable_cloudsql_volumefalseConnexion TCP par défaut ; définissez true pour activer le socket Unix via le sidecar Auth Proxy.

Groupe 5 — Entrée et IAP​

VariableValeur par défautDescription
ingress_settingsall"all" (public) ou "internal-and-cloud-load-balancing" (privé).
vpc_egress_settingPRIVATE_RANGES_ONLYN'achemine que le trafic vers des plages privées via le connecteur VPC.
enable_iapfalseExige une connexion Google devant Directus.
iap_authorized_users / iap_authorized_groups[]Personnes autorisées à accéder lorsque IAP est activé.

Groupe 6 — Variables d'environnement et secrets​

VariableValeur par défautDescription
environment_variables(valeurs SMTP par défaut)Paramètres non secrets supplémentaires. La valeur par défaut inclut des variables SMTP d'exemple. Remplacez ADMIN_EMAIL ici avant le premier déploiement.
secret_environment_variables{}Correspondance variable d'environnement → nom du secret Secret Manager.

Groupe 7 — Sauvegarde et maintenance​

VariableValeur par défautDescription
backup_schedule0 2 * * *Cron des sauvegardes automatiques (UTC).
backup_retention_days7Rétention ; portez-la à 30–90 pour la production ou la conformité.
enable_backup_import / backup_source / backup_uri / backup_formatoptions de restaurationRestaure à partir d'une sauvegarde lors du déploiement. Définissez enable_backup_import = false immédiatement après une restauration réussie.

Groupe 8 — CI/CD et intégration GitHub​

Intégration standard Cloud Build / Cloud Deploy d'App_CloudRun — consultez App_CloudRun. Entrées principales : enable_cicd_trigger, github_repository_url, github_token, enable_cloud_deploy.

Groupe 9 — Scripts SQL personnalisés et NFS​

VariableValeur par défautDescription
enable_custom_sql_scripts / custom_sql_scripts_bucket / custom_sql_scripts_pathexécution de SQL depuis GCSConsultez App_CloudRun.
nfs_instance_name / nfs_instance_base_nameréférence l'instance Filestore partagéeÀ définir lorsque l'instance Filestore n'a pas été créée par le même déploiement Services_GCP.

Groupe 10 — Cloud Armor, domaines et CDN​

VariableValeur par défautDescription
enable_cloud_armorfalseAssocie une règle Cloud Armor (WAF) au backend de l'équilibreur de charge.
admin_ip_ranges[]Plages CIDR autorisées pour les accès privilégiés.
application_domains[]Noms d'hôte personnalisés — à activer en production avec un vrai nom DNS.
enable_cdnfalseActive Cloud CDN via l'équilibreur de charge.

Groupe 11 — Cloud Storage et NFS​

VariableValeur par défautDescription
create_cloud_storagetrueProvisionne des buckets supplémentaires en plus du bucket de téléversements provisionné automatiquement.
storage_buckets[{ name_suffix = "data", location = "" }]Buckets GCS supplémentaires, en plus du bucket de téléversements provisionné automatiquement par Directus_Common.
enable_nfstrueVolume Filestore partagé pour les ressources téléversées (à laisser activé en multi-instances).
nfs_mount_path/mnt/nfsChemin de montage dans le conteneur.
gcs_volumes[]Buckets GCS à monter via le pilote CSI GCS Fuse.

Groupe 12 — Backend de base de données​

VariableValeur par défautDescription
database_typePOSTGRES_15Directus nécessite PostgreSQL. Ne le modifiez pas.
db_namedirectusNom de la base de données PostgreSQL. Ne le modifiez pas après le premier déploiement.
db_userdirectusUtilisateur de l'application. Ne le modifiez pas après le premier déploiement.
database_password_length32Longueur du mot de passe généré (16–64).
enable_auto_password_rotationfalseRotation du mot de passe de la base de données sans interruption de service.

Groupe 13 — Jobs et tâches planifiées​

VariableValeur par défautDescription
initialization_jobs[]Laissez vide pour utiliser le job intégré db-init fourni par Directus_Common.
cron_jobs[]Jobs Cloud Run récurrents (p. ex. purge du cache, synchronisation des données).

Groupe 14 — Observabilité et santé​

VariableValeur par défautDescription
startup_probe/server/ping, HTTP, délai de 30s, failure_threshold=10, période=20sSonde de démarrage Cloud Run. Accorde jusqu'à ~230 s aux migrations du premier démarrage.
liveness_probe/server/ping, HTTP, délai de 15sL'instance est redémarrée après 3 échecs consécutifs.
uptime_check_configdésactivé par défaut, chemin /Test de disponibilité Cloud Monitoring facultatif.

Groupe 21 — Cache Redis​

VariableValeur par défautDescription
enable_redistrueUtilise Redis pour la mise en cache et la limitation de débit.
redis_host""Laissez vide pour utiliser l'adresse IP de l'hôte NFS ; définissez-le explicitement pour une instance Memorystore dédiée.
redis_port6379Port Redis.
redis_auth""Mot de passe d'authentification Redis facultatif (sensible). L'URL de connexion complète est stockée dans Secret Manager.

Groupe 22 — VPC Service Controls et journalisation d'audit​

VariableValeur par défautDescription
enable_vpc_scfalseApplique un périmètre VPC-SC (nécessite organization_id). Utilisez d'abord vpc_sc_dry_run = true.
vpc_cidr_ranges / vpc_sc_dry_run(défini)Plages CIDR du niveau d'accès / mode simulation (dry-run).
enable_audit_loggingfalseJournaux Cloud Audit Logs détaillés.

5. Sorties​

Ces valeurs sont renvoyées lorsqu'un déploiement réussit et constituent le moyen le plus rapide de localiser et d'explorer les ressources en cours d'exécution.

SortieDescription
service_nameNom du service Cloud Run.
service_urlURL HTTPS publique permettant d'accéder à Directus.
service_locationRégion dans laquelle le service est déployé.
stage_servicesURL des services par étape Cloud Deploy (lorsque le déploiement multi-étapes est activé).
load_balancer_ipAdresse IP externe du frontal de l'équilibreur de charge.
load_balancer_urlURL HTTPS via l'équilibreur de charge (lorsqu'un domaine personnalisé ou une IP statique est utilisé).
database_instance_nameNom de l'instance Cloud SQL.
database_nameNom de la base de données de l'application.
database_userUtilisateur de la base de données de l'application.
database_password_secretSecret Secret Manager contenant le mot de passe de la base de données.
database_hostHôte de la base de données (sensible — renvoyé sous la forme (sensitive) dans la sortie du plan).
database_portPort de la base de données.
storage_bucketsBuckets Cloud Storage créés.
network_name / network_exists / regionsRéseau VPC, présence, régions disponibles.
container_image / container_registryImage déployée et dépôt Artifact Registry.
monitoring_enabled / monitoring_notification_channels / uptime_check_namesÉtat du monitoring, canaux et tests de disponibilité.
initialization_jobsNoms des jobs de configuration.
deployment_id / tenant_id / resource_prefixIdentifiants de nommage.
project_id / project_numberIdentifiants du projet.
cicd_enabled / cicd_configurationÉtat et détails du CI/CD.
github_repository_url / github_repository_owner / github_repository_nameDétails GitHub du CI/CD.
artifact_registry_repository / cloudbuild_trigger_name / cloudbuild_trigger_idRegistre et déclencheur de build.
vpc_sc_enabled / vpc_sc_perimeter_name / vpc_sc_dry_run_modeÉtat de VPC-SC.
audit_logging_enabled / artifact_registry_cmek_enabledÉtat des journaux d'audit et de CMEK.

6. Pièges de configuration et valeurs par défaut judicieuses​

Risque : Critique (perte de données / panne / sécurité) — Élevé (service dégradé) — Moyen (coût ou dégradation partielle) — Faible (mineur).

ParamètreValeur judicieuseRisqueConséquence en cas d'erreur
database_typePOSTGRES_15CritiqueDirectus nécessite PostgreSQL ; passer à MySQL ou à NONE empêche le démarrage et rend orpheline la base de données existante.
application_nameà définir une seule foisCritiqueIntégré aux identifiants des secrets Secret Manager (KEY, SECRET, ADMIN_PASSWORD). Le modifier recrée tous les secrets — toutes les sessions actives et tous les JWT sont immédiatement invalidés.
tenant_idà définir une seule foisCritiqueLe modifier après le premier déploiement rend orpheline l'instance Cloud SQL et génère une nouvelle base de données vide ainsi que de nouvelles KEY/SECRET, invalidant toutes les sessions.
Secrets KEY / SECRETgénérés automatiquement, ne jamais les faire tourner à la légèreCritiqueLa rotation de KEY déconnecte tous les utilisateurs. La rotation de SECRET invalide tous les jetons d'API. N'effectuez de rotation que pendant une fenêtre de maintenance planifiée.
Variable d'environnement ADMIN_EMAILune adresse e-mail réelleÉlevéLa valeur par défaut admin@example.com crée le compte administrateur avec une adresse e-mail facile à deviner. Remplacez-la via environment_variables = { ADMIN_EMAIL = "you@example.com" } avant le premier déploiement.
enable_nfstrueÉlevéSans NFS partagé, les ressources téléversées écrites par une instance sont invisibles pour les autres et perdues lors d'une réduction d'échelle (sauf si GCS est utilisé exclusivement).
enable_redistrue en multi-instancesÉlevéSans Redis, chaque instance dispose d'un cache isolé ; la limitation de débit s'applique par instance et la mise en cache de Directus ne fonctionne plus entre les réplicas.
redis_host"" (NFS) ou expliciteÉlevéAucun point de terminaison Redis valide si Redis est activé, NFS désactivé et aucun hôte défini.
startup_probe.failure_threshold10 au premier déploiementÉlevéTrop bas : les migrations de Directus peuvent prendre 1 à 3 minutes sur une base de données vierge ; l'instance est arrêtée avant la fin des migrations.
enable_backup_importfalse après restaurationÉlevéLe laisser à true relance l'importation à chaque apply, écrasant les données en production par la sauvegarde obsolète.
memory_limit2GiÉlevéUne mémoire insuffisante provoque des arrêts OOM lors du chargement du schéma ou de la transformation d'images.
min_instance_count1 en productionMoyen0 en production provoque des démarrages à froid de 20 à 40 s sur la première requête d'API après une période d'inactivité.
max_instance_countà adapter au traficMoyen1 bloque la mise à l'échelle horizontale et provoque la mise en file d'attente des requêtes sous charge.
enable_iap / enable_cloud_armorà activer pour les usages d'administrationMoyenSinon, l'interface d'administration est accessible publiquement.
backup_retention_days7 (à augmenter en production)MoyenTrop court pour les exigences de rétention liées à la conformité.
enable_vpc_sc + vpc_sc_dry_runcommencer avec vpc_sc_dry_run = trueCritiqueActiver l'application sans inclure le compte de service dans le niveau d'accès bloque simultanément Cloud SQL, Secret Manager et Artifact Registry.

Pour le comportement du socle évoqué tout au long de cette page — IAM et Workload Identity, autoscaling, entrée et certificats, CI/CD, Cloud Armor, IAP, Binary Authorization, VPC-SC, sauvegardes et mise en miroir des images — consultez App_CloudRun. La configuration applicative propre à Directus partagée avec la variante GKE est décrite dans Directus_Common.

Need RAD to do something it does not do yet? Request it on the roadmap, or vote on what is already there.