组件
测试部署
| 组件 | Helm Chart 值 | 数量 | vCPU | 内存 (GB) | 存储 (GB) | 备注 |
|---|---|---|---|---|---|---|
| S3 | persistence | 1 | ||||
| Redis DB | externalRedis | 1 | 2 | 6.38 | ||
| RDS Postgres DB | externalPostgres | 2 | 2 | 8 | ||
| K8S Worker Node | 1 | 4 | 16 | 100 | ||
| OpenSearch | vectorDB | 1 | 2 | 16 | 100 |
生产部署
| 组件 | Helm Chart 值 | 数量 | vCPU | 内存 (GB) | 存储 (GB) | 备注 |
|---|---|---|---|---|---|---|
| S3 | persistence | 1 | ||||
| Redis DB | externalRedis | 1 | 2 | 12.93 | ||
| RDS Postgres DB | externalPostgres | 1 | 4 | 32 | ||
| K8S Worker Node | 6 | 8 | 32 | 100 | ||
| OpenSearch | vectorDB | 2 | 8 | 64 | 100 |
部署
整个过程预计需要 60 分钟。
-
配置 AWS CLI:
安装并配置 AWS CLI: -
克隆此仓库:
-
安装 NodeJS 依赖:
-
配置环境变量:
修改.env文件中的环境变量值。-
ENVIRONMENT:指定部署环境;必须是test或prod。 -
CDK_DEFAULT_REGION:Dify 企业版将部署的 AWS 区域。 -
CDK_DEFAULT_ACCOUNT:你的 AWS 账户 ID。 -
DEPLOY_VPC_ID:用于部署的现有 VPC 的 ID。如果未设置,CDK 将为你创建一个。 -
注意: 如果使用现有 VPC
- 确保你有 2 个或更多的公共子网用于应用负载均衡器,以及 2 个或更多的私有子网可以访问互联网(与 NAT 关联)以从互联网拉取 docker 镜像。
-
为子网添加标签(否则,步骤 6 将显示关于自动标记失败的警告,这将导致应用负载均衡器创建失败):
子网类型 标签键 标签值 公共 kubernetes.io/role/elb 1 私有 kubernetes.io/role/internal-elb 1
-
子网配置(需要
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 以便更容易访问资源。
-
-
CDK 引导:
初始化 CDK 环境: -
CDK 部署:
-
部署 Dify 企业版:
-
部署 Dify 企业版:
-
更新 AWS EKS 访问权限:
- 导航到 EKS 集群面板,选择”访问”菜单,然后点击”管理访问”:
- 在”管理访问”对话框中,选择”EKS API 和 ConfigMap”,然后点击”保存更改”。
- 在 IAM 访问条目面板中,点击”创建访问条目”:
- 添加你的 IAM 用户并分配以下权限:
AmazonEKSAdminPolicyAmazonEKSAdminViewPolicyAmazonEKSClusterAdminPolicy
-
配置
kubeconfig以本地访问 Kubernetes (K8S) 集群:根据你的部署调整region和name参数:- region: 你的集群部署的 AWS 区域。
- name: EKS 集群名称。
-
数据持久化配置:
修改 Helmvalues.yaml文件。要启用它,按如下方式修改persistence部分,将{your-region-name}和{your-s3-bucket-name}替换为 CDK 创建的资源名称,确保已启用useAwsManagedIam: -
数据库配置:
修改 Helmvalues.yaml文件,删除postgre部分,并按如下方式修改externalPostgres部分,用 AWS Secret Manager 中存储的数据替换{your-postgres-endpoint}和{your-postgres-password}: -
Redis 配置:
修改 Helmvalues.yaml文件,删除redis部分,并按如下方式修改externalRedis部分,用 ElastiCache-Redis OSS caches 控制台中的Primary endpoint替换{your-redis-host}。 注意: 删除Primary endpoint中的端口号 -
向量数据库配置:
修改 Helmvalues.yaml文件,按如下方式修改externalType部分:- 用 AWS Opensearch 实例的 Domain endpoint 替换
{openSearch_endpont},删除https://并使用剩余部分。 - 用你在
.env中设置的值替换<OPENSEARCH_ADMINNAME>和<OPENSEARCH_PASSWORD>
- 用 AWS Opensearch 实例的 Domain endpoint 替换
-
设置 docker 镜像拉取密钥
在安装 Dify 企业版之前,你需要设置 docker 镜像拉取密钥。 注意: 如果你还没有获得用户名和密码,请联系我们,邮箱地址:Support@dify.ai -
TLS 配置
测试环境:
如果你只是在测试部署过程,可以忽略此步骤直接继续。生产环境:
前往 AWSACM为你在 helm chart 配置文件values.yaml中声明的域名申请证书:需要的域名包括:前往你的域名服务提供商(如 cloud flare、aws route53 等)设置cname以证明你对这些域名的所有权。 修改 values.yaml 参数:global.useTLS -
AWS 负载均衡器配置
建议在 Helmvalues.yaml文件中使用 AWS 应用负载均衡器(ALB)进行入口配置。要启用它,按如下方式修改ingress部分: 测试环境:生产环境: 参考:AWS load balancer controller 设置 -
安装 Dify 企业版
Dify 企业版使用 Helm 进行部署。 -
访问 Dify 企业版
测试环境:
设置完成后,获取 ALB 的临时外部 IP。然后将以下行添加到你的/etc/hosts文件中。生产环境
前往你的域名服务提供商,将 DNS 设置为 ALB 地址(在 AWS-EC2-Load Balancer 中获取 alb 的 dns):域名 cname api.xxxx.com <alb_dns> app.xxxx.com <alb_dns> upload.xxxx.com <alb_dns> enterprise.xxxx.com <alb_dns> console.xxxx.com <alb_dns> -
验证安装
警告:在登录 Dify Enterprise Dashboardhttp://enterprise.dify.local之前,你必须先设置 Dify Consolehttp://console.dify.local。-
Dify Console:访问
http://console.dify.local并完成安装。 -
Enterprise Dashboard:访问
http://enterprise.dify.local,使用默认邮箱和密码登录。登录后可以更改密码。
-
Dify Console:访问
销毁
此过程可能需要 20 分钟。销毁
.env 文件中 ENVIRONMENT 下指定环境的部署。
Cloudformation 并执行删除操作。