1.4. 为 Red Hat OpenShift Service on AWS 集群创建虚拟私有云
您必须有一个 AWS Virtual Private Cloud (VPC)才能在 AWS 集群上创建 Red Hat OpenShift Service。您可以使用以下方法创建 VPC:
- 使用 ROSA CLI 创建 VPC
- 使用 Terraform 模板创建 VPC
- 在 AWS 控制台中手动创建 VPC 资源
Terraform 指令用于测试和演示目的。您自己的安装需要对 VPC 的一些修改才能自行使用。您还应确保使用此链接的 Terraform 配置时,它位于您要安装集群的同一区域。在这些示例中,使用了 us-east-2。
1.4.1. 使用 ROSA CLI 创建 AWS VPC 复制链接链接已复制到粘贴板!
rosa create network 命令在 ROSA CLI 的 v.1.2.48 或更高版本中提供。命令使用 AWS CloudFormation 创建 VPC 以及在 AWS 集群上安装 Red Hat OpenShift Service 所需的相关网络组件。CloudFormation 是一个原生 AWS 基础架构即代码工具,与 AWS CLI 兼容。
如果没有指定模板,CloudFormation 将使用以下参数来创建资源的默认模板:
| VPC 参数 | value |
|---|---|
| 可用区 | 1 |
| 区域 |
|
| VPC CIDR |
|
您可以创建和自定义 CloudFormation 模板,以用于 rosa create network 命令。如需有关默认 VPC 模板的信息,请参阅本节的其他资源。
先决条件
- 您已配置了 AWS 帐户
- 您已配置了您的红帽帐户
- 已安装 ROSA CLI 并将其配置为最新版本
流程
运行以下命令,使用默认的 CloudFormations 模板创建 AWS VPC:
$ rosa create network可选:通过指定附加参数来自定义 VPC。
您可以使用-
-param标志指定对默认 VPC 模板的更改。以下示例命令为region、Name、AvailabilityZoneCount和VpcCidr指定自定义值。$ rosa create network --param Region=us-east-2 --param Name=quickstart-stack --param AvailabilityZoneCount=3 --param VpcCidr=10.0.0.0/16该命令需要大约 5 分钟来运行,并在创建资源时从 AWS 提供常规状态更新。如果 CloudFormation 存在问题,则会尝试回滚。对于遇到的所有其他错误,请按照错误消息说明或联系 AWS 支持。
验证
完成后,您会收到创建的资源概述:
INFO[0140] Resources created in stack: INFO[0140] Resource: AttachGateway, Type: AWS::EC2::VPCGatewayAttachment, ID: <gateway_id> INFO[0140] Resource: EC2VPCEndpoint, Type: AWS::EC2::VPCEndpoint, ID: <vpce_id> INFO[0140] Resource: EcrApiVPCEndpoint, Type: AWS::EC2::VPCEndpoint, ID: <vpce_id> INFO[0140] Resource: EcrDkrVPCEndpoint, Type: AWS::EC2::VPCEndpoint, ID: <vpce_id> INFO[0140] Resource: ElasticIP1, Type: AWS::EC2::EIP, ID: <IP> INFO[0140] Resource: ElasticIP2, Type: AWS::EC2::EIP, ID: <IP> INFO[0140] Resource: InternetGateway, Type: AWS::EC2::InternetGateway, ID: igw-016e1a71b9812464e INFO[0140] Resource: KMSVPCEndpoint, Type: AWS::EC2::VPCEndpoint, ID: <vpce_id> INFO[0140] Resource: NATGateway1, Type: AWS::EC2::NatGateway, ID: <nat-gateway_id> INFO[0140] Resource: PrivateRoute, Type: AWS::EC2::Route, ID: <route_id> INFO[0140] Resource: PrivateRouteTable, Type: AWS::EC2::RouteTable, ID: <route_id> INFO[0140] Resource: PrivateSubnetRouteTableAssociation1, Type: AWS::EC2::SubnetRouteTableAssociation, ID: <route_id> INFO[0140] Resource: PublicRoute, Type: AWS::EC2::Route, ID: <route_id> INFO[0140] Resource: PublicRouteTable, Type: AWS::EC2::RouteTable, ID: <route_id> INFO[0140] Resource: PublicSubnetRouteTableAssociation1, Type: AWS::EC2::SubnetRouteTableAssociation, ID: <route_id> INFO[0140] Resource: S3VPCEndpoint, Type: AWS::EC2::VPCEndpoint, ID: <vpce_id> INFO[0140] Resource: STSVPCEndpoint, Type: AWS::EC2::VPCEndpoint, ID: <vpce_id> INFO[0140] Resource: SecurityGroup, Type: AWS::EC2::SecurityGroup, ID: <security-group_id> INFO[0140] Resource: SubnetPrivate1, Type: AWS::EC2::Subnet, ID: <private_subnet_id-1> \1 INFO[0140] Resource: SubnetPublic1, Type: AWS::EC2::Subnet, ID: <public_subnet_id-1> \2 INFO[0140] Resource: VPC, Type: AWS::EC2::VPC, ID: <vpc_id> INFO[0140] Stack rosa-network-stack-5555 created \3
1.4.1.1. 使用 Terraform 创建虚拟私有云 复制链接链接已复制到粘贴板!
Terraform 是一个工具,可让您使用已建立的模板创建各种资源。以下流程根据需要使用默认选项在 AWS 集群上创建 Red Hat OpenShift Service。有关使用 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>运行以下命令应用此计划文件来构建 VPC:
$ terraform apply rosa.tfplan可选:您可以通过运行以下命令捕获在创建 Red Hat OpenShift Service on AWS 集群时要使用的 Terraform-provisioned private、public 和 machinepool 子网 ID 的值:
$ export SUBNET_IDS=$(terraform output -raw cluster-subnets-string)使用以下命令验证变量是否已正确设置:
$ echo $SUBNET_IDS输出示例
$ subnet-0a6a57e0f784171aa,subnet-078e84e5b10ecf5b0
1.4.2. 手动创建 AWS Virtual Private Cloud 复制链接链接已复制到粘贴板!
如果您选择手动创建 AWS Virtual Private Cloud (VPC)而不是使用 Terraform,请访问 AWS 控制台中的 VPC 页面。
您的 VPC 必须满足下表中显示的要求。
| 要求 | 详情 |
|---|---|
| VPC 名称 | 创建集群时,您需要具有特定的 VPC 名称和 ID。 |
| CIDR 范围 | 您的 VPC CIDR 范围应该与您的机器 CIDR 匹配。 |
| 可用区 | 您需要一个区域的可用区,并且需要三个用于多区的可用区。 |
| 公共子网 | 您必须有一个公共子网,其中包含公共集群的 NAT 网关。私有集群不需要公共子网。 |
| DNS 主机名和解析 | 您必须确保启用 DNS 主机名和解析。 |