8.3.3. Terraform を使用した Virtual Private Cloud の作成
Terraform は、確立されたテンプレートを使用してさまざまなリソースを作成できるツールです。Terraform をデフォルトオプションで使用すると、Red Hat OpenShift Service on AWS クラスター用の Virtual Private Cloud を作成できます。
Terraform の手順はテストとデモンストレーションを目的としています。独自のインストールでは、独自に使用するために VPC にいくつかの変更を加える必要があります。この Terraform スクリプトは、クラスターをインストールする予定のリージョンと同じリージョンで使用してください。この例では、us-east-2 を使用します。
前提条件
- マシンに Terraform バージョン 1.4.0 以降がインストールされている。
- マシンに Git がインストールされている。
手順
シェルプロンプトを開き、次のコマンドを実行して Terraform VPC リポジトリーのクローンを作成します。
$ git clone https://github.com/openshift-cs/terraform-vpc-example次のコマンドを実行して、作成したディレクトリーに移動します。
$ cd terraform-vpc-example/zero-egress次のコマンドを実行して、Terraform ファイルを開始します。
$ terraform initこのプロセスが完了すると、初期化を確認するメッセージが表示されます。
既存の 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=<availability_zones>' \ -var vpc_cidr_block=<vpc_cidr_block> \ -var 'private_subnets=<private_subnets>'ここでは、以下のようになります。
<aws_region>- AWS リージョンを入力します。
< 利用可能ゾーン >-
VPC のアベイラビリティーゾーンを入力します。たとえば、
ap-southeast-1を使用する VPC の場合、アベイラビリティーゾーンとして["ap-southeast-1a", "ap-southeast-1b", "ap-southeast-1c"]を使用します。 <vpc_cidr_block>-
VPC の CIDR ブロックを入力します。例:
10.0.0.0/16 < プライベートサブネット >-
VPC 用に作成する各サブネットを入力します。たとえば、
["10.0.0.0/24"、"10.0.1.0/24"、"10.0.2.0/24"]。
次のコマンドを実行して、このプランファイルを適用して VPC を構築します。
$ terraform apply rosa-zero-egress.tfplan
8.3.3.1. サブネットへのタグ付け リンクのコピーリンクがクリップボードにコピーされました!
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 <private_subnet_id> --region <aws_region> --tags Key=kubernetes.io/role/internal-elb,Value=1
検証
次のコマンドを実行して、タグが正しいことを確認します。
$ aws ec2 describe-tags --filters "Name=resource-id,Values=<subnet_id>"出力例
TAGS Name <subnet_id> subnet <prefix>-subnet-public1-us-east-1a TAGS kubernetes.io/role/elb <subnet_id> subnet 1