皆様こんにちは、クラウド技術部のR.Sです。
弊社ではクラウドネイティブ化というテーマに対する一つの答えとして、Red Hat OpenShitの利活用に関する様々な取り組みを進めております。
これまで、皆様に「そもそもクラウドネイティブとOpenShiftって何?」「OpenShiftと他のコンテナオーケストレーションサービスの違いとは?」というトピックについてお届けしてきましたが、今回は「実際にOpenShiftを試してみよう!」というトピックの一つをお届けしたいと思います。
本番環境を見据えたOpenShiftには「セルフマネージド」型と「マネージドクラウドサービス」型の大きく二つの形態があります。
本記事では、非常に簡単なステップでOpenShiftクラスターを作成することが出来る「マネージドクラウドサービス」型OpenShiftの一つである「Red Hat OpenShift Service on AWS(ROSA)」を作成していきたいと思います。
「セルフマネージド」型OpenShiftの作成についても別記事でご紹介しておりますので、ぜひ併せてご覧ください!
Red Hat OpenShift Service on AWS(ROSA)とは?
ROSAはAmazon Web Service(AWS)上でAWSとRed Hatが共同で提供するマネージドサービスとして利用できるOpenShiftです。
ROSAにはコントロールプレーンを含めたすべてのノード(EC2)を利用者のVPC上に作成する必要があった「ROSA Classic」と利用者がVPC上に作成すべきノードがワーカノードのみとなった「ROSA HCP」があります。(単にROSAという場合は後者を指すことが多いです)
本記事ではより簡単かつコストを抑えてOpenShiftクラスターを作成することが可能な「ROSA HCP」を扱います。
(両者の違いについてより興味のある方はAWSが提供している記事がおすすめです。)
立てよう!ROSAクラスター! ~前提条件~
ROSAクラスターの作成にあたってはAWSアカウントおよびRed Hatアカウントが必要となります。
作成にあたってはそれぞれで使用するユーザの権限を気にする必要がありますが、本記事では管理者権限を有しているユーザとして作成を進めていきます。
立てよう!ROSAクラスター! ~ROSAの有効化とRed Hatアカウントとの連携~
AWSコンソール上のRed Hat OpenShift Service on AWS (ROSA)のページに移動し、「使用を開始」から有効化設定に入ります。
一番上に表示されている「ROSAの有効化」セクションで「ROSA HCPを有効にする」をクリックして有効化を行います。
有効化には数分程度かかるのでしばらく待ちます。有効化が完了するまでの間、ほかのセクションも確認してすべて緑マークのチェックが入っていることを確認しておきます。
特にサービスクォータについてはアカウントの使用状況によって追加対応が必要な場合もありますので注意しましょう。
有効化が完了したら、ページの最下部にある「Red Hatに進む」からAWSアカウントとRed Hatアカウントの連携を行っていきます。

Hybrid Cloud Consoleに遷移するので、連携するアカウント情報や規約を確認してからアカウント連携を実施します。
このような画面に遷移すればアカウント連携は完了です!
立てよう!ROSAクラスター! ~AWSCLIとROSACLIの準備~
ROSAについてはHybrid Cloud Consoleから作成していく手順もありますが、今回はROSAを作成するVPCとは別に作業用EC2インスタンス(Amazon Linux)を作成し、その上でAWSCLIとROSACLIを用いてクラスターの作成を行います。
AWSCLIについてはAmazon Linuxインスタンスであれば初期状態でインストールされているので、あとは認証情報などを設定しておけばよいのですがデフォルトリージョンの設定を忘れないようにしましょう。
今回はバージニア北部リージョンにクラスターを作成するつもりなので.bash_profileに以下のような設定を入れておきます。
export AWS_DEFAULT_REGION=us-east-1
それではROSACLIをインスタンスにインストールしていきましょう。
Hybrid Cloud ConsoleでRed Hat OpenShiftのページを開きます。
(デフォルト状態であればコンソールのトップページで赤枠内のリンクを踏めば開くことが出来ます)
表示されたページの左側のメニューから「Downloads」を選択し、ROSACLIを入手できるページに移動します。
赤枠で囲っているものがROSACLIなので適切な「OS Type」を選択してダウンロードリンクを入手しましょう。
入手したダウンロードリンクを使用し、インスタンスにてwgetコマンドなどを使用してROSACLIのtar.gzファイルをダウンロードします。
後はファイルを解凍して/usr/local/binなどに配置すればROSACLIを使用することが出来るようになります。
それでは早速ROSACLIを使用するためにログインを実施しましょう。
rosa login --use-device-code
コマンドを実行するとログイン先のURLとログインに使用する一時コードが出力されるので、これらを使用してログインを実施します。
今回は作業用PCのブラウザでこの後のステップを実施します。
指示されたURLを開くとこのような画面が表示されるので、先ほどのコードを入力してログインを実施します。
「Device log in successful」が表示される画面までたどり着けばログインは完了です。
それではインスタンスに戻って次のコマンドを実行します。
rosa whoami
エラーなくAWSのアカウント情報やRed Hatアカウント情報が表示されればROSACLIの準備は完了です。
最後にクラスターを作成した後に使用することとなるOpenShift command-line interface(oc)についてもROSACLIを通じて入手しておきます。
rosa download openshift-client
またtar.gzファイルがダウンロードされるので、解凍して/usr/local/binなどに配置しておきます。
立てよう!ROSAクラスター! ~アカウント全体のSTSロールとポリシーの作成~
ROSAではクラスターの構築および運用の一部をRed Hat側に委ねられるということが非常に大きなメリットですが、そのためにRed Hat側のAWSアカウントを信頼するエンティティとしたIAMロールなどを作成する必要があります。
今回はROSACLIを介して必要なIAMロールをオートモードで作成します。
rosa create account-roles --hosted-cp
途中で作成するロールのプレフィックスなど(デフォルトはManagedOpenShift)を設定できますが、今回はほとんどデフォルト設定のままで作成させます。
ただし、共有VPCの設定については今回使用しないので無効にしておきます。
また、途中で作成モードを確認されるので「auto」を選択しておきます。
作成が完了した後にIAMを確認すると以下のようなIAMロールが作成されていることが確認できました。
このうちの「ManagedOpenShift-HCP-ROSA-Installer-Role」のARNをこの後のステップで使用するので控えておきます。

立てよう!ROSAクラスター! ~クラスター用ネットワークコンポーネントの作成~
ROSAクラスターを作成する前にクラスター用のVPCなど、ネットワーク関連のコンポーネントを準備しておく必要があります。
ネットワークコンポーネントの作成については自分で作成することも可能ですが、今回はROSACLIに必要なコンポーネントを作成させたいと思います。
なお今回は作成するリージョンのみ明示し、あとはデフォルトの設定で作成してもらいます。
*デフォルトで作成されるVPCのパラメータ
| アベイラビリティゾーン | 1 |
| リージョン | us-east-1(バージニア北部) |
| VPCのCIDR | 10.0.0.0/16 |
rosa create network --param Region=us-east-1
作成が完了すると、パブリック・プライベートサブネットを有するVPCが作成されていました。
この作成されたパブリックサブネットとプライベートサブネットのサブネットIDについてはクラスター作成時に使用するので控えておきます。
ちなみにこれらのリソースはCloudFormationを利用して作成されます。
どのようなリソースが作成されるか気になる方向けに、スタックのリソースページをお見せしたいと思います。

立てよう!ROSAクラスター! ~OpenID Connectの設定~
クラスターの作成はもちろん、クラスター作成後の操作においてもHybrid Cloud Console上にある「OpenShift Cluster Manager(OCM)」という管理サービスを使用します。
このOCMとの連携を実施するためにROSACLIを用いてOpenID Connectの設定を行います。
rosa create oidc-config --mode=auto --yes
作成中に表示されるoidc-config-idについてはこの後のステップでも使用するので控えておきましょう。
立てよう!ROSAクラスター! ~Operatorロールの作成~
このOperatorロールの作成がクラスター作成前の最後のステップになります。
このステップでは作成するROSAクラスターのOperatorがクラスターにおける各種操作を実行するために使用するIAMロールを作成します。
ここでは「アカウント全体のSTSロールとポリシーの作成」で控えた「ManagedOpenShift-HCP-ROSA-Installer-Role」のARN、「OpenID Connectの設定」で控えたoidc-config-idを使用します。
また、作成するIAMロールに付与するプレフィックスについてはこちらから指定する必要があるので任意のものを指定しましょう。
rosa create operator-roles --hosted-cp --prefix=<作成するIAMロールの接頭辞> \
--oidc-config-id=<OpenID Connectの設定で控えたID> \
--installer-role-arn <ManagedOpenShift-HCP-ROSA-Installer-RoleのARN>
コマンドを実行すると作成モードを確認されるので今回は「auto」を選択します。
ここも基本的にデフォルト設定で作成を進めますが、アカウント全体のSTSロール作成時と同様に共有VPCの設定については無効にしておきます。
作成が完了した後にIAMを確認すると以下のようなIAMロールが作成されていることが確認できました。
(今回はrosa-test-clusterというプレフィックスを設定しています。)
立てよう!ROSAクラスター! ~クラスターの作成~
作成のための準備については整いました、、、それではクラスターを作成しましょう!
rosa create cluster --cluster-name=<作成するクラスター名> --mode=auto --hosted-cp
--operator-roles-prefix=<作成したOperatorロールの接頭辞> \
--oidc-config-id=<OpenID Connectの設定で控えたID> \
--subnet-ids=<パブリックサブネットのサブネットID>,<プライベートサブネットのサブネットID>
表示が落ち着いた後もクラスターの作成は続いているので以下のコマンドを実行してクラスターの作成を見守りましょう。
rosa logs install -c <作成するクラスター名> --watch
クラスターの作成自体は10分程度で完了します。「Cluster '<クラスター名>' is now ready」というログが出力されるのを待ちましょう。
クラスターへのログイン
さっそく作成したクラスターの管理画面を拝みたい所ですが、その前にアイデンティティプロバイダーの設定と管理者権限の付与を実施する必要があります。
今回はお試しでのクラスター作成ですので、ROSACLIを使って簡単に設定できる方法で行います。
rosa create admin --cluster=<作成したクラスター名>
このコマンドを実行すると「To login, run the following command」という表示の後にクラスターにログインするためのocコマンドがエンドポイントのURLや認証情報と共に表示されるので、それを用いていったんCLI上でクラスターにログインします。(ログインできるようになるまで少し時間がかかります)
oc login <エンドポイントURL> --username cluster-admin --password <表示されたパスワード>
ログインできたらWebUIのクラスターコンソールへのアクセス情報を確認します。
oc whoami --show-console
表示されたURLにブラウザでアクセスするとログイン画面が表示されます。
認証情報についてはCLIでログインしたものと同様なので、それぞれ入力し「ログイン」をクリックします。
ログインできれば管理者用コンソールが表示されます!
後は自由にOpenShiftを試してみましょう!
おわりに
今回はOpenShiftのマネージドクラウドサービスであるRed Hat OpenShift Service on AWS(ROSA)クラスターの作成について皆様にご紹介しました。
構成の自由度という点ではマネージドサービスであるが故に制限を受けますが、簡単にクラスターを作成できることは魅力の一つであると思います。
これからも様々なOpenShiftに関する記事を皆様にお届けできればと思いますのでぜひご期待ください!
おまけ(コストの話)
作成のステップとしては気軽に試せるROSAですが、それなりにコストがかかるサービスです。
3時間ほどデフォルト状態のクラスターを動かしていた時のコストはおおよそ3.5ドル(530円ほど)でした。
クラスターを試す中でノードなどを追加すればインフラストラクチャのコストはもちろん、時間あたりで発生するROSAのサービス料金も増加するため注意しましょう、、、


