Aller au contenu principal

Kestra sur GKE Autopilot

Kestra sur GKE Autopilot

Kestra est une plateforme open source d'orchestration de données (Apache 2.0) qui permet de construire, planifier et superviser des pipelines ETL/ELT, des traitements par lots et des automatisations de workflows au moyen de définitions de flux déclaratives en YAML et d'un écosystème de plus de 500 plugins. Ce module déploie Kestra sur GKE Autopilot en mode autonome (standalone) en s'appuyant sur le socle App_GKE, qui provisionne et gère l'infrastructure Google Cloud et Kubernetes partagée.

Ce guide se concentre sur les services cloud qu'utilise Kestra 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 GKE — Workload Identity, ingress, 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_GKE plutôt que de les répéter ici.


1. Vue d'ensemble​

Kestra s'exécute comme un conteneur Java/JVM en mode autonome (serveur, worker et planificateur dans un seul conteneur). Le déploiement assemble un ensemble ciblé de services Google Cloud :

FonctionnalitéService Google CloudRemarques
CalculGKE AutopilotPod Java/JVM, 2 vCPU / 4 GiB par défaut, mode autonome à réplica unique
Base de donnéesCloud SQL for PostgreSQL 15Obligatoire — stocke la file d'attente, le référentiel et l'historique des exécutions
Stockage objetCloud StorageBucket GCS dédié pour les flux, les exécutions et les artefacts
SecretsSecret ManagerMot de passe administrateur Kestra généré automatiquement
IngressCloud Load BalancingLoadBalancer externe, domaine personnalisé et certificat géré en option

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

  • PostgreSQL 15 est obligatoire. Kestra utilise PostgreSQL à la fois pour sa file d'attente interne et pour son référentiel de flux. MySQL n'est pas pris en charge.
  • Le mode autonome exécute tous les composants dans un seul conteneur. Conservez max_instance_count = 1 pour éviter des états de verrouillage de file d'attente contradictoires entre réplicas.
  • Le démarrage à froid de la JVM Java est lent. La sonde de démarrage par défaut accorde jusqu'à ~14 minutes (délai initial de 30s + période de 20s × 40 tentatives). Conservez min_instance_count = 1 en production afin que les déclencheurs planifiés ne soient jamais manqués pendant les démarrages à froid.
  • Redis n'est pas utilisé. Kestra s'appuie sur PostgreSQL pour la mise en file d'attente en mode autonome.
  • L'affinité de session est ClientIP. Elle est requise pour la connexion persistante de diffusion des journaux de l'interface Kestra — les requêtes d'un même navigateur doivent atteindre le même pod.
  • Le mot de passe administrateur est généré automatiquement et stocké dans Secret Manager ; il n'est jamais défini en clair.
  • Un bucket de stockage GCS est toujours provisionné pour les flux, les exécutions et les artefacts ; son nom est injecté automatiquement sous la forme KESTRA_STORAGE_GCS_BUCKET.

2. Services Google Cloud et comment les explorer​

Toutes les commandes supposent que vous avez exécuté gcloud container clusters get-credentials <cluster> --region <region> --project <project> et que PROJECT, REGION et NAMESPACE sont définis. L'espace de noms et les autres identifiants figurent dans les Sorties du déploiement.

A. GKE Autopilot — la charge de travail Kestra​

Les pods Kestra sont planifiés sur Autopilot, qui facture le CPU et la mémoire que les pods demandent réellement. Par défaut, un réplica unique prend en charge tous les composants d'orchestration (serveur, worker, planificateur) dans un seul pod.

  • Console : Kubernetes Engine → Workloads → sélectionnez la charge de travail Kestra pour voir les pods, les événements et l'état. Kubernetes Engine → Services & Ingress affiche l'IP externe.
  • CLI :
    kubectl get pods,svc,hpa -n "$NAMESPACE"
    kubectl logs -n "$NAMESPACE" deploy/<service-name> --tail=100
    kubectl describe hpa -n "$NAMESPACE" # current vs target utilisation

Consultez App_GKE pour la gestion d'Autopilot, de la mise à l'échelle et du type de charge de travail (Deployment ou StatefulSet).

B. Cloud SQL for PostgreSQL 15​

Kestra stocke tout l'état des workflows — définitions de flux, historique des exécutions, déclencheurs, namespaces et file d'attente interne des tâches — dans une instance gérée Cloud SQL for PostgreSQL 15. Les pods l'atteignent via le sidecar Cloud SQL Auth Proxy sur un socket TCP à 127.0.0.1:5432 (aucune IP publique n'est exposée). Lors du premier déploiement, un job d'initialisation crée la base de données Kestra et l'utilisateur, et accorde les privilèges nécessaires.

  • Console : SQL → sélectionnez l'instance pour 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 automatisées et la rotation des mots de passe, consultez App_GKE.

C. Cloud Storage​

Un bucket Cloud Storage dédié est provisionné pour le backend de stockage d'artefacts GCS de Kestra. Toutes les exécutions de flux, les entrées/sorties des tâches et les objets de stockage interne y sont écrits. Le nom du bucket est injecté dans chaque pod sous la forme KESTRA_STORAGE_GCS_BUCKET. Des buckets supplémentaires ou des volumes GCS Fuse peuvent être montés pour l'accès aux données des flux.

  • Console : Cloud Storage → Buckets.
  • CLI :
    gcloud storage buckets list --project "$PROJECT"
    gcloud storage ls gs://<kestra-storage-bucket>/ # bucket name in Outputs
    # Confirm a GCS Fuse volume is mounted inside a pod (if configured):
    kubectl exec -n "$NAMESPACE" deploy/<service-name> -- df -h | grep -i fuse

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

D. Secret Manager​

Le mot de passe administrateur Kestra est stocké sous forme de secret Secret Manager et injecté dans les pods à l'exécution ; il n'apparaît jamais en clair dans la configuration.

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

Le secret du mot de passe administrateur est nommé <resource_prefix>-admin-password. Le nom du secret du mot de passe de la base de données figure dans les Sorties. Consultez App_GKE pour l'intégration Secret Store CSI et la rotation.

E. Réseau et entrée​

La charge de travail est exposée via une IP Cloud Load Balancing externe. enable_custom_domain vaut true par défaut, ce qui provisionne une Kubernetes Gateway avec un certificat géré par Google pour les noms d'hôte de application_domains ; une IP statique est réservée par défaut afin que l'adresse survive aux redéploiements.

  • Console : Network services → Load balancing ; VPC network → IP addresses.
  • CLI :
    kubectl get ingress,svc -n "$NAMESPACE"
    gcloud compute addresses list --project "$PROJECT"

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

F. Cloud Logging et Monitoring​

Les flux stdout/stderr des pods sont envoyés vers Cloud Logging ; les métriques GKE et Cloud SQL vers Cloud Monitoring. Les sondes de santé ciblent le point de terminaison /health de Kestra. Des tests de disponibilité et des règles d'alerte optionnels sont disponibles.

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

3. Comportement de l'application Kestra​

  • Configuration de la base de données au premier déploiement. Un job d'initialisation (db-init) utilise postgres:15-alpine pour se connecter via le Cloud SQL Auth Proxy et crée de manière idempotente la base de données et l'utilisateur Kestra, accorde les privilèges et réinitialise le schéma public afin que Flyway puisse appliquer toutes les migrations proprement sur une instance Cloud SQL neuve. Le job signale au proxy de s'arrêter proprement une fois terminé.
  • Migrations Flyway au démarrage. Kestra exécute ses propres migrations de schéma basées sur Flyway à chaque démarrage. Le paramètre FLYWAY_DATASOURCES_POSTGRES_BASELINE_ON_MIGRATE=true évite les échecs sur Cloud SQL, qui pré-remplit le schéma public avec des objets d'extension. La mise à niveau de application_version applique automatiquement les modifications de schéma.
  • Pont de socket JDBC. Sur GKE, le sidecar Cloud SQL Auth Proxy écoute déjà sur TCP 127.0.0.1:5432, si bien que la logique de pont JDBC de entrypoint.sh est automatiquement ignorée — aucun pont socat n'est nécessaire ici (contrairement à la variante Cloud Run).
  • Point de terminaison de santé. Les sondes de démarrage et de vivacité ciblent GET /health sur le port 8080. Kestra (JVM Java) démarre lentement ; la sonde par défaut accorde jusqu'à ~14 minutes avant de déclarer un échec.
  • Affinité de session. L'interface Kestra diffuse les journaux d'exécution sur une connexion persistante. session_affinity = "ClientIP" achemine toutes les requêtes d'un même navigateur vers le même pod, ce qui évite les déconnexions du flux de journaux.
  • Délai de grâce de terminaison. Fixé à 60 secondes (au-delà de la valeur par défaut de Kubernetes) pour permettre aux exécutions de tâches en cours de se terminer proprement avant l'arrêt forcé du pod.
  • Connexion administrateur. Le nom d'utilisateur administrateur initial est admin. Le mot de passe se récupère dans Secret Manager (voir §2.D).
  • Déclencheurs planifiés. Le planificateur interne de Kestra traite les déclencheurs définis dans les flux (cron, intervalle, webhook). Tant qu'un pod est en cours d'exécution, tous les déclencheurs s'exécutent à l'heure prévue. Définir min_instance_count = 0 entraîne des déclencheurs manqués pendant les périodes de démarrage à froid.

4. Variables de configuration​

Les variables sont regroupées exactement comme elles apparaissent sur la plateforme de déploiement. Seuls les paramètres propres à Kestra ou notables pour lui sont listés ; toutes les autres entrées sont héritées de App_GKE 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 de la charge de travail et des ressources régionales.

Groupe 2 — Environnement de déploiement​

VariableValeur par défautDescription
tenant_iddemoCourt suffixe qui rend les noms de ressources uniques par environnement.
support_users[]Adresses e-mail recevant l'accès au projet et les alertes de surveillance.
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_namekestraNom de base des ressources. Ne pas modifier après le premier déploiement.
application_versionlatestTag de version de l'image Kestra ; incrémentez-le pour déployer une nouvelle version (par ex. 0.17.0).
display_nameKestra Data OrchestrationNom convivial affiché dans la console et l'interface de la plateforme.
descriptionKestra Data Orchestration - ETL/ELT pipeline and workflow orchestration on GKE AutopilotAnnotation de description de la charge de travail.
deploy_applicationtrueDéfinissez false pour ne provisionner que l'infrastructure.

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

VariableValeur par défautDescription
cpu_limit2000mCPU par pod ; 2 vCPU minimum recommandés pour la JVM Kestra.
memory_limit4GiMémoire par pod ; 4 GiB recommandés (2 GiB minimum).
container_port8080Port du serveur Kestra/Micronaut. Doit correspondre à MICRONAUT_SERVER_PORT.
min_instance_count1Nombre minimal de réplicas. Conservez ≥ 1 pour ne jamais manquer de déclencheurs planifiés.
max_instance_count1Nombre maximal de réplicas. Conservez 1 en mode autonome pour éviter les conflits de file d'attente.
timeout_seconds300Durée maximale d'une requête en secondes (0–3600).
enable_cloudsql_volumetrueSidecar Cloud SQL Auth Proxy pour les connexions par socket TCP à PostgreSQL.
cloud_sql_proxy_version2-alpineTag de l'image du sidecar Cloud SQL Auth Proxy. Épinglez-le sur un digest pour des déploiements immuables.
enable_image_mirroringtrueMet en miroir l'image Kestra dans Artifact Registry avant le déploiement.
enable_vertical_pod_autoscalingfalseLaisse Autopilot ajuster automatiquement les demandes de ressources.
termination_grace_period_seconds60Secondes d'attente de Kubernetes après SIGTERM — permet aux exécutions en cours de se terminer.
deployment_timeout1800Nombre maximal de secondes pendant lesquelles Terraform attend la fin du déploiement (image Java volumineuse).

container_image_source, container_image, container_build_config, container_protocol et container_resources sont déclarées par souci de cohérence avec les conventions du socle, mais ne sont pas transmises par ce module — Kestra_Common construit toujours l'image officielle kestra/kestra via Cloud Build (container_build_config) et transmet directement cpu_limit/memory_limit au lieu de container_resources. Les définir n'a aucun effet ; utilisez cpu_limit/memory_limit ci-dessus pour dimensionner le pod.

Groupe 5 — Variables d'environnement et secrets​

VariableValeur par défautDescription
environment_variables{}Paramètres non secrets supplémentaires. Les variables Kestra essentielles sont injectées automatiquement ; ne les remplacez pas ici.
secret_environment_variables{}Mappage variable d'environnement → nom de secret Secret Manager (par ex. { KESTRA_ENCRYPTION_SECRET = "kestra-enc-key" }).
secret_propagation_delay30Secondes d'attente après la création d'un secret (0–300).
secret_rotation_period2592000sPériode de notification de rotation de Secret Manager.
enable_auto_password_rotationfalseRotation automatisée et sans interruption du mot de passe de la base de données.
rotation_propagation_delay_sec90Secondes d'attente après la rotation avant de redémarrer les pods.

Groupe 6 — Backend GKE et cluster​

VariableValeur par défautDescription
service_typeLoadBalancerMode d'exposition du Service.
session_affinityClientIPRoutage persistant requis pour la diffusion des journaux de l'interface Kestra.
workload_typenullSe résout automatiquement en StatefulSet lorsque le stockage par pod est activé ; sinon en Deployment.
gke_cluster_name""Laissez vide pour découvrir automatiquement le cluster géré par Services_GCP.
namespace_name""Laissez vide pour le générer automatiquement à partir du nom de l'application et de l'ID de tenant.
network_tags["nfsserver"]Tags de nœud/pod pour les règles de pare-feu VPC.
enable_network_segmentationfalseCrée des ressources Kubernetes NetworkPolicy.
configure_service_meshfalseActive l'injection Istio pour l'espace de noms de l'application.
extra_service_ports[]Ports de Service supplémentaires pour les charges de travail multiprotocoles. Déclarée mais non transmise — sans effet sur ce module.

prereq_gke_subnet_cidr, prereq_subnet_cidr_override, prereq_gke_pod_cidr_override et prereq_gke_service_cidr_override contrôlent les prérequis VPC/GKE intégrés (inline) créés uniquement lorsqu'aucun réseau/cluster Services_GCP n'existe encore. prereq_gke_subnet_cidr est déclarée mais non référencée ; les trois variables *_override sont transmises et n'ont d'importance que pour les déploiements existants avec prérequis intégrés (sans Services_GCP), afin d'éviter de remplacer le cluster lors d'un nouvel apply.

Groupe 7 — StatefulSet​

Pertinent uniquement lorsque workload_type = "StatefulSet" ou stateful_pvc_enabled = true.

VariableValeur par défautDescription
stateful_pvc_enablednullActive un PVC par pod pour le stockage local des plugins ou les fichiers d'exécution temporaires.
stateful_pvc_size10GiTaille de stockage de chaque PVC. Immuable après création — planifiez la capacité à l'avance.
stateful_pvc_mount_path/app/storageChemin du conteneur où le PVC est monté.
stateful_pvc_storage_class""StorageClass Kubernetes ; vide utilise la valeur par défaut du cluster.

Groupe 9 — Règles de fiabilité​

VariableValeur par défautDescription
enable_pod_disruption_budgettrueProtège la disponibilité pendant les mises à niveau des nœuds (true par défaut pour Kestra).
pdb_min_available1Nombre minimal de pods disponibles pendant les interruptions volontaires.
enable_topology_spreadfalseRépartit les pods entre les zones (pertinent uniquement lorsque max_instance_count > 1).

Groupe 10 — Observabilité et santé​

VariableValeur par défautDescription
startup_probeHTTP /health, délai de 30s, période de 20s, 40 échecsSonde de démarrage de l'application — accorde jusqu'à ~14 minutes au démarrage de la JVM.
liveness_probeHTTP /health, délai de 180s, période de 30s, 5 échecsSonde de vivacité de l'application.
uptime_check_configdésactivéTest de disponibilité Cloud Monitoring optionnel.
alert_policies[]Règles d'alerte sur métriques optionnelles.

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

VariableValeur par défautDescription
initialization_jobs[]Laissez vide pour utiliser le job db-init intégré. Fournissez une liste non vide pour le remplacer entièrement.
cron_jobs[]CronJobs Kubernetes pour des tâches auxiliaires planifiées (par ex. sauvegardes).
additional_services[]Services GKE sidecar ou auxiliaires déployés aux côtés de Kestra.

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

Intégration Cloud Build / Cloud Deploy standard d'App_GKE — voir App_GKE. Entrées clés : enable_cicd_trigger, github_repository_url, github_token, enable_cloud_deploy, enable_binary_authorization. binauthz_evaluation_mode est déclarée par souci de cohérence avec les conventions mais n'est pas référencée — seule enable_binary_authorization est transmise.

Groupe 13 — Système de fichiers (NFS)​

VariableValeur par défautDescription
enable_nfsfalseProvisionne un partage Cloud Filestore (NFS) et le monte dans les pods. Utile pour les scripts de flux qui écrivent des fichiers locaux.
nfs_mount_path/mnt/nfsChemin de montage dans le conteneur.
nfs_volume_namenfs-data-volumeNom du volume ; à remplacer lorsque vous montez un second partage NFS à côté du premier.

Groupe 14 — Cloud Storage et Artifact Registry​

VariableValeur par défautDescription
create_cloud_storagetrueProvisionne les buckets supplémentaires de storage_buckets. Le bucket de stockage Kestra est toujours créé.
storage_buckets[]Buckets GCS supplémentaires en plus du bucket de stockage intégré.
gcs_volumes[]Buckets GCS à monter via le pilote GCS Fuse CSI.
manage_storage_kms_iam / enable_artifact_registry_cmekfalseOptions CMEK.

Groupe 15 — Redis​

VariableValeur par défautDescription
enable_redistrueDéclarée par souci de cohérence avec les conventions du socle. Non référencée — main.tf désactive Redis en dur (enable_redis = false) car le mode autonome de Kestra met les tâches en file d'attente via PostgreSQL, et non via Redis.
redis_host / redis_port / redis_auth"" / "6379" / ""Également déclarées mais non référencées, pour la même raison.

Groupe 16 — Backend de base de données​

VariableValeur par défautDescription
db_namekestraNom de la base de données PostgreSQL. Immuable après le premier déploiement.
db_userkestraUtilisateur applicatif. Immuable après le premier déploiement.
database_password_length32Longueur du mot de passe généré (16–64).
enable_auto_password_rotationfalseRotation sans interruption du mot de passe de la base de données.
enable_mysql_plugins / mysql_pluginsfalse / []Transmises à App_GKE mais sans objet — Kestra fonctionne uniquement avec PostgreSQL.

database_type, sql_instance_name, sql_instance_base_name, application_database_name, application_database_user, enable_postgres_extensions, postgres_extensions et l'ensemble db_host_env_var_name / db_name_env_var_name / db_user_env_var_name / db_password_env_var_name / db_port_env_var_name sont toutes déclarées par souci de cohérence avec les conventions du socle mais ne sont pas transmises par ce module — Kestra_Common fixe le moteur à POSTGRES_15 et n'injecte que les noms standard DB_HOST/DB_NAME/DB_USER/DB_PASSWORD/DB_PORT. Les définir n'a aucun effet.

Groupe 17 — Sauvegarde et maintenance​

VariableValeur par défautDescription
backup_schedule0 2 * * *Cron de sauvegarde automatisée (UTC).
backup_retention_days7Durée de rétention ; portez-la à 30–90 pour la production ou la conformité.
enable_backup_import / backup_source / backup_urioptions de restaurationRestaure à partir d'une sauvegarde lors du déploiement.
backup_filebackup.sqlDéclarée par souci de cohérence avec les conventions. Non référencée — main.tf transmet backup_uri comme source d'import à la place.

Groupe 18 — Scripts SQL personnalisés​

enable_custom_sql_scripts, custom_sql_scripts_bucket, custom_sql_scripts_path, custom_sql_scripts_use_root — exécutent du SQL depuis un bucket GCS après le provisionnement. Voir App_GKE.

Groupe 19 — Domaine personnalisé, IP statique et réseau​

VariableValeur par défautDescription
enable_custom_domaintrueProvisionne une Kubernetes Gateway avec un certificat SSL pour les noms d'hôte personnalisés.
application_domains[]Noms d'hôte à servir. S'il est vide alors que enable_custom_domain = true, un domaine nip.io est généré.
reserve_static_iptrueIP externe stable d'un redéploiement à l'autre. Recommandé pour la production.
gateway_backend_stagedevÉtape Cloud Deploy (dev/staging/prod) dont le Service est ciblé par la HTTPRoute de la Gateway. Ignorée lorsque enable_cloud_deploy = false.
network_name""Déclarée par souci de cohérence avec les conventions du socle. Non référencée — la découverte du réseau est gérée en interne via module.network_discovery.

Groupe 20 — Identity-Aware Proxy (IAP)​

VariableValeur par défautDescription
enable_iapfalseExige une connexion Google devant Kestra.
iap_authorized_users / iap_authorized_groups[]Qui peut accéder.
iap_oauth_client_id / iap_oauth_client_secret""Obligatoires lorsque IAP est activé (sensibles).

Groupe 21 — Cloud Armor​

VariableValeur par défautDescription
enable_cloud_armorfalseAssocie une règle Cloud Armor (WAF) au backend de l'Ingress.
admin_ip_ranges[]Plages CIDR autorisées pour l'accès privilégié.
cloud_armor_policy_namedefault-waf-policyNom de la règle.

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).
vpc_cidr_ranges / vpc_sc_dry_run(définies)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 à l'issue d'un déploiement réussi et constituent le moyen le plus rapide de localiser et d'explorer les ressources en cours d'exécution.

SortieDescription
service_nameNom du Service Kubernetes.
namespaceEspace de noms dans lequel s'exécute la charge de travail.
service_cluster_ipClusterIP interne au cluster.
stage_service_cluster_ipsMappage des ClusterIP des services propres à chaque étape (Cloud Deploy).
service_external_ipIP du LoadBalancer externe (lorsqu'une IP statique est réservée).
service_urlURL permettant d'accéder à Kestra.
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_host / database_portPoint de terminaison de la base de données (127.0.0.1 via l'Auth Proxy) / port.
storage_bucketsBuckets Cloud Storage créés (y compris le bucket de stockage Kestra).
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État de la surveillance et canaux de notification.
initialization_jobs / db_import_jobNoms des jobs de configuration et d'import (facultatif).
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 (dépôt, déclencheur, registre).
github_repository_url / github_repository_owner / github_repository_nameDétails du dépôt GitHub.
artifact_registry_repository / cloudbuild_trigger_name / cloudbuild_trigger_idRegistre et déclencheur de build.
kubernetes_readyIndique si le cluster/la charge de travail est prêt. false lors du premier apply d'un nouveau cluster intégré (inline).
vpc_sc_enabled / vpc_sc_perimeter_name / vpc_sc_dry_run_modeÉtat de VPC-SC.
audit_logging_enabled / artifact_registry_cmek_enabledÉtat de la journalisation 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
db_namekestra — à définir une foisCritiqueImmuable après le premier déploiement ; le modifier connecte Kestra à une base de données vide, avec perte de tous les flux, de l'historique des exécutions, des déclencheurs et des namespaces.
application_namekestra — à définir une foisCritiqueImmuable après le premier déploiement ; le modifier renomme toutes les ressources GCP/Kubernetes, ce qui entraîne une recréation complète avec perte de données.
KESTRA_BASICAUTH_ENABLED (injectée à true)laisser telle qu'injectéeCritiqueLa forcer à false expose l'intégralité de l'interface et de l'API REST de Kestra sans authentification. Ne la désactivez que derrière un proxy d'authentification de confiance (IAP, Cloud Armor).
enable_backup_importfalse sauf restaurationCritiqueL'activer sans backup_uri valide fait échouer le job d'import.
max_instance_count1ÉlevéKestra Community Edition utilise le verrouillage de file d'attente PostgreSQL — plusieurs réplicas provoquent une double affectation des tâches et des conflits d'exécution.
min_instance_count1ÉlevéLa valeur 0 entraîne des déclencheurs planifiés manqués pendant les périodes de démarrage à froid. Le démarrage de la JVM Kestra peut prendre plusieurs minutes.
memory_limit4GiÉlevéDes valeurs inférieures à 2 GiB provoquent des erreurs OutOfMemoryError de la JVM sous une charge d'exécutions concurrentes.
enable_cloudsql_volumetrueÉlevéRequis pour la connectivité PostgreSQL ; bloqué au moment du plan lorsque database_type != "NONE".
KESTRA_QUEUE_TYPE / KESTRA_REPOSITORY_TYPE (injectées à postgres)laisser telles qu'injectéesÉlevéSeul PostgreSQL est provisionné ; les forcer vers un type de backend non pris en charge provoque un échec au démarrage.
KESTRA_STORAGE_TYPE (injectée à gcs)laisser telle qu'injectéeÉlevéPasser à local fait écrire tous les artefacts d'exécution dans le stockage éphémère du pod, perdus au redémarrage.
Seuil d'échec de startup_probe40 (par défaut)ÉlevéLe réduire en dessous de ~10 provoque des redémarrages prématurés du pod lors des démarrages lents de la JVM, avant que Kestra ait fini de charger tous les flux.
session_affinityClientIPMoyenSans persistance, les connexions de diffusion des journaux de l'interface Kestra se coupent lorsqu'elles sont acheminées vers un autre pod.
termination_grace_period_seconds60MoyenDes valeurs inférieures à 30 s interrompent les exécutions de tâches en cours.
enable_pod_disruption_budgettrueMoyenDésactiver le PDB permet à GKE d'évincer le pod Kestra pendant la maintenance des nœuds, interrompant toutes les exécutions en cours.
quota_memory_requests / _limitsunités binairesCritiqueLes entiers nus sont interprétés comme des octets par Kubernetes et bloquent toute planification dans l'espace de noms.
enable_iap / enable_cloud_armorà activer pour les accès d'administrationMoyenSinon, l'interface et l'API Kestra sont accessibles publiquement.
backup_retention_days7 (à augmenter en production)MoyenTrop court pour les exigences de rétention liées à la conformité.
organization_idà définir en cas d'utilisation de VPC-SCMoyenS'il est vide, VPC Service Controls est ignoré sans avertissement.

Pour le comportement du socle évoqué tout au long de ce guide — IAM et Workload Identity, autoscaling, ingress et certificats, CI/CD, Cloud Armor, IAP, Binary Authorization, VPC-SC, sauvegardes et mise en miroir des images — consultez App_GKE. La configuration applicative propre à Kestra partagée avec la variante Cloud Run est décrite dans Kestra_Common.

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