Skip to main content
Command cheat sheet for day-to-day operations against an Azure LangSmith deployment provisioned with the Azure Terraform modules. All make targets run from modules/azure/. Run make help for an inline summary. For the full deployment walkthrough, see the Azure deployment guide.

Deployment overview

First-time setup

Or, after make init, run the rest of steps 4 through 8 in one shot:

Day-2 operations

Add-ons

Add-ons are controlled by flags in infra/terraform.tfvars. Set the flags, then re-run make init-values && make deploy. enable_fleet and enable_smithdb also create Terraform resources, so run make apply first. init-values.sh writes the matching overlay into helm/values/ automatically.
The LangSmith Deployment add-on requires default_node_pool_min_count = 5 first. Operator-spawned pods need node headroom; without it, agent pods stay in Pending indefinitely.

Sizing profiles

Set sizing_profile in terraform.tfvars, then re-run make init-values && make deploy.

kubectl

Azure CLI

Terraform

Run Terraform through make from modules/azure/. ARGS is appended to the Terraform command, so you do not need -chdir.

Key constraints

  • make apply runs three targeted stages (Azure infrastructure, Kubernetes bootstrap, then everything else), and each stage prompts for confirmation. ARGS="-auto-approve" skips all three prompts.
  • Uninstall Helm before terraform destroy. The Azure Load Balancer holds a subnet reference; leaving it blocks VNet deletion. Run make uninstall first.
  • config.deployment.url must include https://. Without it, operator-spawned agents stay stuck in DEPLOYING.
  • config.deployment.enabled: true is required for the LangSmith Deployment add-on. Setting only the URL without enabled: true silently skips listener and operator.
  • Encryption keys must never change after first enable. Rotating insights_encryption_key or polly_encryption_key permanently breaks existing encrypted data.
  • Roll the frontend after first Polly enable. The langsmith-polly-config ConfigMap appears after Polly registers; frontend pods started earlier do not pick it up.
  • letsencrypt (HTTP-01) only works with nginx, istio (self-managed), and envoy-gateway. For istio-addon or agic, use dns01 with a custom domain, existing with your own certificate, or none for HTTP-only.
  • Set aks_private_cluster_enabled, aks_private_dns_zone_id, and aks_control_plane_identity before the first apply. Plan refuses a change to any of them on an existing cluster.
  • v0.17.* module tags deploy only the chart 0.17 line, and v0.16.* tags deploy only 0.16. On a v0.16.* tag, enable_smithdb = true requires the 0.17 line, so set langsmith_helm_chart_version = "~0.17.0" with it. A deployment that has run chart 0.17 cannot return to 0.16.
  • Enable enable_sso_oidc only after you have logged in as the org admin with basic auth. The flag disables basic auth.
  • Key Vault enters 90-day soft-delete after destroy. With keyvault_purge_protection = false, run az keyvault purge to reclaim the name immediately.

Teardown

make destroy-force and make clean-force run the same steps without the confirmation prompt.
make clean-force also answers the prompt that guards a state file which still tracks resources, and then deletes terraform.tfstate. With the default local backend, that file is the only state, so running it before make destroy succeeds orphans the Azure resources. Run make clean-force only after a successful make destroy.