Skip to main content
使用 CDK 在 AWS 上部署 Dify 企业版。

组件

测试部署

生产部署

部署

整个过程预计需要 60 分钟。
  1. 配置 AWS CLI:

    安装并配置 AWS CLI
  2. 克隆此仓库:

  3. 安装 NodeJS 依赖:

  4. 配置环境变量:

    修改 .env 文件中的环境变量值。
    • ENVIRONMENT:指定部署环境;必须是 testprod
    • CDK_DEFAULT_REGION:Dify 企业版将部署的 AWS 区域。
    • CDK_DEFAULT_ACCOUNT:你的 AWS 账户 ID。
    • DEPLOY_VPC_ID:用于部署的现有 VPC 的 ID。如果未设置,CDK 将为你创建一个。
    • 注意: 如果使用现有 VPC
      • 确保你有 2 个或更多的公共子网用于应用负载均衡器,以及 2 个或更多的私有子网可以访问互联网(与 NAT 关联)以从互联网拉取 docker 镜像。
      • 为子网添加标签否则,步骤 6 将显示关于自动标记失败的警告,这将导致应用负载均衡器创建失败):
    • 子网配置(需要 DEPLOY_VPC_ID,用逗号分隔且不带空格,根据 AWS 安全最佳实践建议使用私有子网):
      • EKS_CLUSTER_SUBNETS:EKS 控制平面的子网 ID。需要至少 2 个不同可用区 (AZs) 的子网。
      • EKS_NODES_SUBNETS:EKS 工作节点的子网 ID。需要至少 2 个不同可用区的子网。
      • REDIS_SUBNETS:Redis 部署的子网 ID。
      • RDS_SUBNETS:RDS 数据库的子网 ID。(至少需要 2 个不同可用区)
      • OPENSEARCH_SUBNETS:OpenSearch 部署的子网 ID。
      • OPENSEARCH_ADMINNAME:OpenSearch 域管理员名称。
      • OPENSEARCH_PASSWORD:OpenSearch 域管理员密码。
    • AWS_EKS_CHART_REPO_URL:(仅适用于 AWS 中国区域)AWS EKS Helm chart 仓库 URL。
    • RDS_PUBLIC_ACCESSIBLE:设置为 true 使 RDS 可公开访问(不推荐)。
    注意:
    • 如果你使用的是 AWS 中国区域,必须配置 AWS_EKS_CHART_REPO_URL 以确保功能正常。请联系 Dify 团队获取 URL。
    • 建议使用现有 VPC 以便更容易访问资源。
  5. CDK 引导:

    初始化 CDK 环境:
  6. CDK 部署:

    • 部署 Dify 企业版:
  7. 更新 AWS EKS 访问权限:

    1. 导航到 EKS 集群面板,选择”访问”菜单,然后点击”管理访问”:
    1. 在”管理访问”对话框中,选择”EKS API 和 ConfigMap”,然后点击”保存更改”。
    2. 在 IAM 访问条目面板中,点击”创建访问条目”:
    1. 添加你的 IAM 用户并分配以下权限:
      • AmazonEKSAdminPolicy
      • AmazonEKSAdminViewPolicy
      • AmazonEKSClusterAdminPolicy
  8. 配置 kubeconfig 以本地访问 Kubernetes (K8S) 集群:

    根据你的部署调整 regionname 参数:
    • region: 你的集群部署的 AWS 区域。
    • name: EKS 集群名称。
  9. 数据持久化配置:

    修改 Helm values.yaml 文件。要启用它,按如下方式修改 persistence 部分,将 {your-region-name}{your-s3-bucket-name} 替换为 CDK 创建的资源名称,确保已启用 useAwsManagedIam
  10. 数据库配置:

    修改 Helm values.yaml 文件,删除 postgre 部分,并按如下方式修改 externalPostgres 部分,用 AWS Secret Manager 中存储的数据替换 {your-postgres-endpoint}{your-postgres-password}
  11. Redis 配置:

    修改 Helm values.yaml 文件,删除 redis 部分,并按如下方式修改 externalRedis 部分,用 ElastiCache-Redis OSS caches 控制台中的 Primary endpoint 替换 {your-redis-host} 注意: 删除 Primary endpoint 中的端口号
  12. 向量数据库配置:

    修改 Helm values.yaml 文件,按如下方式修改 externalType 部分:
    1. 用 AWS Opensearch 实例的 Domain endpoint 替换 {openSearch_endpont},删除 https:// 并使用剩余部分。
    2. 用你在 .env 中设置的值替换 <OPENSEARCH_ADMINNAME><OPENSEARCH_PASSWORD>
  13. 设置 docker 镜像拉取密钥

    在安装 Dify 企业版之前,你需要设置 docker 镜像拉取密钥。 注意: 如果你还没有获得用户名和密码,请联系我们,邮箱地址:Support@dify.ai
  14. TLS 配置

    测试环境:

    如果你只是在测试部署过程,可以忽略此步骤直接继续。

    生产环境:

    前往 AWS ACM 为你在 helm chart 配置文件 values.yaml 中声明的域名申请证书:
    需要的域名包括:
    前往你的域名服务提供商(如 cloud flare、aws route53 等)设置 cname 以证明你对这些域名的所有权。 修改 values.yaml 参数:global.useTLS
  15. AWS 负载均衡器配置

    建议在 Helm values.yaml 文件中使用 AWS 应用负载均衡器(ALB)进行入口配置。要启用它,按如下方式修改 ingress 部分: 测试环境:
    生产环境: 参考:AWS load balancer controller 设置
  16. 安装 Dify 企业版

    Dify 企业版使用 Helm 进行部署。
  17. 访问 Dify 企业版

    测试环境:

    设置完成后,获取 ALB 的临时外部 IP。
    然后将以下行添加到你的 /etc/hosts 文件中。

    生产环境

    前往你的域名服务提供商,将 DNS 设置为 ALB 地址(在 AWS-EC2-Load Balancer 中获取 alb 的 dns):
  18. 验证安装

    警告:在登录 Dify Enterprise Dashboard http://enterprise.dify.local 之前,你必须先设置 Dify Console http://console.dify.local
    • Dify Console:访问 http://console.dify.local 并完成安装。
    • Enterprise Dashboard:访问 http://enterprise.dify.local,使用默认邮箱和密码登录。登录后可以更改密码。

销毁

此过程可能需要 20 分钟。
销毁 .env 文件中 ENVIRONMENT 下指定环境的部署。
注意:登录 AWS 控制台,检查 VPC,确保 CDK 创建的 VPC 已被销毁,如果没有,请检查 Cloudformation 并执行删除操作。

高级配置

要自定义部署配置,请修改测试环境的 test.ts 文件或生产环境的 prod.ts 文件。