Skip to main content

GCP Troubleshooting

Quick checks for common deployment issues. Gateway-specific guidance: bh-gateway and Gateway API Deployment.

External Secrets

kubectl describe secretstore gcp-secret-store -n bh-control-plane
kubectl get externalsecret -n bh-control-plane
kubectl logs -n external-secrets-system -l app.kubernetes.io/name=external-secrets
IssueFix
WI auth failureVerify Terraform wif_service_accounts applied; K8s SA annotation
Secret not foundGSM name must match global.remoteSecrets
Stale secretESO refreshInterval; delete K8s secret to force resync

Cloud SQL

Full bootstrap and schema permission guide: Database Bootstrap Troubleshooting.

SymptomCauseFix
password authentication failed for bh_app_userbh-app-user-password ≠ Cloud SQL bh_app_user passwordAlign GSM secret with Cloud SQL user
permission denied for schema / Alembic failsBootstrap not run, wrong schema owner, or wrong POSTGRES_USERRun bighammer_db_setup.sql before deploy; use bh_dev_user + bh-dev-user-passwordDatabase Bootstrap Troubleshooting
password authentication failed for bh_dev_userPOSTGRES_PASSWORD mapped to wrong GSM secretSet global.remoteSecrets.postgres.passwordbh-dev-user-password
Keycloak DB auth failureKC_DB_URL / KC_DB_USERNAME mismatch or wrong bh-kcdbpwdDatabase keycloak_db_<env>, user keycloak_db_user, GSM bh-kcdbpwd
SSL verify / IP mismatchPrivate IP + cert verifyUse postgresSSLMode: require
Keycloak Invalid lenByteDER key corrupted in GSMRe-upload binary DER for db-client-private-key-der

Test connectivity:

Use your environment connectivity test script (for example a `psql` or Cloud SQL Auth Proxy smoke test).

Ingress / load balancer

SymptomFix
LB 0% healthyHost VPC firewall TCP 10256 (and 80/443) to node SA
No EXTERNAL-IPWait for GKE LB provisioning; check Service events
502 from nginxCheck backend pods; Keycloak logs for DB/TLS errors
kubectl describe ingress bh-ingress -n bh-control-plane
kubectl get svc -n ingress-nginx

Gateway API

SymptomFix
Gateway not ProgrammedEnvoy controller running; check kubectl describe gateway bh-gateway
HTTPRoute not attachedAdd namespace to referenceGrants.routeNamespaces in bh-gateway values
Wrong health check portUse externalTrafficPolicy: Cluster; port 10256
kubectl get gateway,httproute -A
kubectl get pods -n envoy-gateway-system

TLS

SymptomFix
cert-manager challenge pendingDNS admin on cert-manager SA; Cloud DNS zone correct — Cert troubleshooting
Ingress TLS missingK8s secret global.ingress.tlsSecretName exists with tls.crt / tls.key
Gateway HTTPS errorbh-gateway: gateway.listeners.https.tlsSecretName + tlsSecretNamespaceTLS Options
Private cert not appliedUpload to GSM keys in global.remoteSecrets.tls; recreate K8s TLS secret
PushSecret / GSM syncCert troubleshooting — PushSecret

Images / registry

SymptomFix
ImagePullBackOffTag exists in GAR/ECR; node SA has artifactregistry.reader
Wrong imageCheck global.image.repository and tag in values

Helm

helm dependency build .
helm lint . -f values.yaml -f values-dev.yaml
IssueFix
Nil pointer in templatesEnable subchart in values (global.<svc>.enabled: true)
CRD conflicts (gateway)Install gateway-crds once; use --skip-crds on bighammer

Support escalation

Include: chart version, values overlay (redacted), kubectl get pods,externalsecret,ingress,httproute -n bh-control-plane, and relevant pod logs.

TopicLink
Database bootstrapDatabase Bootstrap Troubleshooting
Secret mappingSecret Manager Secrets
Azure equivalentAzure Troubleshooting