第3章 Terraform を使用した ROSA クラスターの作成
3.1. Terraform を使用したデフォルトの Red Hat OpenShift Service on AWS クラスターの作成 リンクのコピーリンクがクリップボードにコピーされました!
デフォルトのクラスターオプションで設定された Terraform クラスターテンプレートを使用して、Red Hat OpenShift Service on AWS クラスターをすばやく作成します。
以下で説明するクラスター作成プロセスでは、次のリソースを使用して Red Hat OpenShift Service on AWS クラスターを準備する Terraform 設定を使用します。
-
マネージド
oidc-config
設定を使用する OIDC プロバイダー - 事前に必要な IAM Operator ロールと、それに関連する AWS 管理の Red Hat OpenShift Service on AWS ポリシー
- IAM アカウントロールと、それに関連する AWS 管理の Red Hat OpenShift Service on AWS ポリシー
- Red Hat OpenShift Service on AWS クラスターを作成するために必要な他のすべての AWS リソース
3.1.1. Terraform の概要 リンクのコピーリンクがクリップボードにコピーされました!
Terraform は、リソースを設定すると必要に応じてそれらのリソースをレプリケートできる infrastructure-as-code ツールです。Terraform は、宣言的言語を使用して作成タスクを実行します。インフラストラクチャーリソースの任意の最終状態を宣言すると、Terraform は仕様に合わせてリソースを作成します。
前提条件
Terraform 設定内で Red Hat Cloud Services プロバイダー を使用するには、次の前提条件を満たす必要があります。
- ROSA CLI ツールをインストールした。
- オフラインの Red Hat OpenShift Cluster Manager トークン がある。
- Terraform バージョン 1.4.6 以降をインストールした。
AWS アカウント全体の IAM ロールを作成した。
特定のアカウント全体の IAM ロールとポリシーにより、Red Hat OpenShift Service on AWS のサポート、インストール、コントロールプレーン、コンピュート機能に必要な STS 権限が提供されます。これには、アカウント全体の Operator ポリシーが含まれます。AWS アカウントロールの詳細は、関連情報を参照してください。
- リソースを作成できる AWS アカウント と 関連する認証情報 がある。この認証情報は AWS プロバイダー用に設定されているものです。AWS Terraform プロバイダーのドキュメントで、Authentication and Configuration セクションを参照してください。
Terraform を操作する AWS IAM ロールポリシーに、少なくとも以下の権限がある。権限は、AWS コンソールで確認してください。
例3.1 Terraform の最小限の AWS 権限
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Terraform を使用する場合の考慮事項
一般に、Terraform を使用してクラウドリソースを管理する場合は、すべての変更が Terraform 方法論を使用して実行されることを前提として行う必要があります。AWS コンソールや Red Hat コンソールなど、Terraform 外部のツールを使用して Terraform によって作成されたクラウドリソースを変更する場合は注意してください。Terraform によってすでに管理されているクラウドリソースを管理するために Terraform 外部のツールを使用すると、宣言した Terraform 設定から設定のドリフトが発生します。
たとえば、Red Hat Hybrid Cloud Console を使用して Terraform で作成されたクラスターをアップグレードする場合は、今後の設定変更を適用する前に Terraform の状態を調整する必要があります。詳細は、HashiCorp Developer ドキュメントの Manage resources in Terraform state を参照してください。
3.1.2. デフォルトのクラスター仕様の概要 リンクのコピーリンクがクリップボードにコピーされました!
デフォルトのインストールオプションを使用して、Red Hat OpenShift Service on AWS クラスターをすばやく作成できます。
次の要約では、デフォルトのクラスター仕様を説明します。
コンポーネント | デフォルトの仕様 |
---|---|
アカウントおよびロール |
|
クラスター設定 |
|
コンピュートノードマシンプール |
|
ネットワーク設定 |
|
Classless Inter-Domain Routing (CIDR) の範囲 |
|
クラスターのロールおよびポリシー |
|
ストレージ |
|
クラスター更新ストラテジー |
|
3.1.3. Terraform を使用したデフォルトの Red Hat OpenShift Service on AWS クラスターの作成 リンクのコピーリンクがクリップボードにコピーされました!
以下に概説するクラスター作成プロセスでは、Terraform を使用して、アカウント全体の IAM ロールとマネージド OIDC 設定を使用する Red Hat OpenShift Service on AWS クラスターを作成する方法を示します。
3.1.3.1. Terraform 用の環境の準備 リンクのコピーリンクがクリップボードにコピーされました!
Terraform を使用して Red Hat OpenShift Service on AWS クラスターを作成する前に、オフラインの Red Hat OpenShift Cluster Manager トークン をエクスポートする必要があります。
手順
オプション: この手順の実行中、現在のディレクトリーに Terraform ファイルが作成されます。次のコマンドを実行すると、これらのファイルを保存する新しいディレクトリーを作成してそこに移動できます。
mkdir terraform-cluster && cd terraform-cluster
$ mkdir terraform-cluster && cd terraform-cluster
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - オフラインの Red Hat OpenShift Cluster Manager トークン を使用して、アカウントに権限を付与します。
オフライントークンをコピーし、次のコマンドを実行してトークンを環境変数として設定します。
export RHCS_TOKEN=<your_offline_token>
$ export RHCS_TOKEN=<your_offline_token>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記この環境変数は、マシンの再起動やターミナルの終了など、各セッションの終了時にリセットされます。
検証
トークンをエクスポートしたら、次のコマンドを実行して値を確認します。
echo $RHCS_TOKEN
$ echo $RHCS_TOKEN
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.1.3.2. ローカルでの Terraform ファイルの作成 リンクのコピーリンクがクリップボードにコピーされました!
オフラインの Red Hat OpenShift Cluster Manager トークン を設定した後、クラスターを構築するために Terraform ファイルをローカルで作成する必要があります。このファイルは、次のコードテンプレートを使用して作成できます。
手順
次のコマンドを実行して、
main.tf
ファイルを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- オプション: 適切なパラメーターのコメントを解除し、必要に応じて値を編集して、クラスターの作成中に管理者ユーザーを作成します。
次のコマンドを実行して、
variables.tf
ファイルを作成します。注記クラスターを構築するコマンドを実行する 前 に、このファイルをコピーして編集します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のコマンドを実行して
vpc.tf
ファイルを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow これで Terraform を起動する準備ができました。
3.1.3.3. Terraform を使用した Red Hat OpenShift Service on AWS クラスターの作成 リンクのコピーリンクがクリップボードにコピーされました!
Terraform ファイルを作成した後、Terraform を起動して、必要な依存関係をすべて提供する必要があります。その後、Terraform プランを適用します。
Terraform の状態ファイルは変更しないでください。詳細は、Terraform 使用時の考慮事項 を参照してください。
手順
Terraform ファイルに基づいてリソースを作成するように Terraform を設定し、次のコマンドを実行します。
terraform init
$ terraform init
Copy to Clipboard Copied! Toggle word wrap Toggle overflow オプション: 次のコマンドを実行して、コピーした Terraform が正しいことを確認します。
terraform validate
$ terraform validate
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Success! The configuration is valid.
Success! The configuration is valid.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、Terraform を使用してクラスターを作成します。
terraform apply
$ terraform apply
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Terraform インターフェイスでは、クラスターを作成するために次のような 2 つの質問が表示されます。
出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Terraform インターフェイスに作成または変更するリソースがリストされ、確認を求めるプロンプトが表示されたら、続行するには
yes
を、キャンセルするにはno
を入力します。出力例
Plan: 63 to add, 0 to change, 0 to destroy. Do you want to perform these actions? Terraform will perform the actions described above. Only 'yes' will be accepted to approve.
Plan: 63 to add, 0 to change, 0 to destroy. Do you want to perform these actions? Terraform will perform the actions described above. Only 'yes' will be accepted to approve.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow yes
と入力すると、Terraform プランが開始され、AWS アカウントロール、Operator ロール、および Red Hat OpenShift Service on AWS クラスターが作成されます。
検証
次のコマンドを実行して、クラスターが作成されたことを確認します。
rosa list clusters
$ rosa list clusters
Copy to Clipboard Copied! Toggle word wrap Toggle overflow クラスターの ID、名前、ステータスを示す出力例
ID NAME STATE TOPOLOGY 27c3snjsupa9obua74ba8se5kcj11269 rosa-tf-demo ready Hosted CP
ID NAME STATE TOPOLOGY 27c3snjsupa9obua74ba8se5kcj11269 rosa-tf-demo ready Hosted CP
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、アカウントロールが作成されたことを確認します。
rosa list account-roles
$ rosa list account-roles
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
I: Fetching account roles ROLE NAME ROLE TYPE ROLE ARN OPENSHIFT VERSION AWS Managed ROSA-demo-Installer-Role Installer arn:aws:iam::<ID>:role/ROSA-demo-Installer-Role 4.14 No ROSA-demo-Support-Role Support arn:aws:iam::<ID>:role/ROSA-demo-Support-Role 4.14 No ROSA-demo-Worker-Role Worker arn:aws:iam::<ID>:role/ROSA-demo-Worker-Role 4.14 No
I: Fetching account roles ROLE NAME ROLE TYPE ROLE ARN OPENSHIFT VERSION AWS Managed ROSA-demo-Installer-Role Installer arn:aws:iam::<ID>:role/ROSA-demo-Installer-Role 4.14 No ROSA-demo-Support-Role Support arn:aws:iam::<ID>:role/ROSA-demo-Support-Role 4.14 No ROSA-demo-Worker-Role Worker arn:aws:iam::<ID>:role/ROSA-demo-Worker-Role 4.14 No
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、Operator ロールが作成されたことを確認します。
rosa list operator-roles
$ rosa list operator-roles
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Terraform で作成された Operator ロールを示す出力例
I: Fetching operator roles ROLE PREFIX AMOUNT IN BUNDLE rosa-demo 8
I: Fetching operator roles ROLE PREFIX AMOUNT IN BUNDLE rosa-demo 8
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.1.3.4. Terraform を使用した Red Hat OpenShift Service on AWS クラスターの削除 リンクのコピーリンクがクリップボードにコピーされました!
terraform destroy
コマンドを使用して、terraform apply
コマンドで作成したすべてのリソースを削除します。
リソースを破棄する前に、Terraform の .tf
ファイルを変更しないでください。これらの変数は削除対象のリソースと照合されます。
手順
terraform apply
コマンドを実行してクラスターを作成したディレクトリーで、次のコマンドを実行してクラスターを削除します。terraform destroy
$ terraform destroy
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Terraform インターフェイスでは、2 つの変数の入力を求められます。これらは、クラスターの作成時に指定した回答と一致する必要があります。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow yes
と入力して、ロールとクラスターの削除を開始します。出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
次のコマンドを実行して、クラスターが破棄されたことを確認します。
rosa list clusters
$ rosa list clusters
Copy to Clipboard Copied! Toggle word wrap Toggle overflow クラスターがないことを示す出力例
I: No clusters available
I: No clusters available
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、アカウントロールが破棄されたことを確認します。
rosa list account-roles
$ rosa list account-roles
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Terraform で作成されたアカウントロールがないことを示す出力例
I: Fetching account roles I: No account roles available
I: Fetching account roles I: No account roles available
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、Operator ロールが破棄されたことを確認します。
rosa list operator-roles
$ rosa list operator-roles
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Terraform で作成された Operator ロールがないことを示す出力例
I: Fetching operator roles I: No operator roles available
I: Fetching operator roles I: No operator roles available
Copy to Clipboard Copied! Toggle word wrap Toggle overflow