Aller au contenu principal

RAGFlow sur GKE Autopilot

RAGFlow sur GKE Autopilot

RAGFlow est une plateforme open source d'intelligence documentaire et de génération augmentée par récupération (Retrieval-Augmented Generation, RAG). Elle ingère des PDF, des documents Word, des pages HTML et d'autres formats, les découpe en fragments et les vectorise, stocke les vecteurs dans Elasticsearch, expose une API REST de questions-réponses et fournit une interface web de gestion des bases de connaissances et de recherche d'entreprise. Ce module déploie RAGFlow 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 RAGFlow 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.

Prérequis de déploiement : RAGFlow_GKE nécessite que Elasticsearch_GKE soit déployé en premier. La variable elasticsearch_hosts est obligatoire — le plan est rejeté si elle est vide lorsque deploy_application = true.


1. Vue d'ensemble​

RAGFlow s'exécute comme une charge de travail web Python/Nginx conteneurisée. Le déploiement assemble un ensemble ciblé de services Google Cloud :

FonctionnalitéService Google CloudRemarques
CalculGKE AutopilotPods RAGFlow construits sur mesure, 4 vCPU / 8 GiB par défaut, mise à l'échelle automatique horizontale
Base de donnéesCloud SQL for MySQL 8.0Obligatoire — RAGFlow ne prend pas en charge PostgreSQL
Recherche vectorielleElasticsearch (Elasticsearch_GKE)Dépendance externe — doit être déployée en premier ; elasticsearch_hosts est obligatoire
File de tâchesRedis (Memorystore)Requis pour les workers de traitement des documents
Fichiers partagésFilestore (NFS)Activé par défaut pour le stockage partagé du traitement des documents
Stockage d'objetsCloud StorageUn bucket ragflow-documents dédié
SecretsSecret ManagerMot de passe de la base de données généré automatiquement
EntréeCloud Load BalancingService LoadBalancer externe ; domaine personnalisé + certificat géré en option

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

  • MySQL 8.0 est obligatoire. Le moteur de base de données est imposé ; choisir PostgreSQL ou NONE empêche le démarrage.
  • elasticsearch_hosts est requis. RAGFlow ne peut ni indexer ni rechercher des documents sans point de terminaison Elasticsearch joignable. Déployez d'abord Elasticsearch_GKE.
  • Redis est requis pour le traitement des documents. Avec enable_redis = true (la valeur par défaut), REDIS_HOST et REDIS_PORT sont injectés automatiquement. Sans Redis, les fichiers téléversés restent indéfiniment non traités.
  • La mise à l'échelle à zéro est désactivée. min_instance_count est plafonné à 1. RAGFlow charge les modèles d'embedding au démarrage (2 à 3 minutes) ; une mise à l'échelle à zéro provoquerait l'expiration des requêtes.
  • Une image personnalisée est toujours construite. Cloud Build étend infiniflow/ragflow à l'aide du Dockerfile de RAGFlow_Common/scripts/, avec APP_VERSION défini à partir de application_version.
  • service_conf.yaml est généré au démarrage. Le point d'entrée personnalisé écrit /ragflow/conf/service_conf.yaml à partir des variables d'environnement injectées avant de lancer les processus RAGFlow.
  • L'affinité de session est ClientIP. Cela garantit que les sessions de téléversement et les requêtes de traitement de documents en plusieurs étapes atteignent toujours le même pod.
  • enable_custom_domain vaut true par défaut. Le service passe ainsi par l'équilibreur de charge Gateway API, qui — combiné à la valeur par défaut reserve_static_ip = true — provisionne un certificat géré et HTTPS dès l'installation via un nom d'hôte <ip>.nip.io, même lorsque application_domains est laissé vide. Renseignez application_domains pour servir un vrai nom d'hôte.
  • Le mot de passe de la base de données est généré automatiquement et stocké dans Secret Manager.

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 RAGFlow​

Les pods RAGFlow sont planifiés sur Autopilot, qui facture le CPU et la mémoire effectivement 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 RAGFlow 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 MySQL 8.0​

RAGFlow stocke toutes les métadonnées de l'application (comptes utilisateur, bases de connaissances, état des tâches) dans une instance gérée Cloud SQL for MySQL 8.0. Les pods y accèdent de manière privée via le sidecar Cloud SQL Auth Proxy sur un socket Unix, si bien qu'aucune IP publique n'est exposée. Lors du premier déploiement, un Job d'initialisation crée la base de données et l'utilisateur de l'application.

  • 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 automatiques et la rotation du mot de passe, consultez App_GKE.

RAGFlow nécessite une instance Elasticsearch externe pour l'indexation des documents et la recherche vectorielle. Elle n'est pas incluse dans ce module — déployez Elasticsearch_GKE séparément et transmettez sa sortie elasticsearch_endpoint comme elasticsearch_hosts. Les variables d'environnement ELASTICSEARCH_HOSTS et ELASTICSEARCH_USERNAME sont injectées automatiquement.

  • Console : Kubernetes Engine → Workloads → espace de noms Elasticsearch.
  • CLI :
    # Confirm RAGFlow can reach Elasticsearch:
    kubectl exec -n "$NAMESPACE" deploy/<service-name> -- \
    curl -s "$ELASTICSEARCH_HOSTS/_cluster/health" | grep status
    # Check connectivity from within the cluster:
    kubectl run -it --rm curl --image=curlimages/curl --restart=Never -- \
    curl -s "http://<elasticsearch-ip>:9200/_cluster/health"

D. Redis — file de tâches​

Redis est la colonne vertébrale du pipeline de traitement des documents de RAGFlow. Les workers interrogent Redis pour obtenir des tâches ; sans lui, les fichiers téléversés ne sont jamais analysés, découpés ni vectorisés.

  • Console : Memorystore → Redis (si vous utilisez une instance gérée).
  • CLI :
    redis-cli -h <redis-host> ping        # from a host with network access
    redis-cli -h <redis-host> info keyspace

E. Filestore (NFS) et Cloud Storage​

Par défaut, RAGFlow monte un partage Filestore (NFS) dans chaque pod pour le stockage partagé du traitement des documents. Un bucket Cloud Storage dédié (ragflow-documents) est également provisionné pour l'ingestion des documents ; le compte de service de la charge de travail y reçoit automatiquement l'accès. Des volumes GCS Fuse supplémentaires peuvent être montés via gcs_volumes.

  • Console : Filestore → Instances ; Cloud Storage → Buckets.
  • CLI :
    gcloud filestore instances list --project "$PROJECT"
    gcloud storage buckets list --project "$PROJECT"
    gcloud storage ls gs://<documents-bucket>/ # bucket name is in the Outputs
    # Confirm the NFS share is mounted inside a pod:
    kubectl exec -n "$NAMESPACE" deploy/<service-name> -- df -h | grep -i nfs

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

F. Secret Manager​

Le mot de passe de la base de données est stocké en tant que 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=<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.

G. Réseau et entrée​

enable_custom_domain vaut true par défaut, ce qui fait passer la charge de travail par l'équilibreur de charge Gateway API avec un certificat géré par Google — servant automatiquement HTTPS sur un nom d'hôte <ip>.nip.io lorsque application_domains est vide. Renseignez application_domains pour servir un vrai nom d'hôte personnalisé. 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 domaines personnalisés, Cloud CDN et les détails de l'IP statique.

H. Cloud Logging et Monitoring​

Les sorties stdout/stderr des pods sont envoyées vers Cloud Logging ; les métriques GKE et Cloud SQL vers Cloud Monitoring. Des tests de disponibilité et des règles d'alerte facultatifs 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 RAGFlow​

  • Configuration de la base de données au premier déploiement. Un Job d'initialisation (mysql:8.0-debian) crée la base de données RAGFlow (rag_flow) et l'utilisateur (ragflow), puis accorde les privilèges avant le démarrage de l'application. Il est idempotent et peut être relancé sans risque.
  • service_conf.yaml généré au démarrage. Le point d'entrée personnalisé génère /ragflow/conf/service_conf.yaml à partir des variables d'environnement injectées — notamment l'hôte, l'utilisateur et la base MySQL, le point de terminaison Elasticsearch, l'hôte et le port Redis, ainsi que des identifiants facultatifs — avant de lancer les processus RAGFlow (Nginx, serveur RAGFlow, workers de tâches).
  • Pipeline de traitement des documents. Les documents téléversés sont mis en file d'attente dans Redis et traités de façon asynchrone par les workers de documents de RAGFlow : OCR, découpage, vectorisation et indexation dans Elasticsearch. Sans Redis ni Elasticsearch joignables, les fichiers semblent téléversés mais ne sont jamais traités.
  • Chargement des modèles d'embedding au démarrage. RAGFlow télécharge et charge les modèles d'embedding lors du premier démarrage. La sonde de démarrage cible /v1/health avec un délai initial de 120 secondes et 60 tentatives en cas d'échec afin de laisser largement le temps nécessaire. La sonde de vivacité passe à /v1/health une fois le démarrage réussi.
  • Points de terminaison de santé. Les sondes de disponibilité (readiness) et de vivacité utilisent /v1/health et /v1/system/version. Ils ne renvoient HTTP 200 que lorsque l'application est entièrement initialisée et que tous les services sont joignables.
  • Affinité de session. session_affinity = "ClientIP" achemine les requêtes d'un navigateur vers le même pod, ce qui garantit la cohérence des sessions de téléversement et des workflows de documents en cours.

4. Variables de configuration​

Les variables sont regroupées exactement comme sur la plateforme de déploiement. Seuls les paramètres propres à RAGFlow 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.
elasticsearch_hosts(obligatoire)Point de terminaison HTTP Elasticsearch (par ex. http://10.0.0.5:9200). À définir avec la sortie elasticsearch_endpoint de Elasticsearch_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 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_nameragflowNom de base des ressources. Ne le modifiez pas après le premier déploiement.
application_display_nameRAGFlowNom convivial affiché dans la console.
application_description / description(défini)Annotation de description de la charge de travail.
application_versionv0.13.0Tag de version de l'image RAGFlow transmis à Cloud Build sous APP_VERSION ; incrémentez-le pour déployer une nouvelle version.

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

VariableValeur par défautDescription
deploy_applicationtrueDéfinissez false pour provisionner uniquement l'infrastructure.
cpu_limit4000mCPU par pod ; 4 vCPU recommandés pour les charges d'analyse de documents.
memory_limit8GiMémoire par pod ; 8 GiB recommandés (les modèles d'embedding sont volumineux).
min_instance_count1Nombre minimal de réplicas. Plafonné à 1 — la mise à l'échelle à zéro n'est pas prise en charge.
max_instance_count5Nombre maximal de réplicas (plafond de l'autoscaler).
container_port80Le frontal Nginx de RAGFlow écoute sur le port 80.
enable_cloudsql_volumetrueSidecar Cloud SQL Auth Proxy pour les connexions par socket.
termination_grace_period_seconds60À augmenter pour les jobs de traitement de documents en cours.
deployment_timeout1800Secondes pendant lesquelles Terraform attend le déploiement progressif — valeur généreuse pour tenir compte du chargement des modèles.
enable_vertical_pod_autoscalingfalseLaisse Autopilot ajuster automatiquement les demandes de ressources.

Groupe 5 — Variables d'environnement et secrets​

VariableValeur par défautDescription
environment_variables{}Paramètres non secrets supplémentaires. Ne remplacez pas MYSQL_*, ELASTICSEARCH_* ni REDIS_* — ils sont injectés automatiquement.
secret_environment_variables{}Table de correspondance variable d'environnement → nom du secret Secret Manager.

Groupe 6 — Backend GKE et cluster​

VariableValeur par défautDescription
service_typeLoadBalancerMode d'exposition du Service.
session_affinityClientIPRoutage persistant — requis pour la cohérence des sessions de téléversement et du traitement des documents.
workload_typenullSe résout automatiquement en StatefulSet lorsque le stockage par pod est activé.
network_tags["nfsserver"]Tags de nœud/pod ; nfsserver est requis pour la connectivité NFS.

Groupe 7 — Configuration du StatefulSet​

Ces paramètres ne s'appliquent que lorsque workload_type = "StatefulSet" ou stateful_pvc_enabled = true.

VariableValeur par défautDescription
stateful_pvc_enablednullProvisionne un PVC pour le stockage local des modèles. Recommandé en production.
stateful_pvc_size10GiTaille du PVC ; prévoyez au moins 50 GiB pour les charges documentaires de production.
stateful_pvc_mount_path/dataChemin de montage du PVC dans le conteneur.
stateful_pvc_storage_classstandard-rwoStorageClass Kubernetes des PVC.
stateful_fs_group0GID fsGroup propriétaire du PVC ; à définir si le processus du conteneur nécessite un GID précis.

Groupe 8 — Quota de ressources​

VariableValeur par défautDescription
enable_resource_quotafalsePlafonne le CPU, la mémoire et le nombre d'objets de l'espace de noms.
quota_memory_requests / quota_memory_limits""Utilisez obligatoirement des unités binaires (8Gi, 16384Mi) — les entiers nus sont interprétés comme des octets et bloquent la planification.

Groupe 9 — Règles de fiabilité​

VariableValeur par défautDescription
enable_pod_disruption_budgettrueProtège la disponibilité pendant les mises à niveau des nœuds.
pdb_min_available1Augmentez min_instance_count au-delà de 1 si vous avez besoin d'une marge pour les évictions.
enable_topology_spreadfalseRépartit les pods entre les zones.

Groupe 10 — Observabilité et santé​

VariableValeur par défautDescription
startup_probe / startup_probe_config/v1/health, délai de 120s, 60 tentativesSonde HTTP laissant largement le temps de charger les modèles d'embedding.
liveness_probe / health_check_config/v1/healthSonde de vivacité HTTP une fois le démarrage réussi.
uptime_check_config{ enabled=false, path="/v1/health" }Test de disponibilité Cloud Monitoring facultatif ; désactivé par défaut.
alert_policies[]Règles d'alerte sur métriques facultatives.

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

VariableValeur par défautDescription
initialization_jobs[]Laissez vide pour utiliser le job intégré db-init.
cron_jobs[]Tâches planifiées récurrentes déployées comme CronJobs Kubernetes.
additional_services[]Deployments Kubernetes complémentaires supplémentaires (par ex. Elasticsearch intégré pour le développement).

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

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.

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

VariableValeur par défautDescription
enable_nfstrueVolume Filestore partagé pour le stockage du traitement des documents (à garder activé en multi-réplicas).
nfs_mount_path/mnt/nfsChemin de montage dans le conteneur.
nfs_instance_name""Nom d'une VM GCE NFS existante ; découverte automatiquement si vide.

Groupe 14 — Cloud Storage et Artifact Registry​

VariableValeur par défautDescription
create_cloud_storagetrueProvisionne le bucket GCS des documents.
storage_buckets[{ name_suffix="data" }]Buckets GCS supplémentaires en plus de ragflow-documents.
gcs_volumes[]Volumes GCS Fuse montés dans le conteneur RAGFlow.
manage_storage_kms_iam / enable_artifact_registry_cmekfalseOptions de chiffrement CMEK.
max_images_to_retain7Nombre maximal d'images récentes à conserver dans Artifact Registry.

Groupe 15 — Elasticsearch et Redis​

VariableValeur par défautDescription
enable_redistrueUtilise Redis pour la file de tâches du traitement des documents.
redis_host""Hôte Redis. S'il est vide et que NFS est activé, l'IP du serveur NFS est utilisée. À définir explicitement pour Memorystore.
redis_port6379Port Redis.
redis_auth""Mot de passe d'authentification Redis facultatif (sensible).
elasticsearch_username""Nom d'utilisateur Elasticsearch. Laissez vide lorsque xpack.security.enabled = false.
enable_inline_elasticsearchfalseDéploie un sidecar Elasticsearch à nœud unique. Développement uniquement — les données sont perdues au redémarrage du pod.
elasticsearch_version8.13.0Tag d'image Elasticsearch pour l'instance intégrée.

Groupe 16 — Backend de base de données​

VariableValeur par défautDescription
database_typeMYSQL_8_0Imposé — ne pas modifier.
db_namerag_flowNom de la base de données. Immuable après le premier déploiement.
db_userragflowUtilisateur de l'application. Immuable 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.

Groupe 17 — Sauvegarde et maintenance​

VariableValeur par défautDescription
backup_schedule0 2 * * *Cron des sauvegardes automatiques (UTC).
backup_retention_days7Durée de conservation ; 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.

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 les 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 GCP appliqués aux pods.

Groupe 20 — Identity-Aware Proxy (IAP)​

VariableValeur par défautDescription
enable_iapfalseExige une connexion Google devant RAGFlow.
iap_authorized_users / iap_authorized_groups[]Personnes autorisées à accéder.
iap_oauth_client_id / iap_oauth_client_secret""Requis lorsque IAP est activé (sensibles).
iap_support_email""Affiché sur l'écran de consentement OAuth.

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éfini)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 lors 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_ipsTable des ClusterIP des services propres à chaque étape (Cloud Deploy).
service_external_ipIP externe du LoadBalancer (lorsqu'une IP statique est réservée).
service_urlURL d'accès à RAGFlow.
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.
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 de la CI/CD.
github_repository_url / github_repository_owner / github_repository_nameDétails du dépôt connecté.
artifact_registry_repository / cloudbuild_trigger_name / cloudbuild_trigger_idRegistre et déclencheur de build.
kubernetes_readyIndique si le cluster ou la charge de travail est prêt. false lors du premier apply d'un nouveau cluster intégré — le pipeline CI/CD doit relancer l'apply pour terminer le déploiement.
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
elasticsearch_hostsobligatoire — à définir depuis Elasticsearch_GKECritiqueRAGFlow ne peut ni indexer ni rechercher ; toutes les opérations d'ingestion et de récupération échouent. Le plan est rejeté s'il est vide et que deploy_application = true.
enable_redistrueCritiqueSans Redis, la file de tâches du traitement des documents ne s'exécute jamais ; les fichiers téléversés restent indéfiniment non traités.
database_typeMYSQL_8_0CritiqueRAGFlow exige MySQL ; PostgreSQL/NONE empêche le démarrage.
enable_cloudsql_volumetrueCritiqueRAGFlow se connecte via un socket Unix ; désactiver le sidecar proxy provoque un échec de connexion à la base de données au démarrage.
db_name / db_userdéfinis une seule foisCritiqueImmuables après le premier déploiement ; les renommer recrée la base de données ou l'utilisateur et détruit les données.
enable_backup_importfalse sauf en cas de restaurationCritiqueL'activer sans backup_uri valide fait échouer le job d'import.
quota_memory_requests / _limitsunités binairesCritiqueLes entiers nus sont des octets et bloquent toute planification.
redis_hostIP Memorystore explicite ou "" (repli sur NFS)ÉlevéUn hôte Redis injoignable ou erroné interrompt silencieusement tous les workers de documents asynchrones.
min_instance_count1Élevé0 entraîne une mise à l'échelle à zéro ; les démarrages à froid prennent 2 à 3 minutes et les requêtes expirent.
memory_limit8GiÉlevéLes modèles d'embedding et le serveur d'application nécessitent généralement 4 à 8 GiB ; une valeur trop faible provoque des arrêts OOM pendant le traitement des documents.
stateful_pvc_enabledtrue en productionÉlevéSans PVC, les redémarrages de pods font perdre tout l'état du traitement en cours.
session_affinityClientIPÉlevéSans routage persistant, les sessions de téléversement en multi-réplicas peuvent être réparties entre plusieurs pods.
elasticsearch_username"" ou utilisateur correctÉlevéSi la sécurité d'Elasticsearch est activée, laisser ce champ vide provoque des erreurs HTTP 401 et interrompt toute l'indexation.
enable_nfstrueÉlevéLes déploiements multi-réplicas sans stockage partagé présentent des vues incohérentes des documents d'un pod à l'autre.
enable_iap / enable_cloud_armorà activer en productionMoyenSinon, l'interface web de RAGFlow est accessible publiquement.
backup_retention_days7 (à augmenter en production)MoyenTrop court pour les exigences de conservation liées à la conformité.
pdb_min_available vs min_instance_countlaisser de la margeMoyen1/1 peut bloquer les mises à niveau des nœuds (le pod unique ne peut pas être évincé).
application_versionv0.13.0MoyenL'incrémenter déclenche une reconstruction de l'image et un redémarrage progressif ; vérifiez la compatibilité du schéma MySQL lors des sauts de version majeure.

Pour le comportement du socle évoqué tout au long de ce guide — IAM et Workload Identity, mise à l'échelle automatique, entrée 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 à RAGFlow partagée avec la variante Cloud Run est décrite dans RAGFlow_Common.

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