1. Terraform を使用した ROSA を install する AWS Network の作成 #
HCP ROSA は、ユーザーが既にもっているネットワークにデプロイする事が前提になります。 ここでは Terraform を使用して AWS 上に Network を作成します。
この手順は、公式ドキュメントの「Creating a Vritual Private Cloud for your ROSA with HCP clusters 」をベースにしています。
1.1. Terraform を使用した AWS Network リソースの作成 #
サンプルで提供されている terraform のテンプレートを使って、AWS の VPC、Subnet、NAT Gateway 等の必要なリソースを作成します。
- Repository からサンプルの terraform をダウンロードし初期化します。
git clone https://github.com/openshift-cs/terraform-vpc-example
ダウンロードしたディレクトリに移動します。
cd terraform-vpc-example
初期化します。
terraform init
- 変数を準備しておきます。
CLUSTER_NAME は自分の好きなクラスター名で大丈夫です。この名前は Subnet のタグ名で使われます。この変数は、後で ROSA Cluster を作成する時にも使われます。
export CLUSTER_NAME=myhcpcluster
REGION には、ap-northeast-1 にクラスターを指定します。もちろん他のリージョンを指定しても大丈夫です。この変数は後で、ROSA Cluster の作成先を指定する時にも使われます。
export REGION=ap-northeast-1
- Terraform の plan を作成します。
Single AZ の Network 構成をデプロイするか、Multi AZ の Network を作成するか、どちらかを選びます。
terraform plan -out rosa.tfplan -var region=$REGION -var cluster_name=$CLUSTER_NAME
terraform plan -out rosa.tfplan -var region=$REGION -var cluster_name=$CLUSTER_NAME -var single_az_only=false
- Plan を apply して Network を作成します。
terraform apply rosa.tfplan
実際に VPC や Subnet、NAT Gateway 等が作成されるので数分、時間がかかります。
- 作成された AWS のサブネットIDを変数にセットしておきます。カンマ区切りで2つ(Single AZ) もしくは6つ(Multi AZ) のサブネットIDが変数にセットされます。
export SUBNET_IDS=$(terraform output -raw cluster-subnets-string)
この手順ではインターネットに公開されたクラスタ (
Public Cluster)を作成するため、Network もNAT Gatewayを持ったPublic SubnetとPrivate Subnetの両方を作成しています。
Public Clusterを作った後に、インターネットに公開されたAPI Server、Ingressを非公開(Private Subnetからのみアクセス可能にする)に設定する事も可能です。そのためほとんどの要件はPublic Clusterでカバーできると思います。一方、あらかじめ非公開のクラスタ(
Private Cluster)を作る方法もあります。この場合は、AWS のPubilc Subnetは必要はありません。ただし、後から ROSA 側の機能でIngressをインターネットに公開する形に変更することはできません。Private Clusterについては、Network 構成として少し難易度が高い構成になるので、ここでは取り扱いません。
以上で Network の準備は完了です。
1.2. 作成された Subnet と NAT Gateway の確認 (オプショナル) #
ROSA の構築で一番のはまりポイントは、AWS Network の構成です。この手順では terraform で Network を構成するので、嵌まる事はまずありませんが、手動で AWS GUI から作成した場合などはきちんと構成できてない事がありデバッグ用に CLI を覚えて置くと便利です。
ここでは CLI を使って作成した Network の情報を確認する方法をご紹介します。