Skip to main content

GCP Deployment Prerequisites

Use this page as a deploy readiness checklist before running helm upgrade on bighammer.

For provisioning methods, Terraform/Bicep modules, and reference values from your IaC repository, see Infrastructure.

GCP foundation (must exist)

ResourcePurpose
GKERun platform and AI Agent workloads
Cloud SQL (PostgreSQL)Application and Keycloak data
Secret ManagerPasswords, TLS, app secrets
Cloud DNSResolve ingress hostnames
GCSSchemas and artifacts
Artifact RegistryContainer images
Workload Identity SAsESO + application pod access to GCP APIs

Minimum configuration

AreaRequirement
GKESTABLE release channel; Workload Identity enabled; on-demand node pool ≥ e2-standard-2; GCS FUSE CSI driver enabled
Cloud SQLPostgreSQL 16; tier ≥ db-custom-2-3840; private IP; SSL client certs required
Databasesbighammer_db_<env> (application) and keycloak_db_<env> (Keycloak server)
DB userspostgres, bh_dev_user, bh_app_user, keycloak_db_user — names must match chart defaults
DB passwords in GSMReference Terraform pushes bh-app-user-password, bh-dev-user-password, db-postgres-password, bh-kcdbpwd
DNSPublic or private zone per company policy; A/CNAME records for all global.ingress.*HostName values
Helm coupling

The chart expects a dual-role database model on the application database (e.g. bighammer_db_<env>):

  • POSTGRES_USER / POSTGRES_PASSWORDbh_dev_user — Alembic migrations, create/alter/drop tables
  • BH_APP_USER / BH_APP_USER_PASSWORDbh_app_user — runtime API and worker traffic (DML only)

See Scripts Reference — dual-role services and Secret Manager Secrets.

Keycloak server database — platform provisioning

The Keycloak server (bhkeycloak) uses a separate database and user provisioned by your platform tooling (Terraform, console, or automation) — not bighammer_db_setup.sql:

ResourceReference nameChart
Databasekeycloak_db_<env>global.bhkeycloak.env.KC_DB_URL
Userkeycloak_db_userglobal.bhkeycloak.env.KC_DB_USERNAME
Password (GSM)bh-kcdbpwdglobal.remoteSecrets.keycloak.dbPasswordKC_DB_PASSWORD

If you rename these during provisioning, update all chart touchpoints — Renaming databases or users.

Shared VPC firewall (host project)

If GKE uses Shared VPC, allow on the host project (target: GKE node service account):

PortPurpose
TCP 10256Load balancer health checks
TCP 80, 443HTTPS ingress traffic

Cluster add-ons (install before platform chart)

Add-onRequiredHelm chart [BigHammer tested versions]
External Secrets OperatorYesexternal-secrets-0.18.2
ingress-nginx or Gateway APIYes (pick one)Helm chart 4.15.1 (controller v1.15.1) or Envoy Gateway
RabbitMQ (separate Helm release)Yesbhrabbitmq (ECR OCI) or existing broker
Stakater ReloaderRecommendedreloader-1.1.0
Cert ManagerOnly for TLS Option Acert-manager-v1.19.2

IAM (minimum roles)

PrincipalRole
ESO GCP service accountroles/secretmanager.secretAccessor
App Workload Identity SAroles/secretmanager.secretAccessor (or scoped equivalent)
GKE node service accountroles/artifactregistry.reader
CI/CD service accountroles/artifactregistry.writer; roles/dns.admin if using DNS-01 TLS

Service account names and WI bindings: Workload Identity · full IAM in Infrastructure.

Tools

ToolVersion
gcloudLatest stable
kubectlMatches cluster version
helm3.10+
psqlFor database bootstrap SQL

Optional platform services

Not required for the core Helm chart, but used in the reference GCP environment:

ServicePurpose
Cloud ComposerAirflow orchestration
DataprocSpark jobs from Composer
Vertex AIChat LLMs (Claude, Gemini) for bhaiagent — see Vertex AI (LLM)

Details: Infrastructure · Architecture.

Next steps

  1. Provision foundation — Infrastructure
  2. Mirror entitled artifacts — Release Manifest & Distribution
  3. Prepare the cluster — Cluster preparation
  4. Deploy chart — Platform Deployment · Deployment Checklist