Skip to main content
중요 하이브리드 배포 옵션은 Enterprise 플랜이 필요합니다.
하이브리드 모델을 사용하면 데이터 플레인(LangGraph Server 배포 및 에이전트 워크로드)을 자체 클라우드에서 실행하면서, LangChain이 컨트롤 플레인(LangSmith UI 및 오케스트레이션)을 호스팅하고 관리합니다. 이 설정을 통해 런타임 환경을 자체 호스팅할 수 있는 유연성과 관리형 LangSmith 인스턴스의 편리함을 동시에 누릴 수 있습니다. 다음 단계에서는 자체 호스팅 데이터 플레인을 관리형 LangSmith 컨트롤 플레인에 연결하는 방법을 설명합니다.

사전 요구 사항

  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. 두 개의 컨트롤 플레인 URL에 대한 egress를 활성화해야 합니다. 리스너는 배포를 위해 다음 엔드포인트를 폴링합니다:

설정

  1. LangSmith 조직 ID를 제공합니다. LangSmith 조직이 클라우드에 데이터 플레인을 배포하도록 구성됩니다.
  2. LangSmith UI에서 리스너를 생성합니다. Listener 데이터 모델은 실제 “listener” 애플리케이션에 대해 구성됩니다.
    1. 왼쪽 탐색 메뉴에서 Deployments > Listeners를 선택합니다.
    2. 페이지 오른쪽 상단에서 + Create Listener를 선택합니다.
    3. 리스너에 대한 고유한 Compute ID를 입력합니다. Compute ID는 현재 LangSmith 작업 공간의 모든 리스너에서 고유해야 하는 사용자 정의 식별자입니다. Compute ID는 최종 사용자가 새 배포를 생성할 때 표시됩니다. Compute ID가 최종 사용자에게 LangGraph Server 배포가 배포될 위치에 대한 컨텍스트를 제공하도록 합니다. 예를 들어, Compute IDk8s-cluster-name-dev-01로 설정할 수 있습니다. 이 예시에서 Kubernetes 클러스터의 이름은 k8s-cluster-name이고, dev는 클러스터가 “개발” 워크로드용으로 예약되어 있음을 나타내며, 01은 이름 충돌을 줄이기 위한 숫자 접미사입니다.
    4. 하나 이상의 Kubernetes 네임스페이스를 입력합니다. 나중에 “listener” 애플리케이션이 이러한 각 네임스페이스에 배포하도록 구성됩니다.
    5. 페이지 오른쪽 상단에서 Submit을 선택합니다.
    6. 리스너가 생성되면 리스너 ID를 복사합니다. 이 ID는 나중에 Kubernetes 클러스터에 실제 “listener” 애플리케이션을 설치할 때 사용됩니다(5단계).
    중요 LangSmith UI에서 리스너를 생성하는 것은 Kubernetes 클러스터에 “listener” 애플리케이션을 설치하지 않습니다.
  3. Kubernetes 클러스터에 필요한 구성 요소를 설치하기 위해 Helm chart가 제공됩니다.
    • langgraph-listener: LangChain의 컨트롤 플레인을 수신하여 배포 변경 사항을 확인하고 다운스트림 CRD를 생성/업데이트하는 서비스입니다. 이것이 “listener” 애플리케이션입니다.
    • LangGraphPlatform CRD: LangSmith Deployment를 위한 CRD입니다. LangSmith Deployment 인스턴스를 관리하기 위한 사양을 포함합니다.
    • langgraph-platform-operator: LangSmith CRD의 변경 사항을 처리하는 오퍼레이터입니다.
  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 컨트롤 플레인 API로 인증합니다.
    • config.langsmithWorkspaceId: langgraph-listener 배포는 LangSmith 작업 공간의 LangGraph Server 배포와 결합됩니다. 즉, langgraph-listener 배포는 지정된 LangSmith 작업 공간 ID의 LangGraph Server 배포만 관리할 수 있습니다.
    • config.langgraphListenerId: LangSmith 작업 공간과 결합되는 것 외에도, langgraph-listener 배포는 리스너와도 결합됩니다. 새 LangGraph Server 배포가 생성되면 자동으로 langgraphListenerId와 결합됩니다. langgraphListenerId를 지정하면 langgraph-listener 배포가 langgraphListenerId와 결합된 LangGraph Server 배포만 관리할 수 있습니다.
    • config.watchNamespaces: langgraph-listener 배포가 배포할 Kubernetes 네임스페이스의 쉼표로 구분된 목록입니다. 이 목록은 2d 단계에서 지정한 네임스페이스 목록과 일치해야 합니다.
    • config.enableLGPDeploymentHealthCheck: LangGraph Server 상태 확인을 비활성화하려면 이 값을 false로 설정합니다.
    • ingress.hostname: 배포 워크플로의 일부로, langgraph-listener 배포는 LangGraph Server 상태 확인 엔드포인트(GET /ok)를 호출하여 애플리케이션이 올바르게 시작되었는지 확인하려고 시도합니다. 일반적인 설정에는 LangGraph Server 배포를 위한 공유 DNS 레코드 또는 도메인을 생성하는 것이 포함됩니다. 이것은 LangSmith에서 관리하지 않습니다. 생성한 후 ingress.hostname을 도메인으로 설정하면 상태 확인을 완료하는 데 사용됩니다.
    • operator.enabled: Kubernetes 네임스페이스에 배포할 수 있는 langgraph-platform-operator 인스턴스는 하나뿐입니다. 현재 Kubernetes 네임스페이스에 이미 langgraph-platform-operator 인스턴스가 배포되어 있는 경우 이 값을 false로 설정합니다.
    • operator.createCRDs: Kubernetes 클러스터에 이미 LangGraphPlatform CRD가 설치되어 있는 경우 이 값을 false로 설정합니다. 설치 중에 CRD가 이미 설치되어 있으면 오류가 발생합니다. 이 상황은 동일한 Kubernetes 클러스터에 여러 리스너가 배포된 경우 발생할 수 있습니다.
  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. 성공하면 네임스페이스에서 세 개의 서비스가 시작되는 것을 볼 수 있습니다.
      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. 컨트롤 플레인 UI에서 배포를 생성합니다.
    1. 드롭다운 메뉴의 Compute IDs 목록에서 원하는 리스너를 선택합니다.
    2. 배포할 Kubernetes 네임스페이스를 선택합니다.
    3. 기타 필수 필드를 모두 입력하고 패널 오른쪽 상단에서 Submit을 선택합니다.
    4. 배포는 리스너가 배포된 Kubernetes 클러스터와 7b 단계에서 지정한 Kubernetes 네임스페이스에 배포됩니다.

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