1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Terraform を使って ROSA HCP をデプロイする (Official Sample 版)

Last updated at Posted at 2024-07-31

0.はじめに

ROSA には Classic ( Control Plane node がユーザーの AWS アカウント内に作られるもの) と、HCP (Hosted Control Plane: Compute Node だけがユーザーのAWSアカウントに作られるもの)の2種類のタイプがあります。

この記事は、ROSA HCP に関する記事です。
過去に ROSA クラスターを作成していない綺麗な環境での実行を想定しています。

ROSA は CLIでも作成できるのですが、Enterprise 向けの製品だけあって、オプションが山のようにあります。
Terraform を使う事で、いつも使うオプション構成で気軽にクラスターをデプロイしたり、削除する事が可能です。

この記事の Official ドキュメントのサンプルは、ROSA HCP環境の作成のみ特化しており、シンプルで見やすいので、独自のterraform スクリプトを作成する場合は、こちらをベースとする事をおすすめします。

1. 各種 CLI を準備する

・AWS CLI コマンド
・git コマンド
・terraform コマンド
・rosa / oc コマンド
・jq コマンド

が構成されている事が前提です。こちらの ガイドを参考にしてください。

また、クラスターを作成するために、トークンを Red Hat のサイトから取得する必要があります。アカウントの作成は無料になっているので、アカウントを持ってない場合は、こちらから作成します。

2. サンプルの設定ファイルをダウンロードする

いろいろ設定ファイル(.tf)を幾つか手書きする必要があるのですが、面倒な人向けに公式ドキュメントに載っているサンプルファイルを、ほぼそのまま書き起こしたものを用意しました。

サンプルは、以下のコマンドでダウンロードできます。

git clone https://github.com/yuhkih/rosa-hcp-terraform

ダウンロードしたディレクトリに移動します。

cd rosa-hcp-terraform

このサンプルは、公式ドキュメント版を以下の点で変更しています。

・クラスターが作成されるデフォルト・リージョンを us-east-2 から ap-northeast-1
・デフォルトのクラスター構成をMulti AZ から Single AZ に。Compute Node 数は2に。
・デフォルトで、クラスター用の VPC を作成するように。
・デフォルトで、Public クラスターが作成されるように。
・インストールバージョンを、4.16.3 に。

これらのカスタマイズは、1) 日本向け、2) テスト用にクラスターが最小に、3) 作成時にできるだけ入力を求められないように、4) すぐに触れるように。という観点での、デフォルト設定の変更になります。

ROSA のインストールバージョンは、時間が経つとサポートされないバージョンになる可能性があります。その際は terraform の実行が失敗するので、適宜アップデートする必要があります。rosa の install 可能なバージョンは、rosa list version で確認できます。
インストールするバージョンは、variables.tf内で指定しています。

rosa の最新 Version は、rosa list version で確認できます。

$ rosa list version
VERSION    DEFAULT    AVAILABLE UPGRADES
4.17.3     no
4.17.2     no         4.17.3
4.17.1     no         4.17.2, 4.17.3
4.17.0     no         4.17.1, 4.17.2, 4.17.3
...

variables.tf の中を検索し、バージョンを探して、現在、使用可能なバージョンに修正してください。

3. [Option] 作成される Compute Node の数を変更する。

この手順はオプションです。慣れて来たら試して見てください。

この terraform スクリプトはデフォルトでは、以下のような Single AZ の Public に公開された ROSA (HCP)クラスターを作成します。ROSA (HCP) の 最小構成は、Compute Node は2本になります。

image.png

terraform の variables.tf を編集する事でインストール内容をカスタマイズできます。

variables.tf の以下の部分で、インストールする OpenShift のバージョンを変更できます。

variable "openshift_version" {
  type        = string
  default     = "4.16.3"
  description = "Desired version of OpenShift for the cluster, for example '4.14.20'. If version is greater than the currently running version, an upgrade will be scheduled."
}

作成するCluster のMulti AZSingle AZ の選択や、Compute Node の本数を指定できます。

variable "multi_az" {
  type        = bool
  description = "Multi AZ Cluster for High Availability"
  default     = false
}

variable "worker_node_replicas" {
  default     = 2
  description = "Number of worker nodes to provision. Single zone clusters need at least 2 nodes, multizone clusters need at least 3 nodes"
  type        = number
}

4. ROSA の token を取得する

ROSA クラスターを作成するための https://console.redhat.com/openshift/token から Token を取得します。以下の部分をコピーします。

image.png

取得した Token を変数にセットします。

export RHCS_TOKEN=<上記のページからコピーした Token>

5. ROSA Cluster の作成

terraform を初期化します。

terraform init

もしファイルを編集した場合は、validateで編集ミスが無いか確認します。

terraform validate

以下のコマンドでプランを生成します。

terraform plan -out hcp.plan

以下でクラスターが作成が開始されます。(途中で確認を求められるので yesと入力します)

terraform apply hcp.plan

途中経過のログが流れはじめ、20-30分ほど待つと完了するはずです。

正常に完了したら、以下のコマンドでクラスター名を取得して変数にセットします。
jq コマンドが無い場合は、普通に rosa list clusters でクラスター名を表示させてからコピーしてセットします。

CLUSTER_NAME=$(rosa list clusters -o json | jq '.[0].name' | sed 's/"//g') 

変数がセットされてるか確認します。

echo $CLUSTER_NAME

以下のコマンドでクラスター用の管理者ユーザー (cluster-admin という名前になります)を作成します。

rosa create admin -c $CLUSTER_NAME

上記のコマンドを実行すると標準出力にログイン用のコマンドストリングが表示されるので、それを使ってログイン可能です。(ログインできるようになるまで数分かかります 401が出る場合は暫く待ちます)

出力例
$ rosa create admin -c $CLUSTER_NAME
I: Admin account has been added to cluster 'rosa-a42u7q'.
I: Please securely store this generated password. If you lose this password you can delete and recreate the cluster admin user.
I: To login, run the following command:

   oc login https://api.rosa-a42u7q.cmq3.p3.openshiftapps.com:443 --username cluster-admin --password L99jG-VZZKy-NNiCv-YmWnn

I: It may take several minutes for this access to become active.
$

5. ROSA の基本コマンド

ログイン ( 前段で実行した rosa create admin -c $CLUSTER_NAME の出力に初期 userid / password が出ています)

oc login https://api.rosa-22aoom.6qk7.p1.openshiftapps.com:6443 --username cluster-admin --password abcdef-1234556-pFV3Y-g45BV

コンソールの URL の表示 (CLIと同じ UserID/パスワードでログインできます)

oc whoami --show-console

6. ROSA クラスターの削除

以下で ROSA クラスターを削除できます。

terraform destroy

削除するリソースをリストした後、確認を求められるので yes と入力します。

...
...
Do you really want to destroy all resources?
  Terraform will destroy all your managed infrastructure, as shown above.
  There is no undo. Only 'yes' will be accepted to confirm.

  Enter a value: yes
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?