Skip to content
LangSmith 文档版本 跟随上游 源快照 b89ec161 更新于 2026-10-18

安装 Mission Control

安装 Mission Control,一个用于在 Kubernetes 上监控、配置和操作自托管 LangSmith 的集群内控制台。

Mission Control 是一个用于在 Kubernetes 上监控、配置和操作 LangSmith 的集群内控制台。它运行在你的集群内部,默认通过 kubectl port-forward 访问,因此不需要 ingress。

有两条安装路径:

路径最适合
快速安装能运行经审阅的 shell 安装器、想要最短设置流程的客户。
手动安装不允许安装器脚本、或需要逐条审阅每个 Kubernetes 命令的组织。

公开的安装资源包括:

  • install-script.sh:一个安装器,含独立的 prereqs、namespace、secret、values、install 和 forward 步骤。
  • values.yaml:仅端口转发安装的默认 Helm values。

Mission Control 镜像发布到两个 Docker Hub 仓库:langchain/mission-control-backend 和 langchain/mission-control-frontend。可用以下命令查看最新镜像:

bash
docker pull langchain/mission-control-backend:latest
docker pull langchain/mission-control-frontend:latest

浏览器审阅链接:

  • https://github.com/langchain-ai/helm/tree/main/charts/mission-control/install-script.sh
  • https://github.com/langchain-ai/helm/tree/main/charts/mission-control/values.yaml

下面的命令使用原始 GitHub URL,以便 curl 能直接下载文件。如果你从不同的仓库或分支发布这些文件,请替换下方的原始基础 URL。

bash
MC_RAW_BASE=https://raw.githubusercontent.com/langchain-ai/helm/main/charts/mission-control

前置条件

工具最低版本安装示例
kubectl1.24+brew install kubectl
helm3.xbrew install helm
curl任何当前版本通常已预装

你必须针对已安装或将要安装 LangSmith 的那个 Kubernetes 集群运行安装器。继续之前请确认活动上下文:

bash
kubectl config current-context

安装器身份需要权限来创建 Mission Control 命名空间资源和集群范围的 RBAC:

bash
kubectl auth can-i create clusterrole
kubectl auth can-i create clusterrolebinding
kubectl auth can-i create serviceaccount -n langsmith
kubectl auth can-i create deployment -n langsmith
kubectl auth can-i create secret -n langsmith

这五个命令都应返回 yes。有关授予 Mission Control 的运行时权限,参阅权限参考。

快速安装

运行这三个命令:

bash
curl -fsSLO https://raw.githubusercontent.com/langchain-ai/helm/main/charts/mission-control/install-script.sh && chmod +x install-script.sh
curl -fsSL https://raw.githubusercontent.com/langchain-ai/helm/main/charts/mission-control/values.yaml -o values.yaml
./install-script.sh all -f values.yaml

all 步骤会:

  • 检查必需的工具和 RBAC。
  • 创建 langsmith 命名空间。
  • 提示输入 Mission Control 用户名和密码。
  • 将这些凭据存储在 mission-control-auth Kubernetes Secret 中。
  • 如果 values.yaml 尚不存在则写入它。
  • 如果你不是从本地 chart 检出运行,则从公共 Helm chart 仓库安装。
  • 用 Helm 安装 Mission Control。

RBAC 检查运行:

bash
kubectl auth can-i create clusterrole
kubectl auth can-i create clusterrolebinding
kubectl auth can-i create serviceaccount -n langsmith
kubectl auth can-i create deployment -n langsmith
kubectl auth can-i create secret -n langsmith

如果你的组织有意封锁 kubectl auth can-i,但通过另一条控制路径批准了 Helm 安装,运行:

bash
./install-script.sh all -f values.yaml --skip-rbac-check

访问 UI

安装完成后,启动一个本地端口转发:

bash
./install-script.sh forward

打开 http://localhost:3000 并用你输入的用户名和密码登录。

先审阅脚本

快速安装路径会在运行前下载脚本,因此你可以在第三个命令之前本地审阅 install-script.sh。

安装前编辑 values

快速安装路径也会在运行安装器前下载 values.yaml。如果你需要更改命名空间、资源、ingress、功能标志或诊断持久化,请在第三个命令之前审阅或编辑那个文件。

常见编辑:

设置何时更改
namespace在 langsmith 之外的地方安装 Mission Control。也要给脚本传 -n <namespace>。
resources你的命名空间有 ResourceQuota,或你的平台要求特定的请求/限制。
ingress.enabled 和 ingress.host你想通过你的 ingress 控制器而非端口转发来暴露 Mission Control。
config.features.*你需要移除特定的写权限或外部出口功能。
diagnostics.persistence.enabled你想让诊断包在 pod 重启和 Helm 升级后仍能存续。
backend.podSecurityContext 和 frontend.podSecurityContext你的平台要求容器以特定非 root UID(例如 1001)运行。

带自定义命名空间的示例:

bash
curl -fsSLO https://raw.githubusercontent.com/langchain-ai/helm/main/charts/mission-control/install-script.sh && chmod +x install-script.sh
curl -fsSL https://raw.githubusercontent.com/langchain-ai/helm/main/charts/mission-control/values.yaml -o values.yaml
./install-script.sh all -n mission-control -f values.yaml

脚本命令参考

bash
./install-script.sh prereqs
./install-script.sh namespace
./install-script.sh secret
./install-script.sh values
./install-script.sh install
./install-script.sh forward
./install-script.sh all

有用的标志:

bash
./install-script.sh all -n langsmith -f values.yaml
./install-script.sh all -u admin
printf '%s\n' 'your-password' | ./install-script.sh secret -u admin --password-stdin
./install-script.sh all -f values.yaml --skip-rbac-check
./install-script.sh install --chart-ref langchain/mission-control
./install-script.sh install --chart-path /path/to/mission-control
./install-script.sh forward --port 3001:3000

手动安装

在不允许安装器脚本时使用此路径。这些步骤只使用普通的 kubectl、helm 和 curl 命令。

Add the Helm repo and get the values file

添加 LangChain Helm 仓库:

bash
helm repo add langchain https://langchain-ai.github.io/helm
helm repo update langchain

下载客户 values 文件:

bash
curl -fsSL https://raw.githubusercontent.com/langchain-ai/helm/main/charts/mission-control/values.yaml -o values.yaml

安装前审阅 values.yaml。生产环境请保持 config.auth.enabled: true。

如果你的平台要求非 root 容器,Mission Control 可以 UID 1001 运行。在安装前把以下内容添加到 values.yaml:

yaml
backend:
  podSecurityContext:
    runAsNonRoot: true
    runAsUser: 1001
    runAsGroup: 1001
    fsGroup: 1001
  securityContext:
    allowPrivilegeEscalation: false
    capabilities:
      drop:
        - ALL
  extraEnv:
    - name: HOME
      value: /tmp
    - name: HELM_CACHE_HOME
      value: /tmp/.cache/helm
    - name: HELM_CONFIG_HOME
      value: /tmp/.config/helm
    - name: HELM_DATA_HOME
      value: /tmp/.local/share/helm

frontend:
  podSecurityContext:
    runAsNonRoot: true
    runAsUser: 1001
    runAsGroup: 1001
  securityContext:
    allowPrivilegeEscalation: false
    capabilities:
      drop:
        - ALL

Create the namespace

bash
kubectl create namespace langsmith --dry-run=client -o yaml | kubectl apply -f -

Create the auth credentials Secret

凭据存储在一个 Kubernetes Secret 中。它们不会被写入 values.yaml。

bash
read -r -p "Username: " MC_USER
read -r -s -p "Password: " MC_PASS; echo

kubectl create secret generic mission-control-auth \
  --namespace=langsmith \
  --from-literal=username="$MC_USER" \
  --from-literal=password="$MC_PASS" \
  --dry-run=client -o yaml | kubectl apply -f -

对于多副本后端部署,在同一个 Secret 中包含一个共享的 JWT 签名密钥,并在 values.yaml 中设置 config.auth.jwtSecretKey: jwtSecret:

bash
JWT_SECRET="$(openssl rand -base64 32)"

kubectl create secret generic mission-control-auth \
  --namespace=langsmith \
  --from-literal=username="$MC_USER" \
  --from-literal=password="$MC_PASS" \
  --from-literal=jwtSecret="$JWT_SECRET" \
  --dry-run=client -o yaml | kubectl apply -f -

Install with Helm

bash
helm upgrade --install mission-control langchain/mission-control \
  --namespace langsmith \
  --create-namespace \
  --values values.yaml \
  --rollback-on-failure

等待两个工作负载就绪(后端作为 StatefulSet 运行,前端作为 Deployment 运行):

bash
kubectl rollout status statefulset/mission-control-backend -n langsmith
kubectl rollout status deployment/mission-control-frontend -n langsmith

你也可以直接检查 pod:

bash
kubectl get pods -n langsmith

Access the UI

bash
kubectl port-forward svc/mission-control-frontend 3000:3000 -n langsmith

打开 http://localhost:3000 并用步骤 3 中的凭据登录。

升级

下载最新的公开 values 文件,合并你需要的任何本地更改,然后运行:

bash
helm repo update langchain

helm upgrade --install mission-control langchain/mission-control \
  --namespace langsmith \
  --values values.yaml \
  --rollback-on-failure

如果你改从本地 chart 检出操作:

bash
helm upgrade --install mission-control . \
  --namespace langsmith \
  --values values.yaml \
  --rollback-on-failure

如果你用快速脚本安装并保留了它:

bash
./install-script.sh install -f values.yaml

卸载

bash
helm uninstall mission-control -n langsmith

这会移除 Mission Control release。它不会删除你的命名空间或无关的 LangSmith 资源。

对 Mission Control 自有 Secret 的可选清理:

bash
kubectl delete secret -n langsmith \
  mission-control-auth \
  mission-control-draft \
  mission-control-deployed \
  mission-control-backup \
  mission-control-history \
  mission-control-alerts-config \
  mission-control-alerts-log \
  mission-control-alerts-key \
  mission-control-setup-token \
  --ignore-not-found

其他资源

故障排查

症状检查什么
kubectl auth can-i ... 返回 no请集群管理员授予安装时 RBAC,或代你运行安装。
Pod 保持 Pending用 kubectl describe pod -n langsmith <pod> 检查命名空间 ResourceQuota、节点容量,以及 PVC/存储类事件。
镜像拉取错误确认集群能拉取 langchain/mission-control-backend:latest 和 langchain/mission-control-frontend:latest。
登录失败确认 mission-control-auth 存在于同一命名空间,且含 username 和 password 键。
浏览器无法连接确认端口转发命令仍在运行,且没有其他本地进程使用端口 3000。

权限参考

Helm chart 创建一个名为 mission-control 的 ServiceAccount、ClusterRole 和 ClusterRoleBinding。大多数权限是只读的。写动词很窄且由功能标志控制。

安装或升级需要创建集群范围 RBAC(ClusterRole 和 ClusterRoleBinding)的能力,通常是 cluster-admin 或自定义等价物。最广的运行时权限集仅在 config.features.deploy: true 时才使用;该标志默认启用,对于只读安装请设为 false。

始终存在的只读权限

资源组资源动词
工作负载pods, pods/log, deployments, statefulsets, replicasets, daemonsets, jobs, cronjobsget, list, watch
网络services, endpoints, ingresses, ingressclassesget, list, watch
存储persistentvolumeclaims, storageclassesget, list, watch
集群nodes, namespaces, events, serviceaccounts, resourcequotasget, list, watch
配置configmaps, secretsget, list
指标metrics.k8s.io pods/nodesget, list, watch
RBACroles, rolebindings, clusterroles, clusterrolebindingsget, list, watch
CRD 与扩展customresourcedefinitions, leases, scaledobjects, httproutes, virtualservices, lgpsget, list, watch

功能门控权限

功能标志资源额外动词
config.features.configSavesecrets(mission-control-draft)create, update, delete
config.features.alertssecrets(mission-control-alerts-*)create, update, delete
config.features.fixIssuepodsdelete
config.features.adoptsecrets, configmaps, serviceaccounts, deployments, statefulsetspatch
config.auth.enabledsecrets(mission-control-auth、setup-token)、backend statefulsetcreate, update, delete, patch
config.features.valuesOverridesecrets(mission-control-values-overrides)create, update, delete
config.features.deploy工作负载、网络、RBAC、CRD、Helm release secretscreate, update, patch, delete

在 values.yaml 中将功能标志设为 false 以移除相应的写动词。在所有功能标志都禁用时,Mission Control 实际是只读的,除了当 config.auth.enabled: true 时的身份验证设置权限。


BytesRouter 是社区翻译站点,所有译文仅供参考,一切以官方英文原文为准。