跳到主要内容

在 Kubernetes 上部署 Langflow 生产环境

Langflow Runtime Chart 专为在生产环境中部署应用程序而量身定制。它侧重于稳定性、性能、隔离性和安全性,以确保应用程序可靠高效地运行。

重要提示

默认情况下,Langflow Runtime Helm chart 启用 readOnlyRootFilesystem: true 作为安全最佳实践。此设置可防止在运行时修改容器的根文件系统,这是生产环境中推荐的安全措施。

禁用 readOnlyRootFilesystem 会降低部署的安全性。只有在您了解其安全隐患并已实施其他安全措施的情况下,才应禁用此设置。

有关更多信息,请参阅Kubernetes 文档

前提条件

安装 Langflow Runtime Helm chart

  1. 将仓库添加到 Helm。

_10
helm repo add langflow https://langflow-ai.github.io/langflow-helm-charts
_10
helm repo update

  1. 使用默认选项在 langflow 命名空间中安装 Langflow 应用程序。

如果您创建了包含打包流程的自定义镜像,您可以通过使用 --set 标志覆盖默认的 values.yaml 文件来部署 Langflow。

  • 使用包含捆绑流程的自定义镜像

_10
helm install my-langflow-app langflow/langflow-runtime -n langflow --create-namespace --set image.repository=myuser/langflow-hello-world --set image.tag=1.0.0

  • 或者,安装 chart 并使用 --set 标志从 URL 下载流程

_10
helm install my-langflow-app-with-flow langflow/langflow-runtime \
_10
-n langflow \
_10
--create-namespace \
_10
--set 'downloadFlows.flows[0].url=https://raw.githubusercontent.com/langflow-ai/langflow/dev/tests/data/basic_example.json'

重要提示

如果您使用的 shell 需要转义方括号,您可能需要在此命令中转义方括号


_10
helm install my-langflow-app-with-flow langflow/langflow-runtime \
_10
-n langflow \
_10
--create-namespace \
_10
--set 'downloadFlows.flows\[0\].url=https://raw.githubusercontent.com/langflow-ai/langflow/dev/tests/data/basic_example.json'

  1. 检查 Pod 的状态。

_10
kubectl get pods -n langflow

访问 Langflow Runtime

  1. 获取您的服务名称。

_10
kubectl get svc -n langflow

服务名称是您的 release 名称后跟 -langflow-runtime。例如,如果您使用了 helm install my-langflow-app-with-flow,则服务名称为 my-langflow-app-with-flow-langflow-runtime

  1. 启用端口转发以从本地机器访问 Langflow

_10
kubectl port-forward -n langflow svc/my-langflow-app-with-flow-langflow-runtime 7860:7860

  1. 确认您可以访问 http://localhost:7860/api/v1/flows/ 的 API 并查看流程列表。

_10
curl -v http://localhost:7860/api/v1/flows/

  1. 执行打包的流程。

以下命令从流程列表中获取第一个流程 ID 并运行该流程。


_12
# Get flow ID
_12
id=$(curl -s "http://localhost:7860/api/v1/flows/" | jq -r '.[0].id')
_12
_12
# Run flow
_12
curl -X POST \
_12
"http://localhost:7860/api/v1/run/$id?stream=false" \
_12
-H 'Content-Type: application/json' \
_12
-d '{
_12
"input_value": "Hello!",
_12
"output_type": "chat",
_12
"input_type": "chat"
_12
}'

配置 Secrets

要注入 secrets 和 Langflow 全局变量,请在 values.yaml 文件中使用 secretsenv 部分。

例如,示例流程 JSON 使用了一个作为 secret 的全局变量。将流程导出为 JSON 时,建议不要包含该 secret。

相反,在 Langflow Runtime 中导入流程时,您可以通过以下任一方式设置全局变量:


_10
env
_10
- name: openai_key_var
_10
valueFrom
_10
secretKeyRef
_10
name: openai-key
_10
key: openai-key

或者直接在 values 文件中(不建议用于 secret 值)


_10
env
_10
- name: openai_key_var
_10
value: "sk-...."

配置日志级别

values.yaml 文件中设置日志级别和其他 Langflow 配置。


_10
env
_10
- name: LANGFLOW_LOG_LEVEL
_10
value: "INFO"

配置扩缩容

要扩展 Langflow 应用程序的副本数量,请更改 values.yaml 文件中的 replicaCount 值。


_10
replicaCount: 3

要通过增加 Pod 的资源来垂直扩展应用程序,请更改 values.yaml 文件中的 resources 值。


_10
resources
_10
requests
_10
memory: "2Gi"
_10
cpu: "1000m"

有关在 AWS EKS、Google GKE 或 Azure AKS 上部署 Langflow 的更多信息,请参阅Langflow Helm Charts 仓库

Search