Files
langgraph/docs/docs/cloud/deployment/self_hosted_control_plane.md
T
Andrew NguonlyandGitHub 3878addbe0 docs: Refactor content for new LangGraph Platform deployment options (#4118)
### 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.
2025-04-02 06:51:14 -07:00

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

  1. You are using Kubernetes.

  2. You have self-hosted LangSmith deployed.

  3. Use the LangGraph CLI to test your application locally.

  4. 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.

  5. KEDA is installed on your cluster.

      helm repo add kedacore https://kedacore.github.io/charts 
      helm install keda kedacore/keda --namespace keda --create-namespace
    
  6. Ingress Configuration (recommended)

    1. Install Ingress Nginx to 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
      
    2. Provision a root domain that will suffix all domains for your workloads (e.g. us.langgraph.app).

    3. Provision wildcard certificates to terminate TLS for your deployments.

    4. Note: If this step is skipped, you will need to provision domains/certs for each of your deployments.

  7. You have slack space in your cluster for multiple deployments. Cluster-Autoscaler is recommended to automatically provision new nodes.

Setup

  1. As part of configuring your Self-Hosted LangSmith instance, you enable the langgraphPlatform option. This will provision a few key resources.

    1. listener: This is a service that listens to the control plane for changes to your deployments and creates/updates downstream CRDs.
    2. LangGraphPlatform CRD: A CRD for LangGraph Platform deployments. This contains the spec for managing an instance of a LangGraph platform deployment.
    3. operator: This operator handles changes to your LangGraph Platform CRDs.
    4. host-backend: This is the control plane.
  2. 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"
    
  3. In your values.yaml file, enable the langgraphPlatform option.

     config:
       langgraphPlatform:
         enabled: true
         langgraphPlatformLicenseKey: "YOUR_LANGGRAPH_PLATFORM_LICENSE_KEY"
         rootDomain: "YOUR_ROOT_DOMAIN"
    
  4. You can also configure base templates for your agents by overriding the base templates here.

  5. You create a deployment from the Control Plane UI.