さくらのクラウドにOpenShiftシングルノードクラスタ(SNO)をAssisted Installerで構築する


OpenShift 4.8からだったか、Red Had Hybrid Cloud Consoleで提供されるインストール方法にAssisted Installerというのが追加され、ISOブートイメージを使用してbootstrapノードを用意せずにクラスター構築できる様になった。
それはいいね!なのだが、ISOブートイメージを使うという事でAWSとかのクラウドで利用が難しいな。。と思っていたら、さくらのクラウドのVMインスタンスはISOイメージからブート可能という事を知り、ちょっと試してみようかと。

Assisted Installer自体は現時点でTech Previewとなっているが、シングルノード構成がOpenShift 4.9でGAとなっているので、構築されたクラスタは本番環境で使ってもサポート対象になるはず。まあ、考慮点はあるが、SNOクラスタ2つ作れば大体の問題は解決する。
単体OSでdocker/podmanで良いんじゃねーのという事もあるだろうが、そこはargocdでノータッチアプリ更新とか、Kubernetesのエコシステム活用の利点が現状では勝る所もあるだろう。

前提

・さくらのクラウドにアカウントがある事
https://cloud.sakura.ad.jp/

・Red Hat Hybrid Cloud Console(HCC)にアカウントがある事
https://console.redhat.com/

1. OpenShiftインストール用のISOファイルを入手する

HCCの左上メニューの「OpenShift」を開き、「Create Cluster」をクリックする。
作成画面の上側、作成先の選択肢に「Cloud」、「Datacenter」、「Local」とあるが、「Datacenter」を選ぶ。
「Assisted Installer」の「Create cluster」をクリックする。
「Cluster name」にクラスタ名を、「Base domain」に作成するクラスタのドメイン名を入力する。ドメイン名はexample.comでも良いと思うが、routeのデフォルト値と合わせたいなら別途DNSレジストラに登録したDNS名を入力する。まあ、ここでexample.comを使っても後でどうにでもなる。
「Install single node OpenShift (SNO)」にチェックを付ける。
「I understand~」にチェックを付ける。繰り返しになるが、SNOクラスタ自体はOpenShift 4.9でGAである。
「OpenShift version」に4.9以降を選択する。
「Next」をクリックする。

次の画面で「Generate a Discovery ISO」をクリックして、OpenShift導入用のISOファイルをダウンロードする。クラスタ毎にカスタマイズされたISOが生成されるので使いまわしは出来ない。Full imageで1GB弱。CoreOSにsshログインしたい場合は、普通すると思うが、sshの公開鍵も登録する。

2. ISOファイルをさくらのクラウドにアップロードする

さくらのクラウド側で、「ストレージ」>「ISOイメージ」からISOイメージを作る。
curlを使ったファイルアップロード方法が提示されるので先のISOファイルをアップロードする。
アップロードが終わったら「FTPを完了」として、有効状態を「利用可能」にする。

3. さくらのクラウドでサーバを起動する

「サーバ」から、サーバを起動する。OpenShift側のスペック要求に従い仮想コア:8、メモリ:32GBで。これだけでシングルマスタ2ワーカーのコミュニティ版Kubeクラスタ超える。。ともあれ、ディスクサイズは250GB(>120GB)で、ディスクソースはブランクにして、「ISOイメージを使う」で、先に作成したISOイメージを指定する。

その他はデフォルトか、監視設定等好みに合わせて。検証用で2~3時間使うなら500円か、、ちょっと高いか。

「作成」をクリックすると、1分くらいでサーバが起動する。

4. OpenShiftの導入を待つ

サーバが作成されると、さくらのクラウド画面でサーバの「コンソール」からISOイメージがブートして動作しているのを確認できる。

HTML5クライアントでサーバのコンソール画面に接続可能。あーこれはいいな。

しばらくすると、Red Hat HCC側の画面でStatがReadyになる。

そうしたら、HCCで「Next」をクリックする。

5. クラスタを作成する

Networkingの画面で「Available subnets」を選択して、「Next」。
「Review and create」画面で「Install cluster」をクリックする。

インストールは大体35分くらいで完了する。

完了したら、クラスタにアクセスするためのkubeconfigを入手することもできるし、OpenShift WebコンソールにアクセスするためのURLも表示される。
作成中に指定したDNS名をレジストラで取得していないのなら、Webブラウザを使うPCのhostsファイルに以下のエントリを追加する。

<サーバのIPアドレス> console-openshift-console.apps.sno.example.com oauth-openshift.apps.sno.example.com api.sno.example.com

Webコンソールにログインするためのユーザー名は「kubeadmin」、パスワードは先のHCCのインストール画面から入手できる。

ここから先はまあ、普通のOpenShiftと変わらない。

ちなみに

ちなみにだが、構築に使ったRed Hat Hybrid Cloud Console、最近名前が変わったと思うが、これを使って自前構築のOpenShiftクラスタへのアクセスポータルとすることが出来る。マルチクラスタ管理だ。

ここからWebコンソール開くこともできるし、サポートケースも作れるし、CPUとメモリー使用率(Reserve率か?)といったごく簡単なメトリクスも取得できる。

まあ、ログはAWS CloudWatchに送り付けたほうが良いだろう。

内部イメージレジストリも、まあ、使うのであればAmazon S3をバックエンドにしたほうが無難ではあるかな。。

なお、シングルノードクラスタだとアップデートがちゃんと動くの?というのが怖いところだが、とりあえず4.9.0から執筆時点最新の4.9.4へのアップデートは上手くいった。

上手くいかなかったところでサポートに問い合わせても様々な言い訳とユーザー非難の雨霰かもしれないが、まあ、クラスタ作り直せばいい。しびれを切らしたらコミュニティ版Kubernetesを使おう。

いやしかし、アップデート中にOSが再起動する際の、さくらのクラウドのhtml5コンソール画面のなんと頼もしいことか。

IPアドレスも、良し悪しだろうが、パブリックIPアドレスがサーバーに直接割り当てという形式も個人的には悪くない。この辺はトレンドに負けてそのうち変わるかもだが。

そういえば、さくらのクラウドで停止中のインスタンスの料金はどうなるんだろうか。。?ストレージ部分を除いて無料か。なら寝ているうちはサーバ止めておけばいいか。

ISOブートが出来てブート中の画面も操作できるってことは、クラウドでは夢のWindows Server BackupからのOSのISOイメージで起動してベアメタルリストアできるってことだ。良いんじゃないか。