make targets run from modules/gcp/. Run make help for an inline summary. Commands reflect the main branch and v0.17.x tags, which deploy Helm chart 0.17. The smithdb-* targets do not exist on v0.16.x tags.
Deployment overview
Each stage builds on the previous. Verify pods are healthy before enabling the next.
First-time setup
make deploy-all chains apply, init-values, and deploy in one command. Run make init-values and make deploy from the shell where you sourced setup-env.sh; the deploy script reads the TF_VAR_* secrets and LANGSMITH_ADMIN_EMAIL from it.
Day-2 operations
make kubeconfig wraps helm/scripts/get-kubeconfig.sh. To call the script directly, pass the cluster name, region, and project as arguments, or omit them to read the Terraform outputs.
make smithdb-configure and make smithdb-phase only edit terraform.tfvars, and make deploy-all applies the change. A size change can replace the SmithDB node pools. Leaving the backfill phase removes the backfill Job and its task database; make smithdb-phase PHASE=cutover refuses until every backfill row is promoted, but an earlier phase has no such check.
For the SmithDB rollout stages, see SmithDB in the deployment guide.
Add-ons
Set flags interraform.tfvars, then make init-values && make deploy. init-values.sh copies the matching example file into helm/values/ automatically.
init-values.sh, copy manually:
Sizing profiles
Setsizing_profile in terraform.tfvars, then re-run make init-values && make deploy.
kubectl
gcloud
Terraform
Key constraints
- Uninstall Helm before
terraform destroy. The Envoy Gateway load balancer references the VPC; leaving it blocks network deletion. Always runmake uninstallfirst. config.deployment.urlmust includehttps://. Without the protocol, operator-spawned agents stay stuck inDEPLOYING.config.deployment.enabled: trueis required for the LangSmith Deployment add-on. Setting only the URL withoutenabled: truesilently skipslistenerandoperator.- Encryption keys must never change after first enable. Rotating
langsmith_insights_encryption_keyorlangsmith_polly_encryption_keypermanently breaks existing encrypted data. - Envoy Gateway IP changes on teardown. GCP releases the external IP when the Gateway is deleted. After
terraform destroyand re-apply, update your DNS A record. - Upgrading from chart 0.16 has gates.
deploy.shrefuses the upgrade whilevalues-overrides.yamlstill has asandboxes.juicefs.csiblock, while JuiceFS CSI volumes or mount pods remain, or whilehelm/values/still has the chart 0.16 SmithDB overlay. Each refusal prints the commands that clear it. For the full procedure, see Upgrade from chart 0.16. langsmith-ksaannotation is not permanent. Terraform creates the ServiceAccount in thek8s-bootstrapmodule, outside the Helm release, so it does not survive namespace deletion.deploy.shre-creates and re-annotates it idempotently.
Teardown
make destroy, even when protection is already off. Drop the module.smithdb target if you never enabled SmithDB. To also delete the persistent disks of in-cluster databases, run DELETE_DATA_PVCS=true make uninstall in step 2.
Connect these docs to your agent of choice via MCP for real-time answers.

