第 1 章 创建集群研讨会
1.1. 创建集群 复制链接链接已复制到粘贴板!
按照以下步骤在 AWS 集群上部署示例 Red Hat OpenShift Service。然后您可以在下一研讨会中使用集群。
1.1.1. 研讨会目标 复制链接链接已复制到粘贴板!
本研讨会将指导您如何创建集群以及所有必需的先决条件。
了解如何创建集群先决条件:
- 创建虚拟私有云(VPC)示例
- 创建 OpenID Connect (OIDC)资源示例
- 创建示例环境变量
- 在 AWS 集群上部署示例 Red Hat OpenShift Service
1.1.1.1. 先决条件 复制链接链接已复制到粘贴板!
- Red Hat OpenShift Service on AWS 版本 1.2.31 或更高版本
- Amazon Web Service (AWS)命令行界面(CLI)
-
ROSA 命令行界面(CLI) (
rosa)
1.1.2. 创建 VPC 复制链接链接已复制到粘贴板!
在 AWS 集群上部署 Red Hat OpenShift Service 前,您必须同时具有 VPC 和 OIDC 资源。首先我们将创建这些资源。Red Hat OpenShift Service on AWS 使用自带 VPC (BYO-VPC)模型。
流程
确保您的 AWS CLI (
aws)被配置为使用 Red Hat OpenShift Service on AWS 可用区域。运行以下命令,查看 AWS CLI 支持的区域:$ rosa list regions --hosted-cp创建 VPC。在本研讨会中,以下 脚本 会创建 VPC 及其所需组件。它使用
awsCLI 中配置的区域。#!/bin/bash set -e ########## # This script will create the network requirements for a ROSA cluster. This will be # a public cluster. This creates: # - VPC # - Public and private subnets # - Internet Gateway # - Relevant route tables # - NAT Gateway # # This will automatically use the region configured for the aws cli # ########## VPC_CIDR=10.0.0.0/16 PUBLIC_CIDR_SUBNET=10.0.1.0/24 PRIVATE_CIDR_SUBNET=10.0.0.0/24 # Create VPC echo -n "Creating VPC..." VPC_ID=$(aws ec2 create-vpc --cidr-block $VPC_CIDR --query Vpc.VpcId --output text) # Create tag name aws ec2 create-tags --resources $VPC_ID --tags Key=Name,Value=$CLUSTER_NAME # Enable dns hostname aws ec2 modify-vpc-attribute --vpc-id $VPC_ID --enable-dns-hostnames echo "done." # Create Public Subnet echo -n "Creating public subnet..." PUBLIC_SUBNET_ID=$(aws ec2 create-subnet --vpc-id $VPC_ID --cidr-block $PUBLIC_CIDR_SUBNET --query Subnet.SubnetId --output text) aws ec2 create-tags --resources $PUBLIC_SUBNET_ID --tags Key=Name,Value=$CLUSTER_NAME-public echo "done." # Create private subnet echo -n "Creating private subnet..." PRIVATE_SUBNET_ID=$(aws ec2 create-subnet --vpc-id $VPC_ID --cidr-block $PRIVATE_CIDR_SUBNET --query Subnet.SubnetId --output text) aws ec2 create-tags --resources $PRIVATE_SUBNET_ID --tags Key=Name,Value=$CLUSTER_NAME-private echo "done." # Create an internet gateway for outbound traffic and attach it to the VPC. echo -n "Creating internet gateway..." IGW_ID=$(aws ec2 create-internet-gateway --query InternetGateway.InternetGatewayId --output text) echo "done." aws ec2 create-tags --resources $IGW_ID --tags Key=Name,Value=$CLUSTER_NAME aws ec2 attach-internet-gateway --vpc-id $VPC_ID --internet-gateway-id $IGW_ID > /dev/null 2>&1 echo "Attached IGW to VPC." # Create a route table for outbound traffic and associate it to the public subnet. echo -n "Creating route table for public subnet..." PUBLIC_ROUTE_TABLE_ID=$(aws ec2 create-route-table --vpc-id $VPC_ID --query RouteTable.RouteTableId --output text) aws ec2 create-tags --resources $PUBLIC_ROUTE_TABLE_ID --tags Key=Name,Value=$CLUSTER_NAME echo "done." aws ec2 create-route --route-table-id $PUBLIC_ROUTE_TABLE_ID --destination-cidr-block 0.0.0.0/0 --gateway-id $IGW_ID > /dev/null 2>&1 echo "Created default public route." aws ec2 associate-route-table --subnet-id $PUBLIC_SUBNET_ID --route-table-id $PUBLIC_ROUTE_TABLE_ID > /dev/null 2>&1 echo "Public route table associated" # Create a NAT gateway in the public subnet for outgoing traffic from the private network. echo -n "Creating NAT Gateway..." NAT_IP_ADDRESS=$(aws ec2 allocate-address --domain vpc --query AllocationId --output text) NAT_GATEWAY_ID=$(aws ec2 create-nat-gateway --subnet-id $PUBLIC_SUBNET_ID --allocation-id $NAT_IP_ADDRESS --query NatGateway.NatGatewayId --output text) aws ec2 create-tags --resources $NAT_IP_ADDRESS --resources $NAT_GATEWAY_ID --tags Key=Name,Value=$CLUSTER_NAME sleep 10 echo "done." # Create a route table for the private subnet to the NAT gateway. echo -n "Creating a route table for the private subnet to the NAT gateway..." PRIVATE_ROUTE_TABLE_ID=$(aws ec2 create-route-table --vpc-id $VPC_ID --query RouteTable.RouteTableId --output text) aws ec2 create-tags --resources $PRIVATE_ROUTE_TABLE_ID $NAT_IP_ADDRESS --tags Key=Name,Value=$CLUSTER_NAME-private aws ec2 create-route --route-table-id $PRIVATE_ROUTE_TABLE_ID --destination-cidr-block 0.0.0.0/0 --gateway-id $NAT_GATEWAY_ID > /dev/null 2>&1 aws ec2 associate-route-table --subnet-id $PRIVATE_SUBNET_ID --route-table-id $PRIVATE_ROUTE_TABLE_ID > /dev/null 2>&1 echo "done." # echo "***********VARIABLE VALUES*********" # echo "VPC_ID="$VPC_ID # echo "PUBLIC_SUBNET_ID="$PUBLIC_SUBNET_ID # echo "PRIVATE_SUBNET_ID="$PRIVATE_SUBNET_ID # echo "PUBLIC_ROUTE_TABLE_ID="$PUBLIC_ROUTE_TABLE_ID # echo "PRIVATE_ROUTE_TABLE_ID="$PRIVATE_ROUTE_TABLE_ID # echo "NAT_GATEWAY_ID="$NAT_GATEWAY_ID # echo "IGW_ID="$IGW_ID # echo "NAT_IP_ADDRESS="$NAT_IP_ADDRESS echo "Setup complete." echo "" echo "To make the cluster create commands easier, please run the following commands to set the environment variables:" echo "export PUBLIC_SUBNET_ID=$PUBLIC_SUBNET_ID" echo "export PRIVATE_SUBNET_ID=$PRIVATE_SUBNET_ID"脚本输出命令。将命令设置为环境变量,以存储子网 ID 以供以后使用。复制并运行命令:
$ export PUBLIC_SUBNET_ID=$PUBLIC_SUBNET_ID $ export PRIVATE_SUBNET_ID=$PRIVATE_SUBNET_ID运行以下命令确认您的环境变量:
$ echo "Public Subnet: $PUBLIC_SUBNET_ID"; echo "Private Subnet: $PRIVATE_SUBNET_ID"输出示例
Public Subnet: subnet-0faeeeb0000000000 Private Subnet: subnet-011fe340000000000
1.1.2.1. 创建 OIDC 配置 复制链接链接已复制到粘贴板!
在此研讨会中,我们将在创建 OIDC 配置时使用自动模式。我们还会将 OIDC ID 存储为环境变量,供以后使用。命令使用 ROSA CLI 创建集群的唯一 OIDC 配置。
运行以下命令来创建 OIDC 配置:
$ export OIDC_ID=$(rosa create oidc-config --mode auto --managed --yes -o json | jq -r '.id')
1.1.3. 创建其他环境变量 复制链接链接已复制到粘贴板!
运行以下命令来设置环境变量。这些变量可以更轻松地运行命令在 AWS 集群上创建 Red Hat OpenShift Service:
$ export CLUSTER_NAME=<cluster_name> $ export REGION=<VPC_region>提示运行
rosa whoami来查找 VPC 区域。
1.1.4. 创建集群 复制链接链接已复制到粘贴板!
可选: 运行以下命令来创建集群范围的角色和策略,包括 Operator 策略和 AWS IAM 角色和策略:
重要只有在您 首次在 这个帐户中部署 Red Hat OpenShift Service on AWS 时,且您尚未创建您的帐户角色和策略,才完成这个步骤。
$ rosa create account-roles --mode auto --yes运行以下命令来创建集群:
$ rosa create cluster --cluster-name $CLUSTER_NAME \ --subnet-ids ${PUBLIC_SUBNET_ID},${PRIVATE_SUBNET_ID} \ --hosted-cp \ --region $REGION \ --oidc-config-id $OIDC_ID \ --sts --mode auto --yes
集群在大约 10 分钟后就绪。集群将在所选区域中的三个 AWS 可用区有一个 control plane,并在 AWS 帐户中创建两个 worker 节点。
1.1.5. 检查安装状态 复制链接链接已复制到粘贴板!
运行以下命令之一检查集群的状态:
有关集群状态的详细视图,请运行:
$ rosa describe cluster --cluster $CLUSTER_NAME对于集群状态的 abridged 视图,请运行:
$ rosa list clusters要在其进行时监控日志,请运行:
$ rosa logs install --cluster $CLUSTER_NAME --watch
- 当状态变为"就绪"后,集群就会安装。worker 节点上线可能需要几分钟时间。