1.3. 带有 HCP 先决条件的 ROSA
要使用 HCP 集群创建 ROSA,您必须有以下项目:
- 配置的虚拟私有云(VPC)
- 帐户范围内的角色
- OIDC 配置
- Operator 角色
1.3.1. 使用 HCP 集群为您的 ROSA 创建虚拟私有云
您必须有一个 Virtual Private Cloud (VPC)才能使用 HCP 集群创建 ROSA。您可以使用以下方法创建 VPC:
- 使用 Terraform 模板创建 VPC
- 在 AWS 控制台中手动创建 VPC 资源
Terraform 指令用于测试和演示目的。您自己的安装需要对 VPC 进行一些修改,以便您自己的使用。您还应确保在使用这个 Terraform 脚本时,它位于您要安装集群的同一区域。在这些示例中,使用 us-east-2。
使用 Terraform 创建虚拟私有云
Terraform 是一个工具,允许您使用已建立的模板创建各种资源。以下过程使用默认选项来创建带有 HCP 集群的 ROSA。有关使用 Terraform 的更多信息,请参阅其他资源。
先决条件
- 您已在机器上安装 Terraform 版本 1.4.0 或更新版本。
- 您已在机器上安装了 Git。
流程
运行以下命令,打开 shell 提示符并克隆 Terraform VPC 存储库:
$ git clone https://github.com/openshift-cs/terraform-vpc-example
运行以下命令进入创建的目录:
$ cd terraform-vpc-example
运行以下命令来启动 Terraform 文件:
$ terraform init
此进程完成后会出现确认初始化的消息。
要基于现有的 Terraform 模板构建 VPC Terraform 计划,请运行
plan命令。您必须包含 AWS 区域。您可以选择指定集群名称。在terraform plan完成后,一个rosa.tfplan文件会被添加到hypershift-tf目录。有关更详细的选项,请参阅 Terraform VPC 存储库的 README 文件。$ terraform plan -out rosa.tfplan -var region=<region> [-var cluster_name=<cluster_name>]
运行以下命令应用此计划文件来构建 VPC:
$ terraform apply rosa.tfplan
可选: 您可以运行以下命令来捕获 Terraform-provisioned private、public 和 machinepool 子网 ID 的值作为环境变量,以便在使用 HCP 集群创建 ROSA 时使用:
$ export SUBNET_IDS=$(terraform output -raw cluster-subnets-string)
验证
您可以使用以下命令验证变量是否已正确设置:
$ echo $SUBNET_IDS
输出示例
$ subnet-0a6a57e0f784171aa,subnet-078e84e5b10ecf5b0
其他资源
- 有关自定义 VPC 时可用选项的详细列表,请参阅 Terraform VPC 存储库。
手动创建虚拟私有云
如果您选择手动创建 Virtual Private Cloud (VPC)而不是使用 Terraform,请访问 AWS 控制台中的 VPC 页面。您的 VPC 必须满足下表中显示的要求。
表 1.3. VPC 的要求
| 要求 | 详情 |
|---|---|
| VPC 名称 | 创建集群时需要具有特定的 VPC 名称和 ID。 |
| CIDR 范围 | 您的 VPC CIDR 范围应该与您的机器 CIDR 匹配。 |
| 可用区 | 单个区需要一个可用区,对于多区的可用区需要三个可用区。 |
| 公共子网 | 您必须有一个带有 NAT 网关的公共子网。 |
| DNS 主机名和解析 | 您必须确保启用 DNS 主机名和解析。 |
1.3.2. 创建集群范围的 STS 角色和策略
在使用 Red Hat OpenShift Service on AWS (ROSA) CLI ( rosa )创建带有托管 control plane (HCP)集群的 Red Hat OpenShift Service on AWS (ROSA)前,请创建所需的帐户范围角色和策略,包括 Operator 策略。
先决条件
- 您已使用 HCP 为 ROSA 完成 AWS 的先决条件。
- 您有可用的 AWS 服务配额。
- 您已在 AWS 控制台中启用了 ROSA 服务。
您已在安装主机上安装并配置了最新的 ROSA CLI (
rosa)。注意要使用 HCP 集群成功安装 ROSA,请使用 ROSA CLI 的最新版本(
rosa)。- 已使用 ROSA CLI 登录您的红帽帐户。
流程
如果您的 AWS 帐户中不存在它们,请运行以下命令来创建所需的帐户范围内的 STS 角色和策略:
$ rosa create account-roles --force-policy-creation
--force-policy-creation参数更新存在的现有角色和策略。如果没有角色和策略,该命令会创建这些资源。
1.3.3. 创建 OpenID Connect 配置
当将 ROSA 与 HCP 集群搭配使用时,您必须先创建 OpenID Connect (OIDC)配置。此配置已注册到 OpenShift Cluster Manager。
先决条件
- 您已使用 HCP 为 ROSA 完成 AWS 的先决条件。
- 您已完成了 Red Hat OpenShift Service on AWS 的 AWS 的先决条件。
-
您已在安装主机上安装并配置了最新的 Red Hat OpenShift Service on AWS (ROSA) CLI
rosa。
流程
要创建 OIDC 配置和 AWS 资源,请运行以下命令:
$ rosa create oidc-config --mode=auto --yes
此命令返回以下信息:
输出示例
? Would you like to create a Managed (Red Hat hosted) OIDC Configuration Yes I: Setting up managed OIDC configuration I: To create Operator Roles for this OIDC Configuration, run the following command and remember to replace <user-defined> with a prefix of your choice: rosa create operator-roles --prefix <user-defined> --oidc-config-id 13cdr6b If you are going to create a Hosted Control Plane cluster please include '--hosted-cp' I: Creating OIDC provider using 'arn:aws:iam::4540112244:user/userName' ? Create the OIDC provider? Yes I: Created OIDC provider with ARN 'arn:aws:iam::4540112244:oidc-provider/dvbwgdztaeq9o.cloudfront.net/13cdr6b'
在创建集群时,您必须提供 OIDC 配置 ID。CLI 输出为
--mode auto提供这个值,否则您必须根据--mode manual的awsCLI 输出来确定这些值。可选: 您可以将 OIDC 配置 ID 保存为变量,以便稍后使用。运行以下命令来保存变量:
$ export OIDC_ID=30f5dqmk
使用以下命令查看变量的值:
$ echo $OIDC_ID
输出示例
$ 30f5dqmk
验证
您可以列出与用户机构关联的集群可用的 OIDC 配置。运行以下命令:
$ rosa list oidc-config
输出示例
ID MANAGED ISSUER URL SECRET ARN 2330dbs0n8m3chkkr25gkkcd8pnj3lk2 true https://dvbwgdztaeq9o.cloudfront.net/2330dbs0n8m3chkkr25gkkcd8pnj3lk2 233hvnrjoqu14jltk6lhbhf2tj11f8un false https://oidc-r7u1.s3.us-east-1.amazonaws.com aws:secretsmanager:us-east-1:242819244:secret:rosa-private-key-oidc-r7u1-tM3MDN
1.3.4. 创建 Operator 角色和策略
当将 ROSA 与 HCP 集群搭配使用时,您必须创建带有托管 control plane (HCP)部署的 Red Hat OpenShift Service on AWS (ROSA)所需的 Operator IAM 角色。集群 Operator 使用 Operator 角色获取执行集群操作所需的临时权限,如管理后端存储、云供应商凭证和对集群的外部访问权限。
先决条件
- 您已使用 HCP 为 ROSA 完成 AWS 的先决条件。
-
您已在安装主机上安装并配置了最新的 Red Hat OpenShift Service on AWS (ROSA) CLI
rosa。 - 您创建了集群范围的 AWS 角色。
流程
要创建 Operator 角色,请运行以下命令:
$ rosa create operator-roles --hosted-cp --prefix <prefix-name> --oidc-config-id <oidc-config-id>
以下分类提供了 Operator 角色创建的选项。
$ rosa create operator-roles --hosted-cp --prefix <prefix-name> 1 --oidc-config-id <oidc-config-id> 2
您必须包含
--hosted-cp参数,以使用 HCP 集群为 ROSA 创建正确的角色。此命令返回以下信息:输出示例
? Role creation mode: auto ? Operator roles prefix: <pre-filled_prefix> 1 ? OIDC Configuration ID: 23soa2bgvpek9kmes9s7os0a39i13qm4 | https://dvbwgdztaeq9o.cloudfront.net/23soa2bgvpek9kmes9s7os0a39i13qm4 2 ? Create hosted control plane operator roles: Yes W: More than one Installer role found ? Installer role ARN: arn:aws:iam::4540112244:role/<prefix>-Installer-Role ? Permissions boundary ARN (optional): I: Reusable OIDC Configuration detected. Validating trusted relationships to operator roles: I: Creating roles using 'arn:aws:iam::4540112244:user/<userName>' I: Created role '<prefix>-openshift-cluster-csi-drivers-ebs-cloud-credentials' with ARN 'arn:aws:iam::4540112244:role/<prefix>-openshift-cluster-csi-drivers-ebs-cloud-credentials' I: Created role '<prefix>-openshift-cloud-network-config-controller-cloud-credenti' with ARN 'arn:aws:iam::4540112244:role/<prefix>-openshift-cloud-network-config-controller-cloud-credenti' I: Created role '<prefix>-kube-system-kube-controller-manager' with ARN 'arn:aws:iam::4540112244:role/<prefix>-kube-system-kube-controller-manager' I: Created role '<prefix>-kube-system-capa-controller-manager' with ARN 'arn:aws:iam::4540112244:role/<prefix>-kube-system-capa-controller-manager' I: Created role '<prefix>-kube-system-control-plane-operator' with ARN 'arn:aws:iam::4540112244:role/<prefix>-kube-system-control-plane-operator' I: Created role '<prefix>-kube-system-kms-provider' with ARN 'arn:aws:iam::4540112244:role/<prefix>-kube-system-kms-provider' I: Created role '<prefix>-openshift-image-registry-installer-cloud-credentials' with ARN 'arn:aws:iam::4540112244:role/<prefix>-openshift-image-registry-installer-cloud-credentials' I: Created role '<prefix>-openshift-ingress-operator-cloud-credentials' with ARN 'arn:aws:iam::4540112244:role/<prefix>-openshift-ingress-operator-cloud-credentials' I: To create a cluster with these roles, run the following command: rosa create cluster --sts --oidc-config-id 23soa2bgvpek9kmes9s7os0a39i13qm4 --operator-roles-prefix <prefix> --hosted-cp
Operator 角色现已创建,并可用于使用 HCP 集群创建 ROSA。
验证
您可以列出与 ROSA 帐户关联的 Operator 角色。运行以下命令:
$ rosa list operator-roles
输出示例
I: Fetching operator roles ROLE PREFIX AMOUNT IN BUNDLE <prefix> 8 ? Would you like to detail a specific prefix Yes 1 ? Operator Role Prefix: <prefix> ROLE NAME ROLE ARN VERSION MANAGED <prefix>-kube-system-capa-controller-manager arn:aws:iam::4540112244:role/<prefix>-kube-system-capa-controller-manager 4.13 No <prefix>-kube-system-control-plane-operator arn:aws:iam::4540112244:role/<prefix>-kube-system-control-plane-operator 4.13 No <prefix>-kube-system-kms-provider arn:aws:iam::4540112244:role/<prefix>-kube-system-kms-provider 4.13 No <prefix>-kube-system-kube-controller-manager arn:aws:iam::4540112244:role/<prefix>-kube-system-kube-controller-manager 4.13 No <prefix>-openshift-cloud-network-config-controller-cloud-credenti arn:aws:iam::4540112244:role/<prefix>-openshift-cloud-network-config-controller-cloud-credenti 4.13 No <prefix>-openshift-cluster-csi-drivers-ebs-cloud-credentials arn:aws:iam::4540112244:role/<prefix>-openshift-cluster-csi-drivers-ebs-cloud-credentials 4.13 No <prefix>-openshift-image-registry-installer-cloud-credentials arn:aws:iam::4540112244:role/<prefix>-openshift-image-registry-installer-cloud-credentials 4.13 No <prefix>-openshift-ingress-operator-cloud-credentials arn:aws:iam::4540112244:role/<prefix>-openshift-ingress-operator-cloud-credentials 4.13 No- 1
- 命令运行后,它会显示与 AWS 帐户关联的所有前缀,并记下与这个前缀关联的角色数量。如果您需要查看所有这些角色及其详情,请在详细信息提示符处输入"是",使这些角色按特定情况列出。
其他资源