以编程方式使用文档

Mission Control 是一个用于监控、配置和操作 Kubernetes 上 LangSmith 的集群内控制台。它运行在您的集群内,可通过以下方式访问 kubectl port-forward 默认情况下,因此无需入口。

有两种安装方式:

方式最佳适用场景
快速安装可以运行经过审查的 shell 安装程序并希望最短时间完成设置的用户。
手动安装不允许运行安装脚本或需要审查每个 Kubernetes 命令的组织。

公开的安装资源包括:

  • - install-script.sh:一个包含单独 prereqs, namespace, secret, values, installforward steps.
  • - values.yaml:用于仅端口转发安装的默认 Helm values。

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

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。

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 集群上运行安装程序。继续之前,请确认当前上下文:

kubectl config current-context

安装程序身份需要获得创建 Mission Control 命名空间资源和集群级 RBAC 的权限:

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 的运行时权限。

快速安装

运行以下三个命令:

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 step:

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

RBAC 检查运行:

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 安装,请运行:

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

访问 UI

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

./install-script.sh forward

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

首先查看脚本

快速安装路径会在运行前下载脚本,这样您可以在运行前查看 install-script.sh 本地文件后再执行第三个命令。

安装前编辑配置值

快速安装路径还会下载 values.yaml 然后再运行安装程序。如果需要更改命名空间、资源、入口、功能标志或诊断持久化,请在第三个命令之前查看或编辑该文件。

常见编辑项:

配置项何时更改
namespace在其他位置安装 Mission Control,而不是 langsmith。同时传递 -n <namespace> 给脚本。
resources您的命名空间有 ResourceQuota or your platform requires specific requests/limits.
ingress.enabledingress.host您希望通过 ingress 控制器公开 Mission Control,而不是端口转发。
config.features.*您需要移除特定的写入权限或外部出口功能。
diagnostics.persistence.enabled您希望诊断包在 pod 重启和 Helm 升级后保留。
backend.podSecurityContextfrontend.podSecurityContext您的平台要求容器以特定非 root UID 运行,例如 1001.

使用自定义命名空间的示例:

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

脚本命令参考

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

常用标记:

./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, helmcurl 命令。

Add the Helm repo and get the values file

添加 LangChain Helm 仓库:

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

下载客户配置文件:

    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 后再安装:

    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

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

Create the auth credentials Secret

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

    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 签名密钥并设置 config.auth.jwtSecretKey: jwtSecret in values.yaml:

    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

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

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

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

您也可以直接检查 pods:

    kubectl get pods -n langsmith
    

Access the UI

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

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

升级

下载最新的公共配置文件,合并您需要的任何本地更改,然后运行:

helm repo update langchain

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

如果您是从本地 chart 检出版本工作:

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

如果您使用快速脚本安装并将其保存在本地:

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

卸载

helm uninstall mission-control -n langsmith

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

可选的 Mission Control 拥有的 Secrets 清理:

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检查命名空间 ResourceQuota, node capacity, and PVC/storage class events with kubectl describe pod -n langsmith <pod>.
镜像拉取错误确认集群能够拉取 langchain/mission-control-backend:latestlangchain/mission-control-frontend:latest.
登录失败确认 mission-control-auth 存在于同一命名空间中且具有 usernamepassword 密钥。
浏览器无法连接确认端口转发命令仍在运行且没有其他本地进程使用端口 3000.

权限参考

Helm chart 创建了一个 ServiceAccount, ClusterRole,以及 ClusterRoleBinding 名为 mission-control。大多数权限为只读。写操作动词范围狭窄,由功能标志控制。

安装或升级需要能够创建集群范围的 RBAC(ClusterRoleClusterRoleBinding),通常为 cluster-admin 或自定义等效项。最广泛的运行时权限集仅在 config.features.deploy: true时使用;该标志默认启用,设置为 false 以进行只读安装。

始终存在的只读权限

资源组资源动词
Workloadspods, 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
Metricsmetrics.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-draftcreate、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)、后端 statefulsetcreate、update、delete、patch
config.features.valuesOverridesecrets(mission-control-values-overridescreate、update、delete
config.features.deploy工作负载、网络、RBAC、CRD、Helm release secretscreate、update、patch、delete

将功能标志设置为 false in values.yaml 以移除相应的写操作动词。禁用所有功能标志后,Mission Control 除了 config.auth.enabled: true.