Aller au contenu principal

CloudBeaver sur Google Cloud Run

CloudBeaver sur Google Cloud Run

CloudBeaver est un gestionnaire de bases de données web, accessible depuis un navigateur, issu du projet DBeaver — une console d'administration unique pour se connecter à PostgreSQL, MySQL, SQL Server, Oracle, SQLite et de nombreux autres moteurs, et les interroger. Ce module déploie CloudBeaver sur Cloud Run v2 en s'appuyant sur le socle App_CloudRun, qui provisionne et gère l'infrastructure Google Cloud partagée.

Ce guide se concentre sur les services cloud utilisés par CloudBeaver et sur la manière de les explorer et de les exploiter depuis la console Google Cloud et la ligne de commande. Pour les mécanismes communs à toutes les applications Cloud Run — 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.


1. Vue d'ensemble​

CloudBeaver s'exécute sous la forme d'un unique conteneur JVM sur Cloud Run v2. Comme CloudBeaver conserve tout son état dans un espace de travail persistant et ne provisionne aucune base de données applicative, le déploiement assemble un ensemble volontairement restreint de services Google Cloud :

FonctionnalitéService Google CloudRemarques
CalculCloud Run v2Un seul service JVM, 1 vCPU / 1 GiB par défaut, port 8978
Espace de travail persistantCloud Storage (GCS FUSE)Un bucket dédié monté sur /opt/cloudbeaver/workspace contient tout l'état de CloudBeaver
Base de donnéesAucune provisionnéedatabase_type = "NONE" — CloudBeaver stocke son propre état ; il se connecte aux bases de données que vous configurez dans l'interface
Cache et file d'attenteAucunCloudBeaver n'utilise pas Redis ; enable_redis est forcé à désactivé
SecretsSecret ManagerAucun secret applicatif n'est généré — le compte administrateur est créé via l'assistant de configuration au premier lancement
EntréeURL Cloud Run / Cloud Load Balancingall par défaut (Internet public) ; définissez ingress_settings = "internal" pour restreindre l'accès au VPC, ou placez-le derrière un équilibreur de charge HTTPS externe

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

  • Aucune base de données applicative n'est provisionnée. database_type = "NONE". CloudBeaver conserve ses métadonnées dans un magasin H2 intégré à l'intérieur du volume de l'espace de travail. Les bases de données qu'il gère sont ajoutées par un opérateur dans l'interface après le déploiement.
  • Tout l'état réside dans un unique espace de travail adossé à GCS. Le bucket storage est monté via GCS FUSE sur /opt/cloudbeaver/workspace. Si vous perdez ou remplacez ce bucket, vous perdez toutes les connexions, tous les utilisateurs et tous les paramètres enregistrés.
  • Une seule instance par conception. min_instance_count = 1 (évite les démarrages à froid lents de la JVM) et max_instance_count = 1 (l'espace de travail est un magasin à écrivain unique). N'augmentez pas max_instance_count — des écrivains concurrents corrompent la base H2 intégrée.
  • L'entrée vaut all par défaut. Le service est accessible depuis l'Internet public dès l'installation — un point réellement important pour une console d'administration de bases de données. Pour restreindre l'accès à l'intérieur du VPC, définissez ingress_settings = "internal", ou placez-le derrière un équilibreur de charge HTTPS externe (et IAP) pour un accès public contrôlé.
  • Le compte administrateur revient au premier visiteur. CloudBeaver n'a pas d'administrateur préconfiguré — terminez l'assistant de configuration immédiatement dès que le service est accessible.
  • application_version = "latest" est transmis sans problème. L'image est construite à partir de dbeaver/cloudbeaver:<version> via un ARG de build propre à l'application, CLOUDBEAVER_VERSION ; épinglez un tag précis pour des déploiements reproductibles.

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

CloudBeaver s'exécute en tant que service Cloud Run v2 écoutant sur le port 8978. 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. Comme l'espace de travail est à écrivain unique, maintenez le service à une seule instance.

  • Console : Cloud Run → sélectionnez le service pour voir 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"
    # Confirm the container port and image:
    gcloud run services describe <service-name> --project "$PROJECT" --region "$REGION" \
    --format='value(spec.template.spec.containers[0].ports[0].containerPort, spec.template.spec.containers[0].image)'

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

B. Cloud Storage — le volume de l'espace de travail​

L'intégralité de l'état de CloudBeaver — sa base de métadonnées H2 intégrée, les connexions enregistrées, les utilisateurs et la configuration — persiste sous /opt/cloudbeaver/workspace, qui est un montage GCS FUSE d'un bucket Cloud Storage dédié (le bucket storage déclaré par CloudBeaver_Common). Ce bucket est le cœur durable du déploiement.

  • Console : Cloud Storage → Buckets → le bucket storage de CloudBeaver.
  • CLI :
    gcloud storage buckets list --project "$PROJECT"
    gcloud storage ls gs://<workspace-bucket>/ # bucket name is in the Outputs
    gcloud storage ls -r gs://<workspace-bucket>/ # inspect workspace contents

Consultez App_CloudRun pour GCS FUSE (qui nécessite l'environnement d'exécution gen2) et les options CMEK.

C. Connectivité aux bases de données (aucune instance gérée)​

Ce module ne provisionne aucune instance Cloud SQL — gcloud sql instances list n'en affichera aucune créée par CloudBeaver. CloudBeaver se connecte plutôt aux bases de données que vous enregistrez dans son interface. Pour atteindre le Cloud SQL partagé du déploiement (ou toute base de données privée), le service doit disposer d'une sortie VPC configurée (gérée par le socle) et la cible doit être accessible sur le VPC.

  • CLI (vérifiez que le chemin de sortie existe, puis testez depuis l'intérieur du VPC) :
    gcloud run services describe <service-name> --project "$PROJECT" --region "$REGION" \
    --format='value(spec.template.metadata.annotations)' # VPC connector / egress annotations

D. Secret Manager​

CloudBeaver ne génère aucun secret applicatif — il n'y a ni clé de chiffrement, ni secret JWT, ni mot de passe de base de données à gérer (il n'y a pas de base de données). Le compte administrateur est créé via l'assistant de configuration au premier lancement, et tout l'état réside dans l'espace de travail. Les secrets éventuels du socle suivent le modèle standard.

  • Console : Security → Secret Manager.
  • CLI :
    gcloud secrets list --project "$PROJECT"

E. Réseau et entrée​

Le service utilise par défaut ingress_settings = "all" — il est accessible depuis l'Internet public sur l'URL run.app dès l'installation, un point réellement important pour une console d'administration de bases de données. Dans ce mode, l'output cloudbeaver_url est cette URL publique du service. Pour restreindre l'accès à l'intérieur du VPC, définissez ingress_settings = "internal", ou placez le service derrière un équilibreur de charge HTTPS externe (éventuellement avec un domaine personnalisé, Cloud CDN, Cloud Armor et IAP) pour un accès public contrôlé.

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

Consultez App_CloudRun pour l'équilibrage de charge, les domaines personnalisés et IAP.

F. Cloud Logging et Monitoring​

Les journaux des conteneurs sont envoyés à Cloud Logging ; les métriques Cloud Run sont envoyées à Cloud Monitoring, avec des tests de disponibilité et des règles d'alerte facultatifs (uptime_check_config.enabled vaut par défaut false ; aucun n'est donc créé dès l'installation). Si vous l'activez, notez qu'un test de disponibilité Cloud Monitoring n'est provisionné que lorsque le point de terminaison est accessible publiquement — l'entrée all par défaut rend l'URL run.app éligible ; définir ingress_settings = "internal" supprime le point de terminaison public et, avec lui, la possibilité de provisionner un test de disponibilité.

  • 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 CloudBeaver​

  • Aucune configuration de base de données au premier déploiement. Il n'y a ni job db-init ni base de données applicative. CloudBeaver initialise son propre magasin de métadonnées intégré à l'intérieur de l'espace de travail au premier démarrage.
  • L'état réside entièrement dans le volume de l'espace de travail. La base H2 intégrée, les connexions enregistrées, les utilisateurs gérés et la configuration résident tous sous /opt/cloudbeaver/workspace, adossé au bucket GCS storage. Conservez ce bucket d'un redéploiement à l'autre pour garder tout l'état de CloudBeaver.
  • Assistant de configuration au premier lancement. Au premier accès, CloudBeaver présente un assistant de configuration pour créer la configuration du serveur et le compte administrateur. Il n'y a pas d'administrateur préconfiguré — la première personne qui termine l'assistant devient l'administrateur. Faites-le immédiatement, et gardez l'entrée restreinte tant que ce n'est pas fait.
  • Ajouter des bases de données à gérer. Après vous être connecté en tant qu'administrateur, ajoutez des connexions dans l'interface (New Connection → choisissez le pilote → indiquez l'hôte, le port et les identifiants). Pour atteindre des bases de données privées sur le VPC, assurez-vous que la sortie VPC est configurée (gérée par le socle).
  • Chemin de santé. Les sondes de démarrage et de vivacité ciblent / (l'interface web de CloudBeaver), qui renvoie HTTP 200 une fois que la JVM a fini de démarrer. La sonde de démarrage par défaut prévoit un délai initial de 15 secondes plus une fenêtre de 10 échecs — le démarrage de la JVM de CloudBeaver est rapide mais pas instantané.
  • Mise à l'échelle à écrivain unique. Gardez max_instance_count = 1. Le magasin de l'espace de travail ne peut pas être partagé sans risque par des instances concurrentes.
  • Inspecter la configuration en cours d'exécution :
    gcloud run services describe <service-name> --project "$PROJECT" --region "$REGION" \
    --format='value(spec.template.spec.containers[0].env)'

4. Variables de configuration​

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

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 un accès au projet et les alertes de surveillance.
resource_labels{}Libellés appliqués à toutes les ressources.

Groupe 3 — Identité de l'application​

VariableValeur par défautDescription
application_namecloudbeaverNom de base des ressources. Ne pas modifier après le premier déploiement.
application_display_name(défini)Nom lisible affiché dans la console.
description(défini)Description du service.
application_versionlatestTag de l'image CloudBeaver (construite à partir de dbeaver/cloudbeaver:<version>) ; épinglez-le pour la reproductibilité.

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

VariableValeur par défautDescription
cpu_limit1000mCPU par instance.
memory_limit1GiMémoire par instance. CloudBeaver s'exécute sur la JVM — ne descendez pas en dessous de 512Mi.
min_instance_count1Gardez 1 instance à chaud pour éviter les démarrages à froid lents de la JVM.
max_instance_count1Gardez 1. L'espace de travail est un magasin à écrivain unique ; des instances concurrentes le corrompent.
container_port8978Port de l'interface web de CloudBeaver.

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

VariableValeur par défautDescription
ingress_settingsallInternet public par défaut. Définissez internal pour restreindre une console de bases de données au VPC, ou placez-la derrière un équilibreur de charge HTTPS + IAP pour un accès externe contrôlé.
vpc_egress_setting(défini)Détermine quel trafic sortant passe par le VPC — nécessaire pour atteindre des bases de données privées.
enable_iapfalseExige une connexion Google devant le service (nécessite un équilibreur de charge externe).

Groupe 6 — Variables d'environnement et secrets​

VariableValeur par défautDescription
environment_variables{}Paramètres supplémentaires non secrets transmis au conteneur. CloudBeaver n'en a besoin d'aucun pour le premier démarrage.
secret_environment_variables{}Table variable d'environnement → nom de secret Secret Manager. Aucun secret applicatif n'est généré par défaut.

Groupe 11 — Stockage et système de fichiers​

VariableValeur par défautDescription
create_cloud_storagetrueProvisionne les buckets GCS, y compris le bucket de l'espace de travail CloudBeaver.
storage_buckets[]Buckets GCS supplémentaires au-delà du bucket de l'espace de travail provisionné automatiquement.
enable_nfsfalseNFS est désactivé — l'espace de travail de CloudBeaver se trouve sur GCS, pas sur NFS.
gcs_volumes[]Montages de volumes GCS FUSE supplémentaires (le montage de l'espace de travail est ajouté automatiquement).

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

VariableValeur par défautDescription
initialization_jobs[]Vide — CloudBeaver n'a besoin d'aucun job d'amorçage (pas de base de données applicative).
cron_jobs[]Aucune tâche récurrente planifiée par la plateforme.

Groupe 14 — Observabilité et santé​

VariableValeur par défautDescription
startup_probeHTTP / délai de 15s, 10 échecsSonde de démarrage ciblant l'interface de CloudBeaver.
liveness_probeHTTP / délai de 30sSonde de vivacité ciblant l'interface de CloudBeaver.
uptime_check_config(défini)Test de disponibilité Cloud Monitoring — provisionné uniquement lorsque le point de terminaison est accessible publiquement.

Toutes les autres entrées suivent le comportement standard d'App_CloudRun. Notez que enable_redis est forcé à false et que database_type vaut NONE dans ce module ; ces valeurs ne sont pas destinées à être surchargées.


5. Sorties​

Renvoyées à l'issue 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.
cloudbeaver_urlURL du service pour l'interface web de CloudBeaver (port 8978). URL publique run.app avec la valeur par défaut ingress_settings = "all" ; URL VPC interne lorsqu'elle vaut "internal".
service_locationRégion dans laquelle s'exécute le service.
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é).
storage_bucketsBuckets Cloud Storage créés (y compris le bucket de l'espace de travail).
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 éventuels jobs d'initialisation (vide par défaut).
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 du CI/CD.
artifact_registry_repository / cloudbuild_trigger_name / cloudbuild_trigger_idRegistre et déclencheur de build.
vpc_sc_enabled / vpc_sc_perimeter_name / vpc_sc_dry_run_modeÉtat de VPC-SC.
audit_logging_enabled / artifact_registry_cmek_enabledÉtat 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_CloudRun, qui valide les valeurs et leurs combinaisons au moment du plan — un environnement d'exécution gen1 avec des montages GCS FUSE, IAP sans identités autorisées, une valeur de mémoire hors limites inférieure au plancher de 512Mi de gen2. 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
Bucket storage de l'espace de travailÀ conserver d'un redéploiement à l'autreCritiqueLe bucket contient tout l'état de CloudBeaver (base H2 intégrée, connexions, utilisateurs, configuration). Le supprimer ou le remplacer efface tous les paramètres.
max_instance_count1CritiqueL'espace de travail est à écrivain unique ; deux instances écrivant simultanément dans le magasin H2 intégré le corrompent.
Assistant de configuration au premier lancementÀ terminer immédiatementÉlevéIl n'y a pas d'administrateur préconfiguré — quiconque atteint l'interface en premier peut s'approprier le compte administrateur.
ingress_settingsinternal (ou équilibreur de charge + IAP)ÉlevéVaut all par défaut — une console d'administration de bases de données est accessible depuis l'Internet public dès l'installation, sauf si vous définissez internal ou la placez derrière IAP/Cloud Armor.
memory_limit1Gi (≥ 512Mi)ÉlevéCloudBeaver repose sur la JVM ; une mémoire insuffisante provoque des arrêts pour OOM. gen2 refuse les valeurs inférieures à 512Mi au moment du plan.
min_instance_count1MoyenLa mise à l'échelle à zéro (0) ajoute un délai de démarrage à froid lent de la JVM à la première requête après une période d'inactivité.
application_versionÉpingler un tag en productionMoyenlatest peut faire changer la version de CloudBeaver d'un build à l'autre ; épinglez-le pour la reproductibilité.
enable_redis / database_typeLaisser tels quels (désactivé / NONE)FaibleCloudBeaver n'utilise ni l'un ni l'autre ; les surcharger n'apporte rien et n'est pas pris en charge ici.

Pour le comportement du socle mentionné 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 à CloudBeaver, partagée avec la variante GKE, est décrite dans CloudBeaver_Common.

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