Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Helm Chart value.yaml 重要参数的完整指南 - 确定所需更改、按环境调整和维护默认值的标准

在 Kubernetes 上部署 Dify Enterprise 时,values.yaml 是最重要的文件,决定了部署的整体情况。正如官方安装命令helm upgrade -i dify -f values.yaml dify/dify所示,所有生产环境配置差异都被合并到该文件中。

参数有很多,但您不需要全部了解。重要的是将参数分为三层:“必须更改的参数”、“需要针对每个环境调整的参数”和“可以保留为默认的参数”,并对其进行优先级管理。

另外,公式中提供了dify-ee-helm-chart-values-generator来处理数值的复杂性,可用于生成初始配置。


1.values.yaml整体结构

helm show values dify/dify输出的主要部分如下。

values.yaml
├── global              # グローバル設定(イメージレジストリ、プルシークレット等)
├── api                 # API サーバー設定
├── worker              # Worker サーバー設定
├── web                 # Web フロントエンド設定
├── sandbox             # コード実行 Sandbox 設定
├── enterprise          # Enterprise 固有設定(License 等)
├── ingress             # Ingress / ドメイン設定
├── persistence         # 永続化設定
├── externalPostgres    # 外部 PostgreSQL 接続
├── externalRedis       # 外部 Redis 接続
├── externalS3          # 外部オブジェクトストレージ接続
├── postgresql          # 内蔵 PostgreSQL(検証用)
├── redis               # 内蔵 Redis(検証用)
└── pluginDaemon        # プラグイン Daemon 設定

2.必须改变的参数(Must Change)

以下参数不应在生产中使用其默认值。

2.1 域和入口

ingress:
  enabled: true
  className: "nginx"  # 環境に応じて alb, traefik 等
  annotations:
    cert-manager.io/cluster-issuer: "letsencrypt-prod"
    nginx.ingress.kubernetes.io/proxy-body-size: "50m"
  tls:
    - secretName: dify-tls-cert
      hosts:
        - console.dify.example.co.jp
        - api.dify.example.co.jp
        - app.dify.example.co.jp
        - upload.dify.example.co.jp
        - enterprise.dify.example.co.jp
  hosts:
    console:
      host: console.dify.example.co.jp
    api:
      host: api.dify.example.co.jp
    app:
      host: app.dify.example.co.jp
    upload:
      host: upload.dify.example.co.jp
    enterprise:
      host: enterprise.dify.example.co.jp

注意:Dify Enterprise 有多个端点:控制台/api/应用程序/上传/企业/触发器。提前设计您的 DNS 和通配符证书。

2.2 秘密/内部通信密钥

api:
  secretKey: ""       # 必ず強ランダム値に変更
  innerApiKey: ""     # 必ず強ランダム値に変更

生成示例:

# 32 バイトの hex 文字列を生成
openssl rand -hex 32

**在生产中,我们建议使用 existingSecret,而不是在 value.yaml 中以纯文本形式编写。 **

api:
  existingSecret: "dify-api-secrets"
  existingSecretKeys:
    secretKey: "SECRET_KEY"
    innerApiKey: "INNER_API_KEY"

2.3 企业许可模式

enterprise:
  enabled: true
  licenseMode: "online"   # オフライン環境では "offline" に変更

对于离线模式,请参考官方License激活文档,了解如何放置License文件。

2.4 外部数据库连接

在生产中,禁用内置 PostgreSQL 并使用外部托管数据库。

# 内蔵 PostgreSQL を無効化
postgresql:
  enabled: false

# 外部 PostgreSQL を有効化
externalPostgres:
  enabled: true
  host: "dify-prod.cluster-xxxx.ap-northeast-1.rds.amazonaws.com"
  port: 5432
  username: "dify_app"
  database: "dify_production"
  existingSecret: "dify-postgres-secret"
  existingSecretPasswordKey: "password"
  sslMode: "require"    # 本番では SSL 必須

2.5 外部Redis连接

redis:
  enabled: false

externalRedis:
  enabled: true
  host: "dify-prod.xxxxx.apne1.cache.amazonaws.com"
  port: 6379
  existingSecret: "dify-redis-secret"
  existingSecretPasswordKey: "password"
  useSsl: true

2.6 外部对象存储

externalS3:
  enabled: true
  bucket: "dify-enterprise-prod"
  region: "ap-northeast-1"
  endpoint: ""  # AWS S3 の場合は空、MinIO の場合は URL を指定
  existingSecret: "dify-s3-secret"
  existingSecretKeys:
    accessKey: "AWS_ACCESS_KEY_ID"
    secretKey: "AWS_SECRET_ACCESS_KEY"

3.每个环境需要调整的参数(Per-Environment)

3.1 副本数量

组件验证分期生产
api.replicas123+
工人.replicas123+
网络副本112+
沙盒.replicas112+
企业.副本112

3.2 资源限制

# 本番向け -- 各コンポーネントに明示的に定義
api:
  resources:
    requests:
      cpu: "2"
      memory: "4Gi"
    limits:
      cpu: "4"
      memory: "8Gi"

worker:
  resources:
    requests:
      cpu: "2"
      memory: "4Gi"
    limits:
      cpu: "4"
      memory: "8Gi"

web:
  resources:
    requests:
      cpu: "500m"
      memory: "512Mi"
    limits:
      cpu: "1"
      memory: "1Gi"

sandbox:
  resources:
    requests:
      cpu: "500m"
      memory: "512Mi"
    limits:
      cpu: "1"
      memory: "1Gi"

3.3 日志级别

# 検証環境
api:
  env:
    LOG_LEVEL: "DEBUG"

# 本番環境
api:
  env:
    LOG_LEVEL: "WARNING"

3.4 SMTP设置(邮件通知)

api:
  env:
    MAIL_TYPE: "smtp"
    SMTP_SERVER: "smtp.example.co.jp"
    SMTP_PORT: "587"
    SMTP_USE_TLS: "true"
    SMTP_USERNAME: "dify-noreply@example.co.jp"
    MAIL_DEFAULT_SEND_FROM: "Dify Enterprise <dify-noreply@example.co.jp>"
  existingSecret: "dify-smtp-secret"

3.5 SSO/SAML 集成

在企业版中,可以使用 SAML/OIDC 进行 SSO。与 Azure AD 或 Okta 链接时,请设置以下内容。

enterprise:
  sso:
    enabled: true
    protocol: "saml"
    # 具体的な IdP 設定は管理コンソールから行う

3.6 沙盒网络限制

sandbox:
  env:
    ALLOWED_SYSCALLS: ""  # 許可するシステムコールを限定
  networkPolicy:
    enabled: true
    # 許可する通信先を明示的に指定

4. 可以保留默认的参数(Keep Default)

除非有特殊要求,以下内容无需更改。

参数类别原因
实验性功能标志稳定版就可以不用开启
未使用的插件设置不要触动未使用插件的设置
未使用的云提供商的连接设置使用 AWS 时,忽略 GCP/Azure 特定项目
图像标签(如果包含在 Helm Chart 版本中)无需指定单独的标签,因为它们由图表版本管理
内部端口号除非有特殊要求,否则使用默认端口

5.参数分类汇总表

分类参数示例更改时间
必须改变ingress.hosts、secretKey、innerApiKey、externalPostgres、externalRedis、externalS3、enterprise.licenseMode首次部署之前
每个环境副本、资源、LOG_LEVEL、SMTP、SSO、网络策略搭建环境时
保持默认实验标志、未使用的插件、内部端口仅在需要时

6.values.yaml 的版本控制

6.1 使用 Git 存储库进行管理

value.yaml 是基础设施代码本身,由 Git 管理。

infra-repo/
├── helm/
│   └── dify/
│       ├── base-values.yaml        # 全環境共通
│       ├── testing-values.yaml     # 検証環境上書き
│       ├── staging-values.yaml     # ステージング上書き
│       └── production-values.yaml  # 本番環境上書き
├── secrets/
│   └── README.md                   # Secret の管理方針を記載
└── scripts/
    └── deploy.sh                   # デプロイスクリプト

6.2 部署命令示例

# 本番デプロイ(base + 環境別の values を重ねて適用)
helm upgrade -i dify dify/dify \
  -n dify-production \
  -f helm/dify/base-values.yaml \
  -f helm/dify/production-values.yaml \
  --wait --timeout 10m

养成在部署之前使用 helm diff 插件检查更改的习惯。


7. 故障排除

价值观引起的常见问题

症状原因治疗
Pod 发生 CrashLoopBackOff错误的数据库连接信息检查 externalPostgres 的主机/端口/凭据
502 入口服务名称或端口不匹配使用 kubectl get svc 检查实际服务
许可证认证错误许可证模式不匹配检查在线/离线设置并重启企业pod
文件上传失败S3 凭证不正确检查外部S3凭证和存储桶策略
发送邮件失败SMTP 设置不正确SMTP_SERVER / PORT / TLS / 检查身份验证信息
OOM 杀死资源限制缺失检查 kubectl describe pod 上的事件并增加限制

9. 总结

Helm Chart 的 value.yaml 是 Dify Enterprise 部署的“蓝图”。虽然没有必要破译所有参数,但建议按照以下优先顺序进行处理。

  1. 首日支持:Domain/Secret/External DB/Redis/S3/License模式
  2. 搭建环境时支持:副本数量、资源限制、日志级别、SMTP、SSO
  3. 运行开始后实施:根据需要添加实验性功能和插件设置

使用Git管理values.yaml,针对每个环境将其分开,并在部署前使用helm diff检查差异。养成这三个习惯是Dify Enterprise稳定运营的基础。