在 AWS 上安装 OpenShift

Red Hat OpenShift Service on AWS (ROSA) 提供了一个 OpenShift 实例来运行 Keycloak。

关于

本模块旨在自动化通过 ROSA 工具在 AWS 中配置 OpenShift 集群的任务,如 ROSA 安装指南 中所述。脚本位于本仓库的 provision/aws 文件夹中。

它还将安装 EFS 作为 ReadWriteMany PersistentVolumeClaims 的存储提供商,存储类为 efs-sc。有关更多信息,请参见 AWS Elastic File Service 作为 ReadWriteMany 存储

先决条件

  1. 安装 AWS CLI

  2. 安装 OpenTofu

  3. 执行 ROSA 安装指南 中概述的步骤

    1. 在 AWS 账户中启用 ROSA 服务

    2. 下载并安装 ROSA 命令行工具

    3. 为弹性负载均衡器创建服务链接角色

    4. 使用您的 Red Hat 账户令牌登录 ROSA CLI,并创建 AWS 账户角色和策略

    5. 验证您的凭据和配额

安装

安装过程在 provision/aws 文件夹中的 rosa_create_cluster.sh 脚本中自动化,该脚本从环境变量中获取其参数。

它加载预先设置在 aws/ 目录中的 .env 文件中的环境变量。

该脚本通过 rosa create cluster 命令创建 OpenShift 集群,此外,它还创建所需的操作员角色和 OIDC 提供商。安装过程完成后,它会创建一个新的管理员用户。

.env 文件示例
CLUSTER_NAME=rosa-kcb
VERSION=4.13.8
REGION=eu-central-1
COMPUTE_MACHINE_TYPE=c7g.2xlarge
MULTI_AZ=false
REPLICAS=3

如果在配置中未提供 ADMIN_PASSWORD,则它会从 AWS Secrets Manager 中读取。

强制参数

VERSION

OpenShift 集群版本。

REGION

集群应运行的 AWS 区域。

COMPUTE_MACHINE_TYPE

AWS 实例类型,用于默认的 OpenShift 工作节点机器池。

REPLICAS

工作节点数量。如果选择了多可用区安装,则此值必须是区域中可用可用区数量的倍数。例如,如果该区域有 3 个可用区,则副本数需要设置为 3 的倍数。

使用以下命令查找有关区域中可用区的信息

aws ec2 describe-availability-zones --region region-name

可选参数

CLUSTER_NAME

集群的名称。如果未设置,将使用 $(whoami) 命令的值。

ADMIN_PASSWORD

cluster-admin 用户的密码。如果未设置,则从 AWS Secrets Manager 密钥(等于 KEYCLOAK_MASTER_PASSWORD_SECRET_NAME 参数)中获取。

KEYCLOAK_MASTER_PASSWORD_SECRET_NAME

包含 cluster-admin 用户密码的 AWS Secrets Manager 密钥的名称。默认为 keycloak-master-password

查找 URL

要查找有关现有集群及其 URL 的信息,请使用以下命令

rosa list clusters
rosa describe cluster -c cluster-name

重新创建管理员用户

上述安装脚本会自动创建一个管理员用户,但如果需要重新创建用户,可以通过 rosa_recreate_admin.sh 脚本完成,并提供 CLUSTER_NAME 和可选的 ADMIN_PASSWORD 参数。

按需伸缩集群节点

节点的标准设置可能太小,无法运行负载测试,同时使用不同的实例类型并重建集群需要很长时间(约 45 分钟)。为了按需伸缩集群,标准设置有一个名为 scaling 的机器池,其实例类型为 c7g.2xlarge,该机器池根据当前需求自动伸缩,范围为 4 到 15 个实例。但是,工作节点的自动伸缩非常耗时,因为节点是逐个伸缩的。

要使用不同的实例类型,请使用 rosa create machinepool 创建其他机器池

AWS Elastic File Service 作为 ReadWriteMany 存储

此设置安装 EFS 作为 ReadWriteMany PersistentVolumeClaims 的存储提供商,存储类为 efs-sc

使用脚本 rosa_efs_create.shrosa_efs_delete.sh,可以添加和删除 EFS 配置。这些脚本旨在分别从 rosa_create_cluster.shrosa_delete_cluster.sh 中调用。

即使脚本已完成,也可能需要一段时间,PVC 中的 DNS 才会获取挂载点的新 IP 地址。在此期间,您可能会看到类似“Failed to resolve server file-system-id.efs.aws-region.amazonaws.com”的错误消息。

以下文档已被用于设置 EFS

轮换管理员用户密码

管理员用户密码可以通过 rosa_rotate_admin_password.sh 脚本轮换。请注意,现有集群的管理员密码不会更新。可以使用脚本 rosa_recreate_admin.sh 和相应的 CLUSTER_NAME 变量应用新密码。

卸载

卸载由 rosa_delete_cluster.sh 脚本处理。

唯一必需的参数是 CLUSTER_NAME

此外,它还会删除集群的操作员角色和 OIDC 提供商,以及管理员用户。