LangSmith Helm chart 提供了两种向服务注入环境变量的方式: commonEnv 和 extraEnv。了解两者之间的区别有助于您正确配置部署并避免运行时错误。
commonEnv
commonEnv 是 values.yaml 中的一个顶级字段,适用于 **除 playground 和 aceBackend 服务**之外的所有部署和有状态集。这些服务是沙箱化的,不接收 commonEnv values.
使用 commonEnv 当一个变量需要同时对大多数服务可用时,例如自定义 CA 证书路径、代理设置或影响整个平台的功能开关。
commonEnv:
- name: MY_ENV_VAR
value: "my-value"
接收 commonEnv 的服务
以下服务接收 commonEnv:
- -
backend - -
platformBackend - -
queue - -
ingestQueue - -
frontend - -
hostBackend
不接收 commonEnv 的服务
以下服务是沙箱化的,不 **会** 接收 commonEnv:
- -
playground - -
aceBackend
要为这些服务设置环境变量,请使用其 extraEnv directly:
playground:
deployment:
extraEnv:
- name: MY_ENV_VAR
value: "my-value"
aceBackend:
deployment:
extraEnv:
- name: MY_ENV_VAR
value: "my-value"
extraEnv
extraEnv 是一个按服务定义的字段,仅向特定服务添加环境变量。每个支持 extraEnv 的服务会在 <service>.deployment.extraEnv.
下暴露它。使用 extraEnv 当变量仅适用于一个服务时,或当您需要在 playground or aceBackend 上设置变量 commonEnv 无法到达的
backend:
deployment:
extraEnv:
- name: MY_BACKEND_VAR
value: "backend-value"
变量名称不能重复
chart 使用 detectDuplicates 辅助函数来验证每个服务的环境变量名称。如果同一变量名称在服务的组合变量列表中出现多次(包括从 commonEnv, extraEnv和 chart 管理的变量中添加的),Helm 会在模板渲染期间失败,并显示类似以下错误:
Duplicate keys detected: [MY_ENV_VAR]
要解决此问题,请从 commonEnv 或服务的 extraEnv 中删除重复项,使每个变量名称在每个服务中仅出现一次。
示例:在大多数服务上设置一个变量,但在一个上覆盖它
要为大多数服务使用通用值,同时在特定服务上覆盖它,请在 commonEnv 中设置它,并将覆盖添加到该服务的 extraEnv中。因为 playground 和 aceBackend 不接收 commonEnv,您必须始终通过自己的 extraEnv.
# Apply to all services that receive commonEnv
commonEnv:
- name: SSRF_ALLOW_K8S_INTERNAL
value: "true"
# playground does not receive commonEnv — set it directly
playground:
deployment:
extraEnv:
- name: SSRF_ALLOW_K8S_INTERNAL
value: "true"
- name: SSRF_ALLOW_PRIVATE_IPS_PLAYGROUND
value: "true"
常用功能开关
减少批量运行持久化日志记录
默认情况下,LangSmith 会为通过基于 Go 的摄取队列持久化的每个批次运行记录一条成功消息。在处理大量追踪的部署中,这可能会产生过多的日志噪音。
FF_PERSIST_BATCHED_RUNS_SUCCESS_LOGGING 默认为 true 并通过以下方式注入到所有服务 commonEnv 当 ingestQueue.enabled is true (默认值)。要禁用这些成功日志消息,请在以下位置覆盖它 commonEnv:
commonEnv:
- name: FF_PERSIST_BATCHED_RUNS_SUCCESS_LOGGING
value: "false"