部署解决方案
在部署解决方案之前,建议您先查看本指南中有关架构图和区域支持等信息,然后按照下面的说明配置解决方案并将其部署到您的帐户中。
部署时间:大约 30 分钟
前提条件
确保您要部署解决方案的目标区域满足以下条件:
- 若部署在中国区,需要已有被 ICP 备案的域名并用于申请 ACM 证书。
- 域名的证书在 ACM 中创建,并通过域名进行验证。
- 具有 4 个子网(包括两个公有子网和两个私有子网)和 NAT 网关的 VPC。
- 在 AWS 服务 中所列出的所有AWS服务均可用。
部署概述
使用以下步骤在 AWS 上部署此解决方案:
步骤 1. 创建 ACM 证书
为了确保 Keycloak 可以连接到 Cognito 身份池,需要确保 Keycloak 提供 HTTPS 服务。这意味着必须使用 ACM 证书或第三方证书。有关如何使用的详细信息,请参阅如何上载 SSL 证书并将其导入 AWS Identity and Access Management (IAM)。
本指南以 AWS Certificate Manager (ACM) 的使用为例。有关 ACM 的更多信息,请参阅 [Amazon Certificate Manager][Amazon Certificate Manager]。
-
登录 AWS Certificate Manager 控制台。
-
在顶部的导航栏中,选择 Keycloak 想要部署的区域。
-
在左侧的导航窗中,选择列出证书。
-
选择请求。
-
如果您选择从全球区域部署解决方案,为证书类型选择请求公有证书。如果您选择从中国区域部署解决方案,仅有一个选项请求公有证书,选择该选项。然后选择下一步。
-
选择下一步。
-
在请求公有证书页面,完成以下配置:
- 在域名中输入您的 Keycloak 的域名,例如 keycloak.yourdomain.com。
- 修改 选择验证方法 为 DNS 验证 - 推荐。
-
选择请求。
-
查看证书列表,新申请的证书 ID 的状态处于等待验证。
-
点击新申请的证书 ID 查看详细信息。在新打开的页面中记录以下内容:
- 状态中的 ARN。
- 域中的 CNAME 名称。
- 域中的 CNAME 值。
步骤 2. 验证域所有权
NOTE: 以下内容为通过 Route 53 验证域名所有权。如果您使用其他域名服务器 (DNS),请参考 DNS 提供商文档来验证您的域名所有权。
将 CNAME 记录添加到 Route 53 以验证域名是否归您所有并可供您使用。如果未创建托管区域,请参考将 Amazon Route 53 配置为 DNS 服务。
-
登录 Amazon Route 53 控制台。
-
在左侧的导航窗中,选择托管区域。
-
点击域名查看详细信息,在新打开的页面中点击创建记录 ,并完成以下操作:
- 在记录名称中输入步骤 1. 创建 ACM 证书 中记录的 CNAME name,例如 _5db1a2688389b3b76ef6e2accaf9a85d.keycloak.yourdomain.com。
- 修改记录类型为 CNAME。
- 在 值 中输入 步骤 1. 创建 ACM 证书 中记录的 CNAME value ,例如 _1e9108227615sd40f3a767a9dc7a29cb.bpxxncpwjz.acm-validations.aws。
-
选择创建记录。
-
返回到 AWS Certificate Manager 控制台并等待大约5分钟,点击刷新 按钮,直到 ACM 证书的状态变为已颁发。
步骤 3. 启动堆栈
为满足不同用户的需求,共有 4 种部署方式供您选择。
对于 Aurora Serverless 选项,CloudFormation 模板中默认使用 Aurora Serverless v2 MySQL-Compatible。有关更多信息,请参阅Aurora Serverless v2 和 Aurora Serverless v1 的比较。
选项 | VPC | 数据库 | 快速启动 | 模板链接 |
---|---|---|---|---|
选项一:从现有的 VPC 中部署基于 Aurora Serverless MySQL-Compatible 的 Keycloak | 现有 | Aurora Serverless MySQL-Compatible | 海外区域 中国区域 | 下载 |
选项二:从新的 VPC 中部署基于 Aurora Serverless MySQL-Compatible 的 Keycloak | 新建 | Aurora Serverless MySQL-Compatible | 海外区域 中国区域 | 下载 |
选项三:从现有的 VPC 中部署基于 Aurora MySQL-Compatible 的 Keycloak | 现有 | Aurora MySQL-Compatible | 海外区域 中国区域 | 下载 |
选项四:从新的 VPC 中部署基于 Aurora MySQL-Compatible 的 Keycloak | 新建 | Aurora MySQL-Compatible | 海外区域 中国区域 | 下载 |
选项一:从现有的 VPC 中部署基于 Aurora Serverless MySQL-Compatible 的 Keycloak
-
登录 AWS CloudFormation 控制台。
-
在左侧的导航窗中选择堆栈。
-
点击创建堆栈并选择使用新资源(标准)。
-
在指定模板部分执行以下操作:
- 修改准备模板为模板已就绪。
- 修改模板源为上传模板文件。
- 点击选择文件并选择您下载的模板文件,例如 keycloak-aurora-serverless-from-existing-vpc.template 。
-
选择下一步。
-
在指定堆栈详细信息部分执行以下操作:
- 堆栈名称: 输入堆栈名称, 例如 KeycloakOnAWS 。
- CertificateArn: 输入步骤 1. 创建 ACM 证书中记录的 ARN,例如 arn:aws:acm:us-west-2:1436237113227:certificate/571518b3-123b-4502-1ec3-3t2sae704272。
- Hostname: 输入您的 Keycloak 的域名。若部署在中国区,域名需经过 ICP 备案。
- VpcId: 选择现有的VPC 。
- PubSubnets: 选择用于部署ALB的公有子网。
- PrivSubnets: 选择用于部署ECS的私有子网。
- DBSubnets: 选择用于部署数据库的私有子网。
- TaskCPU: 为运行keycloak应用的Fargate Task指定CPU,默认为4096 (4 vCPU)。详见Task CPU和内存。
- TaskMemory: 为运行keycloak应用的Fargate Task指定内存,默认为8192 MiB (8 GB)。请注意该值必须在您选择的TaskCPU允许的范围内,详见Task CPU和内存。
- MinContainers: ECS容器的最小数量,默认值是2。
- MaxContainers: ECS容器的最大数量,默认值是10。
- AutoScalingTargetCpuUtilization: 弹性伸缩的CPU利用率百分比,默认值是75,最大值是100。
- JavaOpts: JAVA_OPTS 参数。
-
选择下一步。
-
在配置堆栈选项 中可以添加 tags 。
-
选择下一步。
-
评审堆栈的配置信息,如您已确定配置信息,请勾选 我确认,Amazon CloudFormation 可能创建 IAM 资源。
-
选择创建堆栈。
选项二:从新的 VPC 中部署基于 Aurora Serverless MySQL-Compatible 的 Keycloak
-
登录 AWS CloudFormation 控制台。
-
在左侧的导航窗中选择堆栈。
-
点击创建堆栈并选择使用新资源(标准)。
-
在指定模板部分执行以下操作:
- 修改准备模板为模板已就绪。
- 修改模板源为上传模板文件。
- 点击选择文件并选择您下载的模板文件,例如 keycloak-aurora-serverless-from-new-vpc.template 。
-
选择下一步。
-
在指定堆栈详细信息部分执行以下操作:
- 堆栈名称: 输入堆栈名称, 例如 KeycloakOnAWS 。
- CertificateArn: 输入 步骤 1. 创建 ACM 证书 中记录的 ARN,例如 arn:aws:acm:us-west-2:1436237113227:certificate/571518b3-123b-4502-1ec3-3t2sae704272。
- Hostname: 输入您的 Keycloak 的域名。若部署在中国区,域名需经过 ICP 备案。
- TaskCPU: 为运行keycloak应用的Fargate Task指定CPU,默认为4096 (4 vCPU)。详见Task CPU和内存。
- TaskMemory: 为运行keycloak应用的Fargate Task指定内存,默认为8192 MiB (8 GB)。请注意该值必须在您选择的TaskCPU允许的范围内,详见Task CPU和内存。
- MinContainers: ECS容器的最小数量,默认值是2。
- MaxContainers: ECS容器的最大数量,默认值是10。
- AutoScalingTargetCpuUtilization: 弹性伸缩的CPU利用率百分比,默认值是75,最大值是100。
- JavaOpts: JAVA_OPTS 参数。
-
选择下一步。
-
在配置堆栈选项 中可以添加 tags 。
-
选择下一步。
-
评审堆栈的配置信息,如您已确定配置信息,请勾选 我确认,Amazon CloudFormation 可能创建 IAM 资源。
-
选择创建堆栈。
选项三:从现有的 VPC 中部署基于 Aurora MySQL-Compatible 的 Keycloak
-
登录 AWS CloudFormation 控制台。
-
在左侧的导航窗中选择堆栈。
-
点击创建堆栈并选择使用新资源(标准)。
-
在指定模板部分执行以下操作:
- 修改准备模板为模板已就绪。
- 修改模板源为上传模板文件。
- 点击选择文件并选择您下载的模板文件,例如 keycloak-from-existing-vpc.template 。
-
选择下一步。
-
在指定堆栈详细信息部分执行以下操作:
- 堆栈名称: 输入堆栈名称, 例如 KeycloakOnAWS 。
- CertificateArn: 输入 步骤 1. 创建 ACM 证书 中记录的 ARN,例如 arn:aws:acm:us-west-2:1436237113227:certificate/571518b3-123b-4502-1ec3-3t2sae704272。
- Hostname: 输入您的 Keycloak 的域名。若部署在中国区,域名需经过 ICP 备案。
- DatabaseInstanceType: 选择数据库实例类型。
- VpcId: 选择现有的VPC 。
- PubSubnets: 选择用于部署ALB的公有子网。
- PrivSubnets: 选择用于部署ECS的私有子网。
- DBSubnets: 选择用于部署数据库的私有子网。
- TaskCPU: 为运行keycloak应用的Fargate Task指定CPU,默认为4096 (4 vCPU)。详见Task CPU和内存。
- TaskMemory: 为运行keycloak应用的Fargate Task指定内存,默认为8192 MiB (8 GB)。请注意该值必须在您选择的TaskCPU允许的范围内,详见Task CPU和内存。
- MinContainers: ECS容器的最小数量,默认值是2。
- MaxContainers: ECS容器的最大数量,默认值是10。
- AutoScalingTargetCpuUtilization: 弹性伸缩的CPU利用率百分比,默认值是75,最大值是100。
- JavaOpts: JAVA_OPTS 参数。
-
选择下一步。
-
在第3步 配置堆栈选项 中可以添加 tags 。
-
选择下一步。
-
评审堆栈的配置信息,如您已确定配置信息,请勾选 我确认,Amazon CloudFormation 可能创建 IAM 资源。
-
选择创建堆栈。
选项四:从新的 VPC 中部署基于 Aurora MySQL-Compatible 的 Keycloak
-
登录 AWS CloudFormation 控制台。
-
在左侧的导航窗中选择堆栈。
-
点击创建堆栈并选择使用新资源(标准)。
-
在指定模板部分执行以下操作:
- 修改准备模板为模板已就绪。
- 修改模板源为上传模板文件。
- 点击选择文件并选择您下载的模板文件,例如 keycloak-from-new-vpc.template 。
-
选择下一步。
-
在指定堆栈详细信息部分执行以下操作:
- 堆栈名称: 输入堆栈名称, 例如 KeycloakOnAWS 。
- CertificateArn: 输入 步骤 1. 创建 ACM 证书 中记录的 ARN,例如 arn:aws:acm:us-west-2:1436237113227:certificate/571518b3-123b-4502-1ec3-3t2sae704272。
- Hostname: 输入您的 Keycloak 的域名。若部署在中国区,域名需经过 ICP 备案。
- DatabaseInstanceType: 选择数据库实例类型。
- TaskCPU: 为运行keycloak应用的Fargate Task指定CPU,默认为4096 (4 vCPU)。详见Task CPU和内存。
- TaskMemory: 为运行keycloak应用的Fargate Task指定内存,默认为8192 MiB (8 GB)。请注意该值必须在您选择的TaskCPU允许的范围内,详见Task CPU和内存。
- MinContainers: ECS容器的最小数量,默认值是2。
- MaxContainers: ECS容器的最大数量,默认值是10。
- AutoScalingTargetCpuUtilization: 弹性伸缩的CPU利用率百分比,默认值是75,最大值是100。
- JavaOpts: JAVA_OPTS 参数。
-
选择下一步。
-
在配置堆栈选项 中可以添加 tags 。
-
选择下一步。
-
评审堆栈的配置信息,如您已确定配置信息,请勾选 我确认,Amazon CloudFormation 可能创建 IAM 资源。
-
选择创建堆栈。
步骤 4. 在 Route 53 中创建记录以解析域名
-
登录 AWS CloudFormation 控制台。
-
在左侧的导航窗中选择堆栈。
-
选择新建的堆栈名称查看详细信息。
-
选择输出。
-
在搜索框中输入 KeyCloakKeyCloakContainerSerivceEndpointURL 并敲击回车,复制返回结果中的值,例如 Keycl-KeyCl-1WIJGTSV19UTB-541714271.xx-xxx-1.elb.amazonaws.com。
-
登录 Amazon Route 53 控制台。
-
在左侧的导航窗中选择托管区域。
-
点击域名查看详细信息。在新打开的页面中点击创建记录并执行以下操作:
- 在记录名称中输入Keycloak的子域名,例如 keycloak.yourdomain.com 。
- 修改记录类型 为 CNAME 。
- 在值中输入第5步中复制的KeyCloakKeyCloakContainerSerivceEndpointURL 的 值 ,例如 Keycl-KeyCl-1WIJGTSV19UTB-541714271.xx-xxx-1.elb.amazonaws.com 。
-
选择创建记录。
步骤 5. 访问 Keycloak Web 控制台
-
登录 AWS Secrets Manager 控制台 。
-
在顶部的导航栏中选择您的Keycloak部署的区域。
-
在左侧的导航窗中选择密钥。
-
在过滤框中输入 KeyCloakKCSecret 并敲击回车。点击查询出的结果,例如 KeyCloakKCSecretF8498E5C-VVSujKlsllRI 。
-
点击密钥值中的检索密钥值按钮。
-
复制 username 和 password 。
-
在浏览器中输入您的 Keycloak 域名,例如 https://keycloak.yourdomain.com 。
-
点击 Administration Console 链接 。
-
输入第6步中复制的 username 和 password ,点击 Sign In 。