중요 Hybrid 배포 옵션은 Enterprise 플랜이 필요합니다.
hybrid 모델을 사용하면 data plane—LangGraph Server 배포 및 에이전트 워크로드—을 자체 클라우드에서 실행하면서, LangChain이 control plane (LangSmith UI 및 오케스트레이션)을 호스팅하고 관리합니다. 이 설정은 관리형 LangSmith 인스턴스의 편리함과 함께 런타임 환경을 자체 호스팅할 수 있는 유연성을 제공합니다. 다음 단계는 자체 호스팅 data plane을 관리형 LangSmith control plane에 연결하는 방법을 설명합니다.

사전 요구사항

  1. LangGraph CLI를 사용하여 애플리케이션을 로컬에서 테스트합니다.
  2. LangGraph CLI를 사용하여 Docker 이미지를 빌드하고(예: langgraph build) Kubernetes 클러스터 또는 Amazon ECS 클러스터가 액세스할 수 있는 레지스트리에 푸시합니다.

Kubernetes

사전 요구사항

  1. 클러스터에 KEDA가 설치되어 있어야 합니다.
      helm repo add kedacore https://kedacore.github.io/charts
      helm install keda kedacore/keda --namespace keda --create-namespace
    
  2. 클러스터에 유효한 Ingress 컨트롤러가 설치되어 있어야 합니다. 배포를 위한 ingress 구성에 대한 자세한 내용은 설치를 위한 ingress 생성을 참조하세요.
  3. 여러 배포를 위한 클러스터 여유 공간이 필요합니다. 새 노드를 자동으로 프로비저닝하기 위해 Cluster-Autoscaler를 권장합니다.
  4. 두 개의 control plane URL에 대한 egress를 활성화해야 합니다. listener는 배포를 위해 이러한 엔드포인트를 폴링합니다:

설정

  1. LangSmith 조직 ID를 제공해 주세요. LangSmith 조직이 클라우드에 data plane을 배포하도록 구성됩니다.
  2. LangSmith UI에서 listener를 생성합니다. Listener 데이터 모델은 실제 “listener” 애플리케이션에 대해 구성됩니다.
    1. 왼쪽 탐색 메뉴에서 Deployments > Listeners를 선택합니다.
    2. 페이지 오른쪽 상단에서 + Create Listener를 선택합니다.
    3. listener에 대한 고유한 Compute ID를 입력합니다. Compute ID는 현재 LangSmith 워크스페이스의 모든 listener에서 고유해야 하는 사용자 정의 식별자입니다. Compute ID는 최종 사용자가 새 배포를 생성할 때 표시됩니다. Compute ID가 최종 사용자에게 LangGraph Server 배포가 어디에 배포될지에 대한 컨텍스트를 제공하는지 확인하세요. 예를 들어, Compute IDk8s-cluster-name-dev-01로 설정할 수 있습니다. 이 예에서 Kubernetes 클러스터의 이름은 k8s-cluster-name이고, dev는 클러스터가 “개발” 워크로드용으로 예약되어 있음을 나타내며, 01은 이름 충돌을 줄이기 위한 숫자 접미사입니다.
    4. 하나 이상의 Kubernetes namespace를 입력합니다. 나중에 “listener” 애플리케이션이 이러한 각 namespace에 배포하도록 구성됩니다.
    5. 페이지 오른쪽 상단에서 Submit을 선택합니다.
    6. listener가 생성된 후 listener ID를 복사합니다. Kubernetes 클러스터에 실제 “listener” 애플리케이션을 설치할 때 나중에 사용합니다(5단계).
    중요 LangSmith UI에서 listener를 생성해도 Kubernetes 클러스터에 “listener” 애플리케이션이 설치되지 않습니다.
  3. Kubernetes 클러스터에 필요한 구성 요소를 설치하기 위한 Helm chart가 제공됩니다.
    • langgraph-listener: LangChain의 control plane에서 배포 변경 사항을 수신하고 다운스트림 CRD를 생성/업데이트하는 서비스입니다. 이것이 “listener” 애플리케이션입니다.
    • LangGraphPlatform CRD: LangSmith Deployment를 위한 CRD입니다. LangSmith Deployment 인스턴스를 관리하기 위한 사양이 포함되어 있습니다.
    • langgraph-platform-operator: LangSmith CRD의 변경 사항을 처리하는 operator입니다.
  4. langgraph-dataplane-values.yaml 파일을 구성합니다.
      config:
        langsmithApiKey: "" # API Key of your Workspace
        langsmithWorkspaceId: "" # Workspace ID
        hostBackendUrl: "https://api.host.langchain.com" # Only override this if on EU
        smithBackendUrl: "https://api.smith.langchain.com" # Only override this if on EU
        langgraphListenerId: "" # Listener ID from Step 2f
        watchNamespaces: "" # comma-separated list of Kubernetes namespaces that the listener and operator will deploy to
        enableLGPDeploymentHealthCheck: true # enable/disable health check step for deployments
    
      ingress:
        hostname: "" # specify a hostname that will be configured for all deployments
    
      operator:
        enabled: true # set this to `false` if the operator is already deployed in the current Kubernetes namespace
        createCRDs: true # set this to `false` if the CRD has been previously installed in the current Kubernetes cluster
    
    • config.langsmithApiKey: langgraph-listener 배포는 langsmithApiKey를 사용하여 LangChain의 LangGraph control plane API로 인증합니다.
    • config.langsmithWorkspaceId: langgraph-listener 배포는 LangSmith 워크스페이스의 LangGraph Server 배포와 연결됩니다. 즉, langgraph-listener 배포는 지정된 LangSmith 워크스페이스 ID의 LangGraph Server 배포만 관리할 수 있습니다.
    • config.langgraphListenerId: LangSmith 워크스페이스와 연결되는 것 외에도 langgraph-listener 배포는 listener와도 연결됩니다. 새 LangGraph Server 배포가 생성되면 자동으로 langgraphListenerId와 연결됩니다. langgraphListenerId를 지정하면 langgraph-listener 배포가 langgraphListenerId와 연결된 LangGraph Server 배포만 관리할 수 있습니다.
    • config.watchNamespaces: langgraph-listener 배포가 배포할 Kubernetes namespace의 쉼표로 구분된 목록입니다. 이 목록은 2d 단계에서 지정한 namespace 목록과 일치해야 합니다.
    • config.enableLGPDeploymentHealthCheck: LangGraph Server 상태 확인을 비활성화하려면 이 값을 false로 설정합니다.
    • ingress.hostname: 배포 워크플로의 일부로 langgraph-listener 배포는 LangGraph Server 상태 확인 엔드포인트(GET /ok)를 호출하여 애플리케이션이 올바르게 시작되었는지 확인합니다. 일반적인 설정에는 LangGraph Server 배포를 위한 공유 DNS 레코드 또는 도메인을 생성하는 것이 포함됩니다. 이는 LangSmith에서 관리하지 않습니다. 생성된 후 ingress.hostname을 도메인으로 설정하면 상태 확인을 완료하는 데 사용됩니다.
    • operator.enabled: Kubernetes namespace에는 langgraph-platform-operator의 인스턴스가 하나만 배포될 수 있습니다. 현재 Kubernetes namespace에 이미 langgraph-platform-operator 인스턴스가 배포되어 있는 경우 이 값을 false로 설정합니다.
    • operator.createCRDs: Kubernetes 클러스터에 이미 LangGraphPlatform CRD가 설치되어 있는 경우 이 값을 false로 설정합니다. 설치 중에 CRD가 이미 설치되어 있으면 오류가 발생합니다. 이 상황은 동일한 Kubernetes 클러스터에 여러 listener가 배포된 경우 발생할 수 있습니다.
  5. langgraph-dataplane Helm chart를 배포합니다.
      helm repo add langchain https://github.com/langchain-ai/helm
      helm repo update
      helm upgrade -i langgraph-dataplane langchain/langgraph-dataplane --values langgraph-dataplane-values.yaml --wait --debug
    
  6. 성공하면 namespace에서 세 개의 서비스가 시작되는 것을 볼 수 있습니다.
      NAME                                            READY   STATUS              RESTARTS   AGE
      langgraph-dataplane-listener-6dd4749445-zjmr4   0/1     ContainerCreating   0          26s
      langgraph-dataplane-operator-6b88879f9b-t76gk   1/1     Running             0          26s
      langgraph-dataplane-redis-0                     1/1     Running             0          25s
    
  7. control plane UI에서 배포를 생성합니다.
    1. 드롭다운 메뉴의 Compute IDs 목록에서 원하는 listener를 선택합니다.
    2. 배포할 Kubernetes namespace를 선택합니다.
    3. 다른 모든 필수 필드를 입력하고 패널 오른쪽 상단에서 Submit을 선택합니다.
    4. 배포는 listener가 배포된 Kubernetes 클러스터와 7b 단계에서 지정한 Kubernetes namespace에 배포됩니다.

Connect these docs programmatically to Claude, VSCode, and more via MCP for real-time answers.
I