跳到主要内容

在 Kubernetes 上部署 Langflow 生产环境

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

important

出于安全原因,默认的 Langflow 运行时 Helm chart 设置了 readOnlyRootFilesystem: true。此设置防止在运行时修改容器的根文件系统,这是生产环境中推荐的安全措施。

如果禁用 readOnlyRootFilesystem(设为 false),将会降低您的部署安全性。仅在您了解安全影响并已实施其他安全措施的情况下才禁用此设置。

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

先决条件

安装 Langflow 运行时 Helm chart

  1. 将仓库添加到 Helm:


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

  2. 使用默认选项在 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

  3. 检查 pod 的状态:


    _10
    kubectl get pods -n langflow

访问 Langflow 运行时

  1. 获取您的服务名称:


    _10
    kubectl get svc -n langflow

    服务名称是您的发布名称加上 -langflow-runtime 后缀。例如,如果您使用了 helm install my-langflow-app-with-flow,那么服务名称就是 my-langflow-app-with-flow-langflow-runtime

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


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

  3. 通过调用 http://localhost:7860/api/v1/flows/ 确认您可以访问 API:


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

    成功的请求将返回流程列表。

  4. 运行打包的流程。 以下示例从流程列表中获取第一个流程 ID,然后运行该流程:


    _12
    # 获取流程 ID
    _12
    id=$(curl -s "http://localhost:7860/api/v1/flows/" | jq -r '.[0].id')
    _12
    _12
    # 运行流程
    _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 运行时 Helm chart 的 values.yaml 文件的 .env 部分来为您的 Langflow 部署定义环境变量。 这包括内置的 Langflow 环境变量 以及您的流程中使用的 全局变量

Langflow 可以从您的运行时环境中获取全局变量,例如在 values.yaml 中引用的 Kubernetes 密钥。 例如,Langflow 运行时 Helm chart 的 示例流程 JSON 使用了一个作为密钥的全局变量。 如果您想在 Kubernetes 上的 Langflow 部署中运行此流程,您需要在运行时配置中包含该密钥。

提示

当您将流程导出为 JSON 文件时,建议省略密钥。 是否包含密钥取决于您在流程中如何声明密钥以及是否使用 Save with my API keys 选项。 有关更多信息,请参阅 导入和导出流程

设置密钥

Kubernetes 密钥是存储敏感值和凭据的推荐方式。

使用 secretKeyRefvalues.yaml 中引用 Kubernetes 密钥:


_10
env:
_10
- name: OPENAI_API_KEY
_10
valueFrom:
_10
secretKeyRef:
_10
name: openai-credentials
_10
key: openai-key

使用 kubectlhelm 创建和设置密钥

您可以使用 kubectlhelm 命令来创建和设置密钥:

  1. 创建密钥:


    _10
    kubectl create secret generic openai-credentials \
    _10
    --namespace langflow \
    _10
    --from-literal=OPENAI_API_KEY=sk...

  2. 验证密钥是否存在:


    _10
    kubectl get secrets -n langflow openai-credentials

    结果已加密。

  3. 升级 Helm release 以使用该密钥:


    _10
    helm upgrade my-langflow-app-image langflow/langflow-runtime -n langflow \
    _10
    --reuse-values \
    _10
    --set "extraEnv[0].name=OPENAI_API_KEY" \
    _10
    --set "extraEnv[0].valueFrom.secretKeyRef.name=openai-credentials" \
    _10
    --set "extraEnv[0].valueFrom.secretKeyRef.key=OPENAI_API_KEY"

    如果您的 shell 要求,请转义方括号。

设置日志级别和其他配置变量

对于非敏感变量,如 LANGFLOW_LOG_LEVEL,您可以直接在 values.yaml 中设置值:


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

配置扩展

使用 Langflow 运行时 Helm chart 的 values.yaml 文件中的 replicaCountresources 来配置扩展:

  • 水平扩展:使用 replicaCount 设置 Langflow 部署的副本数量。


    _10
    replicaCount: 3

  • 垂直扩展:使用 resources 部分根据应用程序的需求调整 pod 资源。


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

另请参阅

Search