7.2. Red Hat OpenShift Service on AWS クラスター用の Virtual Private Cloud の作成
Red Hat OpenShift Service on AWS クラスターを作成するには、Virtual Private Cloud (VPC) が必要です。VPC エンドポイント経由でローカルの ECR ミラーからイメージをプルするには、privatelink サービス接続を設定し、特定のタグを使用してデフォルトのセキュリティーグループを変更する必要があります。VPC を作成するには、次のいずれかの方法を使用します。
- ROSA コマンドラインインターフェイス (CLI) を使用して VPC を作成する
- Terraform テンプレートを使用して VPC を作成する
- AWS CLI を使用した VPC の作成
- AWS コンソールで VPC リソースを手動で作成する
7.2.1. ROSA CLI を使用した AWS VPC の作成 リンクのコピーリンクがクリップボードにコピーされました!
バージョン 1.2.48 以降の ROSA CLI では、rosa create network
コマンドを使用できます。このコマンドは、AWS CloudFormation を使用して、Red Hat OpenShift Service on AWS クラスターのインストールに必要な VPC と関連ネットワークコンポーネントを作成します。CloudFormation はネイティブの AWS インフラストラクチャーコードツールであり、AWS CLI と互換性があります。
テンプレートを指定しない場合、次のパラメーターを持つリソースを作成するデフォルトのテンプレートが CloudFormation によって使用されます。
VPC のパラメーター | 値 |
---|---|
アベイラビリティーゾーン | 1 |
リージョン |
|
VPC CIDR |
|
rosa create network
コマンドで使用する CloudFormation テンプレートを作成し、カスタマイズできます。デフォルトの VPC テンプレートの詳細は、このセクションの関連情報を参照してください。
前提条件
- AWS アカウントを設定した。
- Red Hat アカウントを設定した。
- ROSA CLI をインストールし、最新バージョンに設定した。
検証
完了すると、作成されたリソースの概要が表示されます。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
サブネットへのタグ付け
VPC を使用して Red Hat OpenShift Service on AWS クラスターを作成する前に、VPC サブネットにタグを付ける必要があります。自動化されたサービス事前チェックにより、これらのリソースが正しくタグ付けされているかどうかが検証されます。次の表は、リソースにタグを付ける方法を示しています。
リソース | キー | 値 |
---|---|---|
パブリックサブネット |
|
|
プライベートサブネット |
|
|
該当する場合は、少なくとも 1 つのプライベートサブネットと 1 つのパブリックサブネットにタグを付ける必要があります。
ターミナルでリソースにタグを付けます。
パブリックサブネットの場合は、次のコマンドを実行します。
aws ec2 create-tags --resources <public_subnet_id> --region <aws_region> --tags Key=kubernetes.io/role/elb,Value=1
$ aws ec2 create-tags --resources <public_subnet_id> --region <aws_region> --tags Key=kubernetes.io/role/elb,Value=1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow プライベートサブネットの場合は、次のコマンドを実行します。
aws ec2 create-tags --resources <private_subnet_id> --region <aws_region> --tags Key=kubernetes.io/role/internal-elb,Value=1
$ aws ec2 create-tags --resources <private_subnet_id> --region <aws_region> --tags Key=kubernetes.io/role/internal-elb,Value=1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
次のコマンドを実行して、タグが正しいことを確認します。
aws ec2 describe-tags --filters "Name=resource-id,Values=<subnet_id>"
$ aws ec2 describe-tags --filters "Name=resource-id,Values=<subnet_id>"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
TAGS Name <subnet_id> subnet <prefix>-subnet-public1-us-east-1a TAGS kubernetes.io/role/elb <subnet_id> subnet 1
TAGS Name <subnet_id> subnet <prefix>-subnet-public1-us-east-1a TAGS kubernetes.io/role/elb <subnet_id> subnet 1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
7.2.2. Terraform を使用した Virtual Private Cloud の作成 リンクのコピーリンクがクリップボードにコピーされました!
Terraform は、確立されたテンプレートを使用してさまざまなリソースを作成できるツールです。次のプロセスでは、必要に応じてデフォルトのオプションを使用して Red Hat OpenShift Service on AWS クラスターを作成します。Terraform の使用の詳細は、関連情報を参照してください。
Terraform の手順はテストとデモンストレーションを目的としています。独自のインストールでは、独自に使用するために VPC にいくつかの変更を加える必要があります。また、この Terraform スクリプトを使用する場合は、クラスターをインストールする予定のリージョンと同じリージョン内にスクリプトがあることを確認してください。この例では、us-east-2
を使用します。
前提条件
- マシンに Terraform バージョン 1.4.0 以降がインストールされている。
- マシンに Git がインストールされている。
手順
シェルプロンプトを開き、次のコマンドを実行して Terraform VPC リポジトリーのクローンを作成します。
git clone https://github.com/openshift-cs/terraform-vpc-example
$ git clone https://github.com/openshift-cs/terraform-vpc-example
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、作成したディレクトリーに移動します。
cd terraform-vpc-example/zero-egress
$ cd terraform-vpc-example/zero-egress
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、Terraform ファイルを開始します。
terraform init
$ terraform init
Copy to Clipboard Copied! Toggle word wrap Toggle overflow このプロセスが完了すると、初期化を確認するメッセージが表示されます。
既存の Terraform テンプレートに基づいて VPC Terraform プランを構築するには、
plan
コマンドを実行します。AWS リージョン、アベイラビリティーゾーン、CIDR ブロック、プライベートサブネットを含める必要があります。クラスター名を指定することもできます。terraform plan
が完了すると、rosa-zero-egress.tfplan
ファイルがhypershift-tf
ディレクトリーに追加されます。オプションの詳細は、Terraform VPC リポジトリーの README ファイル を参照してください。terraform plan -out rosa-zero-egress.tfplan -var region=<aws_region> \ -var 'availability_zones=["aws_region_1a","aws_region_1b","aws_region_1c"]'\ -var vpc_cidr_block=10.0.0.0/16 \ -var 'private_subnets=["10.0.0.0/24", "10.0.1.0/24", "10.0.2.0/24"]'
$ terraform plan -out rosa-zero-egress.tfplan -var region=<aws_region> \
1 -var 'availability_zones=["aws_region_1a","aws_region_1b","aws_region_1c"]'\
2 -var vpc_cidr_block=10.0.0.0/16 \
3 -var 'private_subnets=["10.0.0.0/24", "10.0.1.0/24", "10.0.2.0/24"]'
4 Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、このプランファイルを適用して VPC を構築します。
terraform apply rosa-zero-egress.tfplan
$ terraform apply rosa-zero-egress.tfplan
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
サブネットへのタグ付け
VPC を使用して Red Hat OpenShift Service on AWS クラスターを作成する前に、VPC サブネットにタグを付ける必要があります。自動化されたサービス事前チェックにより、これらのリソースが正しくタグ付けされているかどうかが検証されます。次の表は、リソースにタグを付ける方法を示しています。
リソース | キー | 値 |
---|---|---|
パブリックサブネット |
|
|
プライベートサブネット |
|
|
該当する場合は、少なくとも 1 つのプライベートサブネットと 1 つのパブリックサブネットにタグを付ける必要があります。
ターミナルでリソースにタグを付けます。
パブリックサブネットの場合は、次のコマンドを実行します。
aws ec2 create-tags --resources <public_subnet_id> --region <aws_region> --tags Key=kubernetes.io/role/elb,Value=1
$ aws ec2 create-tags --resources <public_subnet_id> --region <aws_region> --tags Key=kubernetes.io/role/elb,Value=1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow プライベートサブネットの場合は、次のコマンドを実行します。
aws ec2 create-tags --resources <private_subnet_id> --region <aws_region> --tags Key=kubernetes.io/role/internal-elb,Value=1
$ aws ec2 create-tags --resources <private_subnet_id> --region <aws_region> --tags Key=kubernetes.io/role/internal-elb,Value=1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
次のコマンドを実行して、タグが正しいことを確認します。
aws ec2 describe-tags --filters "Name=resource-id,Values=<subnet_id>"
$ aws ec2 describe-tags --filters "Name=resource-id,Values=<subnet_id>"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
TAGS Name <subnet_id> subnet <prefix>-subnet-public1-us-east-1a TAGS kubernetes.io/role/elb <subnet_id> subnet 1
TAGS Name <subnet_id> subnet <prefix>-subnet-public1-us-east-1a TAGS kubernetes.io/role/elb <subnet_id> subnet 1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
7.2.3. AWS CLI を使用した VPC の作成 リンクのコピーリンクがクリップボードにコピーされました!
AWS CLI を使用して VPC を作成できます。この CLI の使用方法は、AWS create-vpc のドキュメント を参照してください。
7.2.4. AWS Virtual Private Cloud の手動作成 リンクのコピーリンクがクリップボードにコピーされました!
Terraform を使用する代わりに、AWS Virtual Private Cloud (VPC) を手動で作成することを選択した場合は、AWS コンソールの VPC ページ に移動します。
VPC は、次の表に示す要件を満たしている必要があります。
要件 | 詳細 |
---|---|
VPC 名 | クラスターを作成するときは、特定の VPC 名と ID が必要です。 |
CIDR 範囲 | VPC CIDR 範囲はマシンの CIDR と一致する必要があります。 |
アベイラビリティーゾーン | 単一ゾーンの場合は 1 つの可用性ゾーンが必要で、複数ゾーンの場合は 3 つの可用性ゾーンが必要です。 |
パブリックサブネット | パブリッククラスターには、NAT ゲートウェイを備えたパブリックサブネットが 1 つ必要です。プライベートクラスターにはパブリックサブネットは必要ありません。 |
DNS ホスト名と解決 | DNS ホスト名と解決が有効になっていることを確認する必要があります。 |
サブネットへのタグ付け
VPC を使用して Red Hat OpenShift Service on AWS クラスターを作成する前に、VPC サブネットにタグを付ける必要があります。自動化されたサービス事前チェックにより、これらのリソースが正しくタグ付けされているかどうかが検証されます。次の表は、リソースにタグを付ける方法を示しています。
リソース | キー | 値 |
---|---|---|
パブリックサブネット |
|
|
プライベートサブネット |
|
|
該当する場合は、少なくとも 1 つのプライベートサブネットと 1 つのパブリックサブネットにタグを付ける必要があります。
ターミナルでリソースにタグを付けます。
パブリックサブネットの場合は、次のコマンドを実行します。
aws ec2 create-tags --resources <public_subnet_id> --region <aws_region> --tags Key=kubernetes.io/role/elb,Value=1
$ aws ec2 create-tags --resources <public_subnet_id> --region <aws_region> --tags Key=kubernetes.io/role/elb,Value=1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow プライベートサブネットの場合は、次のコマンドを実行します。
aws ec2 create-tags --resources <private_subnet_id> --region <aws_region> --tags Key=kubernetes.io/role/internal-elb,Value=1
$ aws ec2 create-tags --resources <private_subnet_id> --region <aws_region> --tags Key=kubernetes.io/role/internal-elb,Value=1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
次のコマンドを実行して、タグが正しいことを確認します。
aws ec2 describe-tags --filters "Name=resource-id,Values=<subnet_id>"
$ aws ec2 describe-tags --filters "Name=resource-id,Values=<subnet_id>"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
TAGS Name <subnet_id> subnet <prefix>-subnet-public1-us-east-1a TAGS kubernetes.io/role/elb <subnet_id> subnet 1
TAGS Name <subnet_id> subnet <prefix>-subnet-public1-us-east-1a TAGS kubernetes.io/role/elb <subnet_id> subnet 1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow