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本になります。
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 AZ
かSingle 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 を取得します。以下の部分をコピーします。
取得した 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