Skip to main content

Platform GCP Deployment

Deploy the BigHammer umbrella chart (bighammer) on GKE. This page covers values preparation and Helm install — the final step after infrastructure, database bootstrap, secrets, and cluster add-ons are ready.

Before you start​

Complete these steps before running helm upgrade:

StepActionDoc
0GKE, Cloud SQL, platform GSM passwords, DNSInfrastructure
1Application DB schemas and grantsScripts Reference — bighammer_db_setup.sql
2Verify GSM + create one-time secretsSecret Manager Secrets · Scripts Reference — bh_gsm_onetime_setup.sh
3ESO, edge, RabbitMQ, TLSCluster preparation

Also confirm Prerequisites and mirror entitled artifacts per Release Manifest & Distribution.

End-to-end journey​

StepActionDoc
0GKE, Cloud SQL, provision platform GSM passwords (Terraform, console, or automation), DNSInfrastructure
1Application DB schemas and grantsScripts Reference — bighammer_db_setup.sql
2Verify GSM + create one-time secretsSecret Manager Secrets · Scripts Reference — bh_gsm_onetime_setup.sh
3ESO, edge, RabbitMQ, TLSCluster preparation
4Mirror chart, prepare values, Helm install (this page)—

If pods fail with permission denied for schema, see Database bootstrap troubleshooting.

Mirror chart and prepare values​

Pull the chart from your mirrored registry after Release Manifest & Distribution:

helm registry login <region>-docker.pkg.dev \
--username oauth2accesstoken \
--password "$(gcloud auth print-access-token)"

helm pull oci://<region>-docker.pkg.dev/<project>/bh-helm-release/bighammer \
--version <CHART_VERSION>

tar -xzf bighammer-<CHART_VERSION>.tgz
cp bighammer/values.yaml values.yaml
cp bighammer/values-release.yaml values-<env>.yaml # edit all placeholders
# Bootstrap scripts: bighammer/scripts/bighammer_db_setup.sql, bh_gsm_onetime_setup.sh

Values files​

FileUse
values.yamlChart defaults, global.remoteSecrets, service toggles
values-release.yamlSample customer overlay in the chart (placeholder project, hostnames, IPs — reference and CI only)
values-<env>.yamlYour per-environment overlay (copy from values-release.yaml)
Do not deploy values-release.yaml as-is

values-release.yaml uses fictional placeholders (customer-sample-gcp-project, sample.example.com, 10.255.0.10). Copy it to values-<env>.yaml in your deploy repo and replace every sample value.

Required global settings​

PathExample (replace with yours)
secretStore.projectId<your-gcp-project>
secretStore.gcpServiceAccountexternal-secrets-operator@<project>.iam.gserviceaccount.com
gcpProject / gcpRegion<project>, us-central1
image.repositoryus-docker.pkg.dev/<project>/bh-docker-public/bh-docker-public/
postgresSSLModerequire or verify-ca (match your Cloud SQL SSL setup)
ingress.*HostName or gateway.routes.*.hostnameYour DNS names
dev.enabledfalse for production overlays (bh-gcp-sa-key only when true)

Database and Secret Manager mapping​

Application database (dual-role)​

global:
remoteSecrets:
postgres:
password: bh-dev-user-password # POSTGRES_PASSWORD → bh_dev_user
app:
userPassword: bh-app-user-password # BH_APP_USER_PASSWORD → bh_app_user

bhcatalogapi:
env:
POSTGRES_HOST: "10.x.x.x" # Cloud SQL private IP
POSTGRES_USER: bh_dev_user
POSTGRES_DB: <your_app_database>
BH_APP_USER: bh_app_user
DB_SCHEMA: catalog_db

Repeat POSTGRES_USER / BH_APP_USER for every service that runs migrations — see Secret Manager Secrets — dual-role.

Keycloak server (separate database)​

global:
bhkeycloak:
env:
KC_DB_USERNAME: keycloak_db_user
KC_DB_URL: jdbc:postgresql://10.x.x.x:5432/<keycloak_db>?ssl=true&sslmode=verify-ca&...
# KC_DB_PASSWORD from ExternalSecret → bh-kcdbpwd

Full GSM mapping: Secret Manager Secrets.

Confirm cluster add-ons​

Before Helm install, verify:

  • Cloud SQL reachable from GKE; bighammer_db_setup.sql applied as postgres
  • Platform GSM secrets exist (bh-dev-user-password, bh-app-user-password, db-postgres-password, bh-kcdbpwd)
  • bh_gsm_onetime_setup.sh completed (one-time app secrets created)
  • ESO running; SecretStore can reach GSM
  • Edge controller installed (nginx or Gateway stack)
  • RabbitMQ broker deployed
  • TLS secret available (TLS Options)
  • Redis deployed separately if using AI agent cache (Prerequisites — optional services)

Full checklist: Deployment Checklist.

Deploy​

helm registry login <region>-docker.pkg.dev \
--username oauth2accesstoken \
--password "$(gcloud auth print-access-token)"

# Gateway API mode (recommended)
helm upgrade --install bighammer \
oci://<region>-docker.pkg.dev/<project>/bh-helm-release/bighammer \
--version <CHART_VERSION> \
-f values.yaml \
-f values-<env>.yaml \
--set global.gateway.enabled=true \
--set global.ingress.enabled=false \
-n bh-control-plane \
--create-namespace \
--timeout 10m

# NGINX Ingress mode
helm upgrade --install bighammer \
oci://<region>-docker.pkg.dev/<project>/bh-helm-release/bighammer \
--version <CHART_VERSION> \
-f values.yaml \
-f values-<env>.yaml \
--set global.ingress.enabled=true \
--set global.gateway.enabled=false \
-n bh-control-plane \
--create-namespace \
--timeout 10m

Edge mode can also be set in values-<env>.yaml instead of --set. See:

ModeSet in valuesDoc
Gateway APIglobal.gateway.enabled: true, global.ingress.enabled: falseGateway API
NGINX Ingressglobal.ingress.enabled: true, global.gateway.enabled: falseNGINX Ingress

Upgrade​

When a new chart version is released:

  1. Review Helm Chart Release Notes and mirror the new manifest.
  2. Update <CHART_VERSION> in your deploy command or values pin.
  3. Re-run helm upgrade --install with the same values files.
  4. Watch externalsecret status and pod restarts; allow time for Alembic migrations on startup.

Post-deploy verification​

kubectl get pods,externalsecret -n bh-control-plane
kubectl get ingress -n bh-control-plane # nginx mode
kubectl get httproute -n bh-control-plane # gateway mode

Verify ExternalSecrets are SecretSynced and application pods are Running. Complete Deployment Checklist post-deploy items.

If schema permission errors appear, see Troubleshooting database bootstrap.

What the chart deploys​

TypeComponents
Webbhui, bhadminui
APIsbhcatalogapi, bhauditapi, bhaiagent, bhkeycloakapi, bhtransformationutils
Identitybhkeycloak
Workersbhcatalogworker, bhauditworker, bhaiagentworker, bhcelerybeat
PlatformSecretStore, ESO service account, ExternalSecrets

Not included — install separately: ESO, edge (nginx or Gateway), RabbitMQ broker, Redis.

TopicLink
GSM names and scriptSecret Manager Secrets
DB bootstrap SQLScripts Reference
Pre-install checklistDeployment Checklist
Schema / grant errorsTroubleshooting database bootstrap