make targets run from modules/gcp/. Run make help for an inline summary.
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.
To keep the Helm release under Terraform instead of the deploy script, use the app layer:
app layer uses its own variable names: sizing (not sizing_profile) and enable_agent_deploys (not enable_deployments).
Day-2 operations
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
insights_encryption_keyorpolly_encryption_keypermanently breaks existing encrypted data. - Roll the frontend after first Polly enable.
agentBootstrapcreates thelangsmith-polly-configConfigMap after registering; frontend pods started earlier do not pick it up. - 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. langsmith-ksaannotation is not permanent. The operator creates the ServiceAccount at runtime and it does not survive namespace deletion.deploy.shre-annotates it idempotently.
Teardown
Connect these docs to Claude, VSCode, and more via MCP for real-time answers.

