Aller au contenu principal

LangFlow sur GKE Autopilot

LangFlow sur GKE Autopilot

LangFlow est un outil visuel open source et low-code de création d'agents et de workflows d'IA, basé sur LangChain — vous assemblez des chaînes de modèles de langage, des pipelines RAG et des agents en glissant et en reliant des composants sur un canevas, puis vous les exposez sous forme d'API. Ce module déploie LangFlow sur GKE Autopilot 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 utilisés par LangFlow 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, entrée, mise à l'échelle automatique, 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​

LangFlow s'exécute comme une charge de travail web Python unique (FastAPI + React). Le déploiement assemble un ensemble ciblé de services Google Cloud :

FonctionnalitéService Google CloudRemarques
CalculGKE AutopilotPods Python sur le port 7860, 1 vCPU / 2 GiB par défaut, mise à l'échelle automatique horizontale
Base de donnéesCloud SQL for PostgreSQL 15Obligatoire — LangFlow conserve l'ensemble des flux, composants et identifiants dans Postgres
Stockage d'objetsCloud StorageUn bucket data dédié est provisionné par défaut ; l'état applicatif de LangFlow réside lui-même dans PostgreSQL
Cache et file d'attenteRedis (facultatif)Non requis par LangFlow ; câblé uniquement par souci de compatibilité future
SecretsSecret ManagerLANGFLOW_SECRET_KEY et LANGFLOW_SUPERUSER_PASSWORD générés automatiquement ; mot de passe de la base de données
EntréeCloud Load BalancingLoadBalancer externe, domaine personnalisé + certificat géré en option

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

  • PostgreSQL 15 est obligatoire. Le moteur de base de données est imposé par la couche applicative partagée (database_type = "POSTGRES_15") ; choisir un autre moteur empêche le démarrage.
  • LANGFLOW_SECRET_KEY est généré automatiquement et stocké dans Secret Manager. Il chiffre chaque identifiant stocké intégré dans un flux. Il ne doit jamais faire l'objet d'une rotation après le premier démarrage — sa rotation casse définitivement tous les identifiants stockés, qu'il faut alors ressaisir dans chaque flux.
  • Le compte administrateur est provisionné à partir d'un mot de passe généré. LANGFLOW_AUTO_LOGIN = "false" active l'authentification ; LangFlow crée l'administrateur initial (admin par défaut) à l'aide du secret LANGFLOW_SUPERUSER_PASSWORD. Récupérez-le dans Secret Manager pour vous connecter.
  • La base de données se connecte via le sidecar Cloud SQL Auth Proxy sur 127.0.0.1 ; le point d'entrée compose LANGFLOW_DATABASE_URL via TCP avec sslmode=disable (le proxy termine le TLS).
  • L'affinité de session est ClientIP par défaut. LangFlow conserve un état de session et d'éditeur de flux en mémoire de processus ; le routage persistant maintient un client sur le même pod.
  • Un seul pod par défaut (min_instance_count = 1, max_instance_count = 1). GKE ne descend pas à zéro ; l'état en mémoire de processus de LangFlow fait d'un réplica unique la valeur par défaut sûre.
  • L'état applicatif réside dans PostgreSQL ; NFS est désactivé par défaut. Un bucket Cloud Storage data est provisionné par défaut (storage_buckets), mais LangFlow conserve lui-même les flux, composants et identifiants dans la base de données.

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 sont indiqués dans les sorties du déploiement.

A. GKE Autopilot — la charge de travail LangFlow​

Les pods LangFlow sont planifiés sur Autopilot, qui facture le CPU et la mémoire réellement demandés par les pods. L'autoscaling horizontal des pods dimensionne le déploiement entre le nombre minimal et le nombre maximal de réplicas.

  • Console : Kubernetes Engine → Workloads → sélectionnez la charge de travail LangFlow pour voir les pods, les révisions et les événements. 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​

LangFlow stocke toutes les données applicatives (flux, composants, identifiants, historique d'exécution, utilisateurs) dans une instance gérée Cloud SQL for PostgreSQL 15. Les pods y accèdent de façon privée via le sidecar Cloud SQL Auth Proxy sur 127.0.0.1 ; aucune IP publique n'est exposée. Au premier déploiement, un job d'initialisation crée la base de données applicative, le rôle et les droits.

  • Console : SQL → sélectionnez l'instance pour les connexions, les sauvegardes, les flags et les métriques.
  • CLI :
    gcloud sql instances list --project "$PROJECT" --filter="name~langflow"
    gcloud sql instances describe <instance-name> --project "$PROJECT"
    # Open an interactive shell to inspect schema/data:
    gcloud sql connect <instance-name> --user=<db-user> --database=<db-name> --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 des mots de passe, consultez App_GKE.

C. Redis (facultatif — non utilisé par LangFlow)​

Redis est désactivé par défaut et LangFlow n'en a pas besoin ; les entrées enable_redis sont câblées uniquement par souci de compatibilité future. Laissez enable_redis = false, sauf si une fonctionnalité future le requiert.

  • CLI (uniquement s'il est activé) :
    kubectl exec -n "$NAMESPACE" deploy/<service-name> -- env | grep -i redis

D. Secret Manager​

Deux secrets sont générés automatiquement et stockés dans Secret Manager : LANGFLOW_SECRET_KEY (chiffre tous les identifiants stockés) et LANGFLOW_SUPERUSER_PASSWORD (le mot de passe de connexion de l'administrateur initial). Ils sont fournis aux pods via l'intégration Secret Store CSI. 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" --filter="name~langflow"
    gcloud secrets versions access latest --secret=<secret-name> --project "$PROJECT"

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​

Par défaut, la charge de travail est exposée via une IP externe Cloud Load Balancing (service_type = LoadBalancer). Un domaine personnalisé avec un certificat géré par Google peut être activé, et une IP statique peut être réservée 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 sorties stdout/stderr des pods sont envoyées à Cloud Logging ; les métriques GKE et Cloud SQL à Cloud Monitoring. Des tests de disponibilité et des règles d'alerte facultatives 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 LangFlow​

  • Configuration de la base de données au premier déploiement. Un job d'initialisation exécute create-db-and-user.sh à l'aide de postgres:15-alpine. Il attend PostgreSQL, puis crée de manière idempotente le rôle applicatif et la base de données, définit le propriétaire et accorde les privilèges sur la base et sur le schéma public, puis signale au sidecar Cloud SQL Auth Proxy de s'arrêter (POST /quitquitquit) afin que le pod du job se termine proprement. Il peut être relancé sans risque.
  • Migrations de schéma au démarrage. LangFlow exécute ses migrations Alembic à chaque démarrage du conteneur ; les tables sont donc créées et mises à niveau par l'application elle-même — le job db-init ne gère que le rôle, la base et les droits. Prévoyez un délai supplémentaire au premier démarrage.
  • LANGFLOW_SECRET_KEY est immuable après le premier démarrage. Il est généré une seule fois et écrit dans Secret Manager. Le modifier casse définitivement chaque identifiant stocké intégré dans un flux ; ceux-ci ne peuvent plus être déchiffrés. Ne procédez à une rotation que pendant une fenêtre de maintenance planifiée, avec un plan de ressaisie des identifiants.
  • Compte administrateur initial. Avec LANGFLOW_AUTO_LOGIN = "false", LangFlow crée le superutilisateur (admin par défaut, défini via langflow_username) à l'aide du secret LANGFLOW_SUPERUSER_PASSWORD. Récupérez le mot de passe et connectez-vous :
    gcloud secrets versions access latest \
    --secret=<langflow-password-secret> --project "$PROJECT"
  • L'URL de la base de données est composée à l'exécution. Le point d'entrée construit LANGFLOW_DATABASE_URL à partir des variables DB_* injectées, via TCP. Sur GKE, DB_HOST = 127.0.0.1 (le sidecar Auth Proxy) ; sslmode=disable est donc utilisé — ne définissez pas le DSN manuellement.
  • Chemin de santé. Les sondes de démarrage et de vivacité ciblent /health, le point de terminaison public de vivacité de LangFlow, qui renvoie 200 dès que le serveur est opérationnel. Au premier démarrage, prévoyez le temps des migrations Alembic avant que le pod ne devienne Ready.
  • Affinité de session. session_affinity = ClientIP maintient chaque client sur le même pod — important, car LangFlow conserve l'état de l'éditeur de flux en mémoire de processus.
  • Inspecter l'exécution des jobs :
    kubectl get jobs -n "$NAMESPACE"
    kubectl logs -n "$NAMESPACE" job/<job-name>

4. Variables de configuration​

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

Toutes les autres entrées suivent le comportement standard d'App_GKE.

Groupe 2 — Environnement de déploiement​

VariableValeur par défautDescription
tenant_iddemoSuffixe court qui rend les noms de ressources uniques par environnement.
support_users[]Adresses e-mail auxquelles sont accordés 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é.

Toutes les autres entrées suivent le comportement standard d'App_GKE.

Groupe 3 — Identité de l'application​

VariableValeur par défautDescription
application_namelangflowNom de base des ressources. Ne le modifiez pas après le premier déploiement.
application_display_nameLangFlowNom lisible affiché dans la console.
application_versionlatestTag de version de l'image LangFlow ; épingle l'image de base 1.10.2 lorsque la valeur est latest. Épinglez explicitement en production.
langflow_usernameadminNom d'utilisateur du superutilisateur initial (administrateur) ; le mot de passe est généré automatiquement dans Secret Manager.

Toutes les autres entrées suivent le comportement standard d'App_GKE.

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

VariableValeur par défautDescription
deploy_applicationtrueDéfinissez false pour ne provisionner que l'infrastructure.
container_image_sourcecustomLangFlow est construit à partir de l'image encapsulée via Cloud Build.
min_instance_count1Nombre minimal de réplicas ; GKE ne descend pas à zéro.
max_instance_count1Gardez 1 — LangFlow conserve un état en mémoire de processus.
enable_vertical_pod_autoscalingfalseVPA d'Autopilot pour un dimensionnement ajusté.
container_port7860LangFlow écoute sur le port 7860.
container_resources{ cpu_limit = "1000m", memory_limit = "2Gi" }Limites et demandes de CPU/mémoire par pod. Relevé depuis 1Gi après un bug confirmé d'OOMKilled au démarrage — ne descendez pas en dessous de 2Gi.
timeout_seconds300Durée maximale d'une requête (0–3600 secondes).
enable_cloudsql_volumetrueSidecar Cloud SQL Auth Proxy pour la connectivité.
enable_image_mirroringtrueMet en miroir l'image de base LangFlow dans Artifact Registry avant le build personnalisé.

Toutes les autres entrées suivent le comportement standard d'App_GKE.

Groupe 5 — Variables d'environnement et secrets​

VariableValeur par défautDescription
environment_variables{}Paramètres non secrets supplémentaires fusionnés par-dessus les valeurs par défaut de LangFlow. Ne définissez pas ici LANGFLOW_SECRET_KEY, LANGFLOW_SUPERUSER_PASSWORD ni LANGFLOW_DATABASE_URL.
secret_environment_variables{}Correspondance variable d'environnement → nom de secret Secret Manager (par exemple, clés d'API de fournisseurs de LLM).
secret_propagation_delay30Secondes d'attente après la création d'un secret avant de poursuivre.
secret_rotation_period2592000sFréquence des notifications de rotation de Secret Manager.

Toutes les autres entrées suivent le comportement standard d'App_GKE.

Groupe 6 — Backend GKE et cluster​

VariableValeur par défautDescription
gke_cluster_name"" (découvert automatiquement)Cluster Autopilot cible (provenant de Services_GCP).
namespace_name"" (généré automatiquement)Espace de noms Kubernetes de la charge de travail.
workload_typenullSe résout en Deployment (par défaut) ; StatefulSet lorsqu'un PVC est activé.
service_typeLoadBalancerMode d'exposition du Service Kubernetes.
session_affinityClientIPRoutage persistant pour l'état de l'éditeur de flux en mémoire de processus.
termination_grace_period_seconds30Secondes d'attente entre SIGTERM et SIGKILL.
enable_network_segmentationfalseCrée des ressources NetworkPolicy Kubernetes.

Toutes les autres entrées suivent le comportement standard d'App_GKE.

Groupe 7 — StatefulSet​

VariableValeur par défautDescription
stateful_pvc_enablednullActive les modèles de PVC. Inutile — LangFlow stocke tout son état dans PostgreSQL.
stateful_pvc_size / stateful_pvc_mount_path / stateful_pvc_storage_class(définies)Dimensionnement et montage du PVC par pod (uniquement s'il est activé).
stateful_headless_service / stateful_pod_management_policy / stateful_update_strategy(définies)Comportement du StatefulSet (uniquement s'il est activé).

Toutes les autres entrées suivent le comportement standard d'App_GKE.

Groupe 8 — Quota de ressources​

VariableValeur par défautDescription
enable_resource_quotafalseApplique un ResourceQuota à l'espace de noms.
quota_cpu_requests / quota_cpu_limits(définies)Quota de CPU pour l'espace de noms.
quota_memory_requests / quota_memory_limits(définies)Doivent utiliser des suffixes d'unité binaires (4Gi, 8192Mi) — les entiers nus sont interprétés comme des octets.

Toutes les autres entrées suivent le comportement standard d'App_GKE.

Groupe 9 — Règles de fiabilité​

VariableValeur par défautDescription
enable_pod_disruption_budgetfalseÀ activer pour protéger la disponibilité lors des mises à niveau des nœuds.
pdb_min_available1Nombre minimal de pods disponibles lors des interruptions volontaires.
enable_topology_spread / topology_spread_strict(définies)Répartit les pods entre zones/nœuds.

Toutes les autres entrées suivent le comportement standard d'App_GKE.

Groupe 10 — Observabilité et santé​

VariableValeur par défautDescription
startup_probe_configHTTP /healthSonde de démarrage. Prévoyez le temps des migrations Alembic du premier démarrage.
health_check_configHTTP /healthSonde de vivacité.
uptime_check_configdésactivé (enabled = false, chemin /)Vérification de disponibilité Cloud Monitoring facultative.
alert_policies[]Règles d'alerte facultatives sur les métriques.

Toutes les autres entrées suivent le comportement standard d'App_GKE.

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

VariableValeur par défautDescription
initialization_jobs[]Laissez vide pour utiliser le job db-init intégré.
cron_jobs[]CronJobs Kubernetes planifiés (aucun n'est requis par LangFlow).
additional_services[]Services sidecar ou auxiliaires déployés aux côtés de LangFlow.

Toutes les autres entrées suivent le comportement standard d'App_GKE.

Groupe 12 — CI/CD et Binary Authorization​

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

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

VariableValeur par défautDescription
enable_nfsfalseNFS est désactivé par défaut ; LangFlow conserve son état dans PostgreSQL.
nfs_mount_path/mnt/nfsChemin de montage dans le conteneur (lorsque NFS est activé).

Toutes les autres entrées suivent le comportement standard d'App_GKE.

Groupe 14 — Cloud Storage et Artifact Registry​

VariableValeur par défautDescription
create_cloud_storagetrueCrée les buckets GCS définis dans storage_buckets.
storage_buckets[{ name_suffix = "data" }]Buckets à provisionner — la valeur par défaut crée un bucket data dédié.
gcs_volumes[]Montages de volumes GCS Fuse via le pilote CSI.
manage_storage_kms_iam / enable_artifact_registry_cmekfalseOptions CMEK.
max_images_to_retain / delete_untagged_images / image_retention_days(définies)Règle de nettoyage d'Artifact Registry.

Toutes les autres entrées suivent le comportement standard d'App_GKE.

Groupe 15 — Cache Redis (facultatif)​

VariableValeur par défautDescription
enable_redisfalseNon utilisé par LangFlow ; câblé uniquement par souci de compatibilité future.
redis_host / redis_port / redis_auth"" / 6379 / ""Paramètres de connexion Redis (uniquement s'il est activé).

Toutes les autres entrées suivent le comportement standard d'App_GKE.

Groupe 16 — Backend de base de données​

VariableValeur par défautDescription
database_typePOSTGRES_15Fixe — LangFlow requiert PostgreSQL 15.
application_database_namelangflowdbNom de la base de données PostgreSQL. Immuable après le premier déploiement.
application_database_userlangflowuserUtilisateur de la base de données applicative. Immuable après le premier déploiement.
database_password_length32Longueur du mot de passe généré.
enable_postgres_extensions / postgres_extensionsdésactivéExtensions Postgres facultatives.
enable_auto_password_rotation / rotation_propagation_delay_secdésactivéRotation du mot de passe de la base de données sans interruption de service.

Toutes les autres entrées suivent le comportement standard d'App_GKE.

Groupe 17 — Sauvegarde et maintenance​

VariableValeur par défautDescription
backup_schedule0 2 * * *Cron des sauvegardes automatiques Cloud SQL (UTC).
backup_retention_days7Durée de conservation ; portez-la à 30–90 pour la production ou la conformité.
enable_backup_import / backup_source / backup_file / backup_formatoptions de restaurationRestaure à partir d'une sauvegarde lors du déploiement.

Toutes les autres entrées suivent le comportement standard d'App_GKE.

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. Consultez App_GKE.

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

VariableValeur par défautDescription
enable_custom_domaintrueProvisionne un Ingress pour des noms d'hôte personnalisés + un certificat géré.
application_domains[]Noms d'hôte à servir.
reserve_static_iptrueIP externe stable d'un redéploiement à l'autre.
network_tags["nfsserver"]Tags réseau des nœuds/pods ; nfsserver est requis lorsque enable_nfs = true.

Toutes les autres entrées suivent le comportement standard d'App_GKE.

Groupe 20 — Identity-Aware Proxy (IAP)​

Avertissement : activer IAP exige une authentification par identité Google pour toutes les requêtes entrantes, y compris les appels à l'API programmatique de LangFlow.

VariableValeur par défautDescription
enable_iapfalseExige une connexion Google devant LangFlow.
iap_authorized_users / iap_authorized_groups[]Personnes autorisées à accéder.
iap_oauth_client_id / iap_oauth_client_secret""Obligatoires lorsque IAP est activé (sensibles).

Toutes les autres entrées suivent le comportement standard d'App_GKE.

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[]CIDR autorisés à disposer d'un accès privilégié.
cloud_armor_policy_namedefault-waf-policyNom de la règle.
enable_cdnfalseActive Cloud CDN sur le backend de l'Ingress GKE.

Toutes les autres entrées suivent le comportement standard d'App_GKE.

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

VariableValeur par défautDescription
enable_vpc_scfalseApplique un périmètre VPC-SC (requiert organization_id).
vpc_cidr_ranges / vpc_sc_dry_run(définies)CIDR du niveau d'accès / mode simulation (dry-run).
enable_audit_loggingfalseJournaux Cloud Audit Logs détaillés.

Toutes les autres entrées suivent le comportement standard d'App_GKE.


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_ipsCorrespondance des ClusterIP des services propres à chaque étape.
service_external_ipIP externe du LoadBalancer (lorsqu'une IP statique est réservée).
service_urlURL permettant d'accéder à LangFlow.
database_instance_nameNom de l'instance Cloud SQL.
database_nameNom de la base de données applicative.
database_userUtilisateur de la base de données applicative.
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 (le bucket data par défaut).
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.
initialization_jobs / db_import_jobNoms des jobs de configuration et d'importation (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 GitHub du CI/CD.
artifact_registry_repository / cloudbuild_trigger_name / cloudbuild_trigger_idRegistre et déclencheur de build.
kubernetes_readyIndique si le cluster et la charge de travail sont prêts.
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).

Validation héritée au moment du plan. Ce module transmet sa configuration au moteur du socle App_GKE, complété d'un garde-fou validation.tf qui vérifie les valeurs et leurs combinaisons au moment du plan — min_instance_count > max_instance_count, Redis activé sans source d'hôte, IAP sans identifiants OAuth, et enable_cloudsql_volume = true avec database_type = "NONE". Une configuration invalide fait échouer le plan avec une erreur claire et nommée avant la création de toute ressource ; la plupart des erreurs ci-dessous sont donc détectées en amont plutôt qu'à l'apply ou à l'exécution.

ParamètreValeur judicieuseRisqueConséquence en cas d'erreur
LANGFLOW_SECRET_KEY (généré automatiquement)Ne jamais le renouveler après le premier démarrageCritiqueSa rotation casse définitivement chaque identifiant stocké intégré dans un flux — ceux-ci ne peuvent plus être déchiffrés et doivent être ressaisis.
application_database_name / application_database_userDéfinir une seule foisCritiqueImmuables après le premier déploiement ; les renommer recrée la base et l'utilisateur et détruit tous les flux et identifiants.
database_typePOSTGRES_15CritiqueLangFlow requiert PostgreSQL 15 ; tout autre moteur empêche le démarrage.
enable_backup_importfalse sauf en cas de restaurationCritiqueL'activer sans source de sauvegarde valide fait échouer le job d'importation.
quota_memory_requests / _limitsunités binaires (4Gi, 8192Mi)CritiqueLes entiers nus sont des octets et bloquent toute planification de pods dans l'espace de noms.
LANGFLOW_SUPERUSER_PASSWORD (généré automatiquement)Le récupérer dans Secret ManagerÉlevéC'est l'identifiant de connexion de l'administrateur ; le perdre signifie qu'il est impossible de se connecter tant qu'il n'est pas réinitialisé.
max_instance_count1ÉlevéLangFlow conserve un état de session et de flux en mémoire de processus ; dépasser 1 répartit l'état entre les pods et provoque un comportement incohérent.
session_affinityClientIPÉlevéSans persistance, les requêtes sont acheminées vers des pods différents, ce qui perturbe l'éditeur de flux en mémoire de processus.
min_instance_count1ÉlevéGKE exige un minimum ≥ 1 ; le garde-fou de validation rejette les valeurs supérieures à max_instance_count.
enable_cloudsql_volumetrueÉlevéLe sidecar Auth Proxy est requis pour la connectivité PostgreSQL ; le désactiver avec une vraie base de données casse toutes les connexions.
container_port7860ÉlevéLangFlow écoute sur 7860 ; un port différent fait échouer toutes les sondes de santé.
enable_iapuniquement lorsque l'authentification de l'API n'est pas nécessaire depuis l'extérieurÉlevéIAP place la connexion Google devant l'ensemble du service, y compris son API programmatique.
container_resources.memory_limit≥ 2GiÉlevéOOMKilled au démarrage confirmé en dessous de 2 GiB — LangFlow charge tous les composants et crée les projets de démarrage avant que le serveur n'écoute ; 1Gi a tué le pod au moment même où il démarrait.
enable_pod_disruption_budgettrueMoyenLe désactiver permet à GKE d'évincer tous les pods simultanément pendant la maintenance.
backup_retention_days7 (à augmenter en production)MoyenTrop court pour une conservation conforme aux exigences réglementaires.

Pour le comportement du socle évoqué tout au long de cette page — IAM et Workload Identity, mise à l'échelle automatique, entrée et certificats, CI/CD, Cloud Armor, IAP, Binary Authorization, VPC-SC, sauvegardes et construction des images — consultez App_GKE. La configuration applicative propre à LangFlow partagée avec la variante Cloud Run est décrite dans LangFlow_Common.

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