Aller au contenu principal

RAGFlow sur Google Cloud Run

RAGFlow sur Google Cloud Run

RAGFlow est une plateforme open source d'intelligence documentaire et de génération augmentée par récupération (RAG, Retrieval-Augmented Generation). Elle ingère des PDF, des documents Word, des pages HTML et d'autres formats, les découpe et les vectorise, stocke les vecteurs dans Elasticsearch, expose une API REST de questions-réponses et fournit une interface web pour la gestion des bases de connaissances et la recherche d'entreprise. Ce module déploie RAGFlow sur Cloud Run v2 au-dessus du socle App_CloudRun, qui provisionne et gère l'infrastructure Google Cloud partagée.

Ce guide se concentre sur les services cloud qu'utilise 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 à toute application Cloud Run — identité du service, entrée et équilibrage de charge, mise à l'échelle et concurrence, 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.

Prérequis de déploiement : RAGFlow_CloudRun exige que Elasticsearch_GKE soit déployé au préalable. La variable elasticsearch_hosts doit être définie lorsque deploy_application = true — le plan est rejeté si elle est vide.


1. Vue d'ensemble​

RAGFlow s'exécute comme un service Python/Nginx conteneurisé sur Cloud Run v2. Le déploiement assemble un ensemble ciblé de services Google Cloud :

FonctionnalitéService Google CloudRemarques
CalculCloud Run v2Service RAGFlow construit sur mesure, 2 vCPU / 4 GiB par défaut, démarrage à froid (min_instance_count = 0) par défaut
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 au préalable ; elasticsearch_hosts est obligatoire
File de tâchesRedis (Memorystore)Obligatoire pour les workers de traitement des documents
Stockage objetCloud StorageUn bucket ragflow-documents dédié
SecretsSecret ManagerMot de passe de base de données généré automatiquement
EntréeURL Cloud Run / Cloud Load BalancingURL run.app par défaut ; équilibreur de charge HTTPS avec Cloud Armor + domaine personnalisé facultatifs

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

  • MySQL 8.0 est obligatoire. Sélectionner PostgreSQL ou NONE empêche le démarrage.
  • elasticsearch_hosts est obligatoire. RAGFlow ne peut ni indexer ni rechercher de documents sans point de terminaison Elasticsearch joignable. Cette vérification n'est ignorée que lorsque deploy_application = false.
  • Redis est obligatoire pour le traitement des documents. Avec enable_redis = true (valeur par défaut), REDIS_HOST et REDIS_PORT sont injectés automatiquement. Si redis_host est laissé vide, App_CloudRun se rabat sur l'IP du serveur NFS (la VM NFS héberge aussi Redis) — même comportement que la variante GKE. Sans Redis joignable, les fichiers téléversés restent indéfiniment non traités.
  • Démarrage à froid par défaut. min_instance_count = 0 et cpu_always_allocated = false (facturation à la requête) — le service passe à zéro instance en cas d'inactivité et ne facture le CPU que pendant le traitement d'une requête. Compromis : l'exécuteur de tâches documentaires en arrière-plan s'arrête en cas d'inactivité, de sorte que l'ingestion et l'analyse des documents nouvellement téléversés ne s'exécutent pas en arrière-plan ; les requêtes et le chat fonctionnent toujours à la demande. Définissez cpu_always_allocated = true et min_instance_count >= 1 pour rétablir l'ingestion continue en arrière-plan (et éviter le démarrage à froid de 2 à 3 minutes pendant le chargement des modèles d'embedding).
  • L'environnement d'exécution Gen2 est obligatoire pour NFS. execution_environment = "gen2" est la valeur par défaut ; passer à gen1 avec enable_nfs = true échoue au moment du plan.
  • 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. Un pont socat adapte le socket Unix du Cloud SQL Auth Proxy au port TCP qu'attend le client MySQL de RAGFlow.

2. Services Google Cloud et comment les explorer​

Toutes les commandes supposent que PROJECT et REGION sont définis. Les noms du service et des ressources sont indiqués dans les sorties du déploiement.

A. Cloud Run — le service RAGFlow​

RAGFlow s'exécute comme un service Cloud Run v2. Par défaut, il passe à zéro instance en cas d'inactivité (min_instance_count = 0, cpu_always_allocated = false) ; modifiez ces deux valeurs pour garder une instance active et éviter les délais de démarrage à froid pendant le chargement des modèles d'embedding. Chaque déploiement crée une révision immuable ; le trafic peut être réparti entre les révisions pour des déploiements progressifs sûrs.

  • Console : Cloud Run → sélectionnez le service pour consulter les révisions, le 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"

Consultez App_CloudRun pour la mise à l'échelle, la concurrence, l'environnement d'exécution et la répartition du trafic.

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. Le service s'y connecte de manière privée via le sidecar Cloud SQL Auth Proxy, par un socket Unix. Un pont socat dans le conteneur fait correspondre ce socket à 127.0.0.1:3306 pour le client MySQL TCP de RAGFlow. Au 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 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"
    gcloud sql connect <instance-name> --user=<db-user> --project "$PROJECT"

Le nom de l'instance, la base de données, l'utilisateur et le secret du mot de passe figurent dans les sorties. Consultez App_CloudRun pour le modèle de connexion, les sauvegardes et la rotation des mots de passe.

RAGFlow exige une instance Elasticsearch externe pour l'indexation des documents et la recherche vectorielle. Déployez Elasticsearch_GKE séparément et transmettez son output elasticsearch_endpoint comme elasticsearch_hosts. Les variables d'environnement ELASTICSEARCH_HOSTS et ELASTICSEARCH_USERNAME sont injectées automatiquement. Un Elasticsearch inline n'est pas pris en charge sur Cloud Run.

  • Console : Kubernetes Engine → Workloads → espace de noms Elasticsearch.
  • CLI :
    # Confirm RAGFlow can reach Elasticsearch (from Cloud Shell or a VPC-connected host):
    curl -s "$ELASTICSEARCH_HOSTS/_cluster/health" | grep status

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 récupérer les tâches ; sans lui, les fichiers téléversés ne sont jamais analysés, découpés ni vectorisés. L'instance Memorystore Redis est accessible via le VPC grâce au paramètre de sortie VPC PRIVATE_RANGES_ONLY (valeur par défaut).

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

E. Cloud Storage​

Un bucket Cloud Storage dédié (ragflow-documents) est provisionné pour l'ingestion et le stockage des documents. Des buckets supplémentaires et des montages de volumes GCS Fuse peuvent être ajoutés via storage_buckets et gcs_volumes. Le compte de service de la charge de travail y reçoit automatiquement l'accès.

  • Console : Cloud Storage → Buckets.
  • CLI :
    gcloud storage buckets list --project "$PROJECT"
    gcloud storage ls gs://<documents-bucket>/ # bucket name is in the Outputs

Consultez App_CloudRun pour GCS Fuse et les options CMEK.

F. Secret Manager​

Le mot de passe de la base de données est stocké dans Secret Manager et injecté dans le service à 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"

Consultez App_CloudRun pour les détails d'injection et de rotation.

G. Réseau et entrée​

Le service est joignable par défaut à son URL run.app. Un équilibreur de charge HTTPS externe avec le WAF Cloud Armor, un domaine personnalisé et Cloud CDN peut être ajouté. La sortie VPC est définie par défaut sur PRIVATE_RANGES_ONLY, de sorte que le trafic Redis et MySQL transite par le VPC privé tandis que la sortie publique reste sans restriction.

  • Console : Cloud Run (URL du service) ; Network services → Load balancing.
  • CLI :
    gcloud run services describe <service-name> --region "$REGION" --format='value(status.url)'
    gcloud compute addresses list --project "$PROJECT"

Consultez App_CloudRun.

H. Cloud Logging et Monitoring​

Les journaux des conteneurs sont envoyés vers Cloud Logging ; les métriques Cloud Run et Cloud SQL, vers Cloud Monitoring, avec des tests de disponibilité et des règles d'alerte facultatifs.

  • Console : Logging → Logs Explorer ; Monitoring → Dashboards / Alerting.
  • CLI :
    gcloud run services logs read <service-name> --project "$PROJECT" --region "$REGION" --limit 50

3. Comportement de l'application RAGFlow​

  • Initialisation de la base de données au premier déploiement. Un Cloud Run Job d'initialisation (mysql:8.0-debian) crée la base de données RAGFlow (rag_flow) et l'utilisateur (ragflow) avant le démarrage du service. 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 de données MySQL, le point de terminaison Elasticsearch, l'hôte et le port Redis, ainsi que des identifiants facultatifs — avant de lancer les processus RAGFlow. Un pont socat adapte le socket Unix du Cloud SQL Auth Proxy à 127.0.0.1:3306 pour le client MySQL de RAGFlow.

  • Pipeline de traitement des documents. Les documents téléversés sont mis en file d'attente dans Redis et traités de manière asynchrone par les workers documentaires 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/system/version avec un délai initial de 120 secondes et 30 tentatives en cas d'échec. Définissez min_instance_count >= 1 avec cpu_always_allocated = true pour éviter les démarrages à froid et maintenir le traitement des documents en arrière-plan en continu.

  • Points de terminaison de santé. Les sondes de démarrage et de vivacité utilisent /v1/system/version. Le test de disponibilité (s'il est activé) cible /v1/health. Ces points de terminaison ne renvoient HTTP 200 que lorsque l'application est entièrement initialisée.

    Inspecter les exécutions de jobs :

    gcloud run jobs list --project "$PROJECT" --region "$REGION"
    gcloud run jobs executions list --job <job-name> --project "$PROJECT" --region "$REGION"

4. Variables de configuration​

Les variables sont regroupées exactement comme elles apparaissent 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 de App_CloudRun avec leur comportement standard.

Groupe 1 — Projet et identité​

VariableValeur par défautDescription
project_id(obligatoire)Projet Google Cloud cible.
regionus-central1Région du service et des ressources régionales.
elasticsearch_hosts(obligatoire)Point de terminaison HTTP d'Elasticsearch (p. ex. http://10.0.0.5:9200). À définir sur l'output 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 bénéficiant d'un accès au projet et des alertes de surveillance.
resource_labels{}Libellés appliqués à toutes les ressources.

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.
display_nameRAGFlowNom convivial affiché dans la console.
description(défini)Description du service.
application_versionv0.13.0Tag de version de l'image RAGFlow, transmis comme APP_VERSION à Cloud Build ; 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 ne provisionner que l'infrastructure.
cpu_limit2000mCPU par instance ; 4 vCPU ou plus recommandés pour le traitement des documents en production.
memory_limit4GiMémoire par instance ; 8 à 16 GiB recommandés en production.
cpu_always_allocatedfalseValeur par défaut privilégiant le coût, avec démarrage à froid. true rétablit le traitement continu des documents en arrière-plan entre les requêtes.
min_instance_count0Passe à zéro instance en cas d'inactivité. Définissez ≥ 1 (avec cpu_always_allocated = true) pour garder l'exécuteur de tâches en arrière-plan et les modèles d'embedding actifs.
max_instance_count1Nombre maximal d'instances ; augmentez-le avec prudence (nécessite NFS pour le stockage partagé).
container_port80Le frontend Nginx de RAGFlow écoute sur le port 80.
execution_environmentgen2Doit rester gen2 — obligatoire pour les montages NFS.
timeout_seconds600Augmentez-le pour les requêtes de traitement de documents volumineux (max. 3600).
enable_cloudsql_volumetrueSidecar Cloud SQL Auth Proxy pour les connexions par socket.
traffic_split[]Répartit le trafic entre les révisions pour des déploiements progressifs.

Groupe 5 — Contrôle d'accès et d'entrée​

VariableValeur par défautDescription
ingress_settingsallRéseaux autorisés à joindre le service (all, internal, internal-and-cloud-load-balancing).
vpc_egress_settingPRIVATE_RANGES_ONLYAchemine le trafic privé RFC-1918 (Redis, MySQL) via le VPC.
enable_iapfalseExige une connexion Google via Identity-Aware Proxy.
iap_authorized_users / iap_authorized_groups[]Qui peut accéder via IAP.

Groupe 6 — Variables d'environnement et secrets​

VariableValeur par défautDescription
environment_variables{}Paramètres non secrets supplémentaires. Ne surchargez pas MYSQL_*, ELASTICSEARCH_* ni REDIS_* — ces variables sont injectées automatiquement.
secret_environment_variables{}Correspondance variable d'environnement → nom de secret Secret Manager.
secret_propagation_delay / secret_rotation_period(défini)Attente de réplication / cadence de rotation.

Groupe 7 — Sauvegarde et restauration​

VariableValeur par défautDescription
backup_schedule0 2 * * *Cron de sauvegarde automatique (UTC).
backup_retention_days7Rétention ; augmentez-la pour la production ou la conformité.
enable_backup_import / backup_source / backup_uri / backup_formatoptions de restaurationRestaure une sauvegarde lors du déploiement.

Groupe 8 — CI/CD et Binary Authorization​

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

Groupe 9 — 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_CloudRun.

Groupe 10 — Cloud Armor, CDN et domaine personnalisé​

VariableValeur par défautDescription
enable_cloud_armorfalseAssocie une règle WAF Cloud Armor via un équilibreur de charge HTTPS global.
admin_ip_ranges[]CIDR bénéficiant d'un accès privilégié.
application_domains[]Noms d'hôte personnalisés pour l'équilibreur de charge HTTPS.
enable_cdnfalseActive Cloud CDN sur le backend de l'équilibreur.

Groupe 11 — Stockage et système de fichiers​

VariableValeur par défautDescription
create_cloud_storagetrueProvisionne des buckets GCS supplémentaires. Le bucket ragflow-documents est toujours créé.
storage_buckets[{ name_suffix="data" }]Configurations de buckets GCS supplémentaires.
enable_nfstrueVolume Filestore partagé. Obligatoire pour les déploiements multi-instances et lorsque redis_host est vide (l'IP du serveur NFS sert alors d'hôte Redis de repli).
nfs_mount_path/mnt/nfsChemin de montage dans le conteneur.
gcs_volumes[]Volumes GCS Fuse montés dans le conteneur RAGFlow.
manage_storage_kms_iam / enable_artifact_registry_cmekfalseOptions CMEK.

Groupe 12 — Backend de base de données​

VariableValeur par défautDescription
database_typeMYSQL_8_0Fixe — ne pas modifier.
db_namerag_flowNom de la base de données. Immuable après le premier déploiement.
db_userragflowUtilisateur applicatif. Immuable après le premier déploiement.
database_password_length32Longueur du mot de passe généré (16–64).
enable_auto_password_rotation / rotation_propagation_delay_secdésactivéeRotation du mot de passe de la base de données.
db_host_env_var_name / db_name_env_var_name / db_user_env_var_name / db_port_env_var_name / service_url_env_var_name""Noms de variables d'environnement supplémentaires sous lesquels les détails de connexion sont injectés.

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

VariableValeur par défautDescription
initialization_jobs[]Laissez vide pour utiliser le Cloud Run Job db-init intégré.
cron_jobs[]Cloud Run Jobs planifiés récurrents.

Groupe 14 — Observabilité et santé​

VariableValeur par défautDescription
startup_probeHTTP /v1/system/version, délai de 120s, 30 tentativesLaisse amplement le temps de charger les modèles d'embedding au premier démarrage.
liveness_probeHTTP /v1/system/version, délai de 120sSonde de vivacité une fois le démarrage réussi.
uptime_check_configdésactivéTest de disponibilité Cloud Monitoring.
alert_policies[]Règles d'alerte sur les métriques.

Groupe 15 — Elasticsearch et Redis​

VariableValeur par défautDescription
enable_redistrueUtilise Redis pour la file de tâches de traitement des documents. Transmise de manière inconditionnelle à App_CloudRun — Redis est câblé que redis_host soit défini ou laissé vide.
redis_host""Point de terminaison Redis. S'il est laissé vide, App_CloudRun injecte REDIS_HOST = <NFS server IP> comme repli (comportement identique à la variante GKE, puisque la VM NFS héberge aussi Redis). Définissez-le explicitement pour pointer vers une autre instance Redis (p. ex. 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.

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

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

5. Sorties​

Renvoyés lors d'un déploiement réussi — 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 run.app par défaut du service.
service_locationRégion dans laquelle le service s'exécute.
stage_servicesDétails des services propres à chaque étape (Cloud Deploy).
load_balancer_ip / load_balancer_urlIP / URL de l'équilibreur de charge HTTPS externe (lorsqu'il est activé).
database_instance_nameNom de l'instance Cloud SQL.
database_name / database_userNom / utilisateur 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 / port de la base de données.
storage_bucketsBuckets Cloud Storage créés.
network_name / network_exists / regionsRéseau VPC, présence, régions.
container_image / container_registryImage déployée et dépôt Artifact Registry.
monitoring_enabled / monitoring_notification_channels / uptime_check_namesÉtat de la surveillance, canaux, 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 / github_repository_url / github_repository_owner / github_repository_name / cicd_configurationÉtat et détails 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 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 / interruption / 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é si la valeur est vide et que deploy_application = true.
enable_redistrueCritiqueSans Redis, la file de 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 relié en TCP par socat ; désactiver le sidecar du proxy provoque un échec de connexion à la base de données au démarrage.
db_name / db_userà définir 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.
redis_hostlaisser vide pour utiliser le repli Redis du serveur NFS, ou définir une IP Memorystore expliciteÉlevéLorsque redis_host = "" et enable_redis = true, App_CloudRun injecte REDIS_HOST = <NFS server IP> (exige enable_nfs = true, la valeur par défaut) — comme la variante GKE. Si NFS est désactivé et que redis_host est laissé vide, aucun hôte Redis n'est injecté et les workers documentaires asynchrones ne s'exécutent jamais, sans aucun message.
min_instance_count / cpu_always_allocated1 / true pour une ingestion continueÉlevéLes valeurs par défaut sont 0 / false (démarrage à froid) : le traitement des documents en arrière-plan s'arrête en cas d'inactivité et les démarrages à froid prennent 2 à 3 minutes. Définissez les deux pour une ingestion permanente.
memory_limit4Gi (≥ 8Gi en production)ÉlevéLes modèles d'embedding et le serveur applicatif exigent beaucoup de RAM ; une valeur trop faible provoque des arrêts pour manque de mémoire (OOM).
vpc_egress_settingPRIVATE_RANGES_ONLYÉlevéMemorystore Redis utilise une IP VPC privée ; un mauvais routage de sortie casse la file de tâches.
execution_environmentgen2ÉlevéLes montages NFS exigent gen2 ; passer à gen1 avec enable_nfs = true échoue au moment du plan.
elasticsearch_username"" ou l'utilisateur correctÉlevéSi la sécurité Elasticsearch est activée, laisser ce champ vide provoque des erreurs HTTP 401 et casse toute l'indexation.
enable_nfstrueÉlevéLes déploiements multi-instances sans stockage partagé présentent des vues incohérentes des documents d'une instance à l'autre.
ingress_settings / enable_iapà restreindre en productionÉlevéUne entrée publique sans IAP expose RAGFlow à des appelants non authentifiés.
max_instance_count1 (à augmenter uniquement avec NFS)MoyenDépasser 1 sans NFS provoque un accès aux documents en « split-brain » entre les instances.
timeout_seconds600MoyenLe téléversement de documents volumineux peut prendre plusieurs minutes ; une valeur trop courte provoque des erreurs 504 avant la fin du traitement.
backup_retention_days7 (à augmenter en production)MoyenTrop court pour une rétention de conformité.
application_versionv0.13.0MoyenL'incrémenter déclenche une reconstruction de l'image et le déploiement d'une nouvelle révision ; vérifiez la compatibilité du schéma MySQL lors des changements de version majeure.

Pour le comportement du socle évoqué tout au long de ce guide — identité du service, mise à l'échelle et concurrence, entrée et équilibrage de charge, CI/CD, Cloud Armor, IAP, Binary Authorization, VPC-SC, sauvegardes et mise en miroir des images — consultez App_CloudRun. La configuration applicative propre à RAGFlow, partagée avec la variante GKE, 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.