跳到主要内容

在 Kubernetes 上部署 Langflow 生产环境

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

important

默认情况下,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'

important

如果您使用的 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

服务名称是您的发布名称后跟 -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
}'

配置密钥

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

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

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


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

或直接在 values 文件中(不建议用于密钥值):


_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