### Summary This is a large refactor of the content for the LangGraph Platform deployment options. Although there are a lot of changes, I do feel fairly confident that this is safe to merge and won't have any negative impact related to confusion around deployment options. However, please review thoroughly (i.e. run the docs locally). ### Goals and Non-Goals Just wanted to explicitly state goals and non-goals so that we're clear about what needs to be done now versus what can be done in a smaller follow-up PR. Goals 1. Add new content for the new deployment options (Self-Hosted Data Plane, Self-Hosted Control Plane). 1. Hide old content for deprecated deployment options (BYOC). 1. Create a pair of "conceptual" and "how-to" pages for each deployment option. As much as possible, the pages should have consistent headings. 1. Introduce the terms "control plane" and "data plane" and define them plainly without hiding/abstracting information. Non-Goals 1. Do not change the navigation of the existing deployment options. As much as possible, update content in-place or add new pages. Changing the navigation is a bigger task that can be done later. 1. Do not remove old content for deprecated deployment options. We may need to refer to this later. There are only ~2 pages (I think). ### Next Steps 1. Update the architecture diagrams for each deployment option. Commit Excalidraw file to source control. 1. Create a "how-to" page for the Control Plane UI. This page pertains to 3/4 deployment options. Most of the content lives in the "how-to" page for Cloud SaaS deployment. 1. Document required RBAC permissions for K8s for Self-Hosted Data Plane and Self-Hosted Control Plane (and update links). 1. Figure out how to consolidate plan information. 1. Figure out where to document licensing, telemetry, custom Postgres/Redis. 1. Update autoscaling content.
3.0 KiB
How to Deploy Self-Hosted Control Plane
Before deploying, review the conceptual guide for the Self-Hosted Control Plane deployment option.
Prerequisites
-
You are using Kubernetes.
-
You have self-hosted LangSmith deployed.
-
Use the LangGraph CLI to test your application locally.
-
Use the LangGraph CLI to build a Docker image (i.e.
langgraph build) and push it to a registry your Kubernetes cluster has access to. -
KEDAis installed on your cluster.helm repo add kedacore https://kedacore.github.io/charts helm install keda kedacore/keda --namespace keda --create-namespace -
Ingress Configuration (recommended)
-
Install
Ingress Nginxto serve as a reverse proxy for your deployment.helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx helm repo update helm install ingress-nginx ingress-nginx/ingress-nginx -
Provision a root domain that will suffix all domains for your workloads (e.g.
us.langgraph.app). -
Provision wildcard certificates to terminate TLS for your deployments.
-
Note: If this step is skipped, you will need to provision domains/certs for each of your deployments.
-
-
You have slack space in your cluster for multiple deployments.
Cluster-Autoscaleris recommended to automatically provision new nodes.
Setup
-
As part of configuring your Self-Hosted LangSmith instance, you enable the
langgraphPlatformoption. This will provision a few key resources.listener: This is a service that listens to the control plane for changes to your deployments and creates/updates downstream CRDs.LangGraphPlatform CRD: A CRD for LangGraph Platform deployments. This contains the spec for managing an instance of a LangGraph platform deployment.operator: This operator handles changes to your LangGraph Platform CRDs.host-backend: This is the control plane.
-
Two additional images will be used by the chart.
hostBackendImage: repository: "docker.io/langchain/hosted-langserve-backend" pullPolicy: IfNotPresent tag: "0.9.80" operatorImage: repository: "docker.io/langchain/langgraph-operator" pullPolicy: IfNotPresent tag: "aa9dff4" -
In your
values.yamlfile, enable thelanggraphPlatformoption.config: langgraphPlatform: enabled: true langgraphPlatformLicenseKey: "YOUR_LANGGRAPH_PLATFORM_LICENSE_KEY" rootDomain: "YOUR_ROOT_DOMAIN" -
You can also configure base templates for your agents by overriding the base templates here.
-
You create a deployment from the Control Plane UI.