はじめに
Red Hat OpenShift Container Platform を、試用環境として、1台のマシン上で動作させる事ができる、OpenShift Local というものがRed Hat社から無料で提供されています。しかし、これを自分のPCに導入するとなると、かなり贅沢なマシンスペックを要求するため、なかなか環境が作れないという方もいらっしゃるかと思います。
今回は、このOpenShift LocalをIBM Cloudの仮想サーバ上で稼働させ、手元のPC(MAC)からリモート接続して、OpenShiftをいろいろと試用できる環境を作ってみるまでの一連の手順をご紹介いたします。
今回作成するシステムアーキテクチャのイメージ
今回構築する簡単なアーキテクチャイメージを以下に示します。
今回利用したサービスやモジュールのバージョンは実施時点(2022年7月)でのデフォルトのものを使いました。
主なシステムのバージョン:
・CentOS 7.x - Minimal Install (ibm-centos-7-9-minimal-amd64-6)
・OpenShift Local v2.6.0 (crc_libvirt_4.10.22_amd64)
・VNC Server (tigervnc 1.12.0)
・MacOS Monterey (v12.4)
今回の環境を構築するにあたって、少し余談にはなりますが、このOpenShift Localを仮想環境(Cloudのサーバ上など)で動かそうとする場合、以下の記事にあるように、その仮想環境がNested Virtualizationに対応している必要があります。
https://rheb.hatenablog.com/entry/2021/03/30/crc_tips#%E4%BB%AE%E6%83%B3%E7%92%B0%E5%A2%83%E3%81%A7%E3%81%AE%E3%83%8D%E3%82%B9%E3%83%88%E5%AE%9F%E8%A1%8C
これが実は少し厄介で、例えば、このNested Virtualizationは、以下の記事によると、
https://kkamegawa.hatenablog.jp/entry/2021/03/16/205421
AWSの仮想サーバではサポートされておらず、ベアメタルのみ対応しており、また、Azureではサポートされているインスタンスタイプが限定されているようです。
IBM Cloudでは、一応、Classic環境で試しにやってみたのですが、動きませんでした。(セットアップ時にエラーが出てしまう)
そこで、今回は、動作確認できた、IBM CloudのVPC環境での手順をご紹介します。
全体ステップ
- IBM CloudのVPC環境を作る
- 仮想サーバをオーダーする
- CentOSにリモートから接続できる環境を作る
- OpenShift Localを導入する
- OpenShift Localを起動し、稼働確認する
- 仮想サーバを停止する
- 将来の作業再開の際の手順を確かめる
- (オプション) OpenShift Localでクラスター監視機能を有効にする
ここから、各ステップを順に追って説明していきます。
ステップ1: IBM CloudのVPC環境を作る
IBM CloudのVPC環境を作るところについては、公式ドキュメントや以下のような、
https://qiita.com/khoshina/items/92b7e259df9d17247867
他の方のQiitaの記事などに詳しく書かれてありますので、その辺りもご参考にしていただければと思いますが、一応、今回、実施した、一通りのオペレーションを、サラッとご紹介しておきます。
(既にVPC環境がある方は、ステップ2に進んでください)
IBM Cloudのダッシュボードの左上のナビゲーションメニューより、「VPCインフラストラクチャー」→「VPC」を選択
右上の「作成」を押す
ロケーションを選択し、任意の名前を入れ、右の「仮想プライベート・クラウドの作成」を押す
これで、VPCが東京リージョンに作られました。
ステップ2: 仮想サーバをオーダーする
手順1. SSH鍵の作成
仮想サーバをオーダーする際に必要となる、VPC環境へアクセスする際に用いるSSHの秘密鍵と公開鍵を作成します
Macのターミナルにて、ssh-keygenコマンドを使いキーペアを作成
% ssh-keygen -t rsa -b 4096 -C "ibmcloud-ssh-key"
"ibmcloud-ssh-key"
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/kabe/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /Users/kabe/.ssh/id_rsa
Your public key has been saved in /Users/kabe/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:Wut+GDsxvTRKEiIGye9b5q79PTBQu77vMnNeABS8EPU ibmcloud-ssh-key
The key's randomart image is:
+---[RSA 4096]----+
|.. .++. |
|o. ..o. |
| .. o.oE |
| o....o. |
| ... ...So |
| . o.*=.= |
| = oo+O + |
| ... **o+ |
| .oo.+%B. |
+----[SHA256]-----+
鍵の保存場所とパスワードの入力が求められるので、必要に応じて入力する。(デフォルトの保存先(~/.ssh)で、パスワード不要であれば、そのまま「Enter」を押す)
これで、SSHの為の秘密鍵(id_rsa)と公開鍵(id_rsa.pub)が作成されました。
今、作成された公開鍵は、そのファイルの中身を次の手順で利用する為、ここで、catコマンドで表示し、マウスで選択してコピーしておきます。
% cat .ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDX8y1jRn5jswaBGo8efkqgD7SsZw/lJkRxHzpFPYbPhI9v+uMUlKJdQniChMElQt6CsgqXfn9QEdJ8eI6bMrlJ3c5oAr8SHDoRGe227gvCNXaF3GkvxvhX+PFP3FuYkCcAbRq4DLwot2MnnPUurEho/1a0EC1MWJncaGin1gDRaZMpBpzEMbu2AxqD8kSz+8jymZBRjIDjIkjw9F1rl4De4IBdjgkabWJJUxut44x3b9H/pB32LT5WL4/liPOq9c4pB+jpLgVByekz6E3iTV6P97Vnqs8Fdc5Y19atR1QGJDTcpm5L/K0a+Ema4f7VcZmnuteTercHnMfrQv1bAX5upbuKMIF9fZOBiD8LWTBpTg07GhQWKBrdNXoVVnPzrhfBApBhqenok09NrJXXwPsnp5OCBVjoUPH+gR47PeGbk+hcpqPMZLe4gRj9TnkezPW/Q1kPyMO96ajhWZRJPGxYoEdtEXzbqqzoIYG2anA1+TEojXgvq52YJP7BgLq3n84uaYVmaF3NPHNUhJqjh3U9GL5wHHSAQTEpEmnYQ7AglUaQ2Cj+SVugMpXVGjSbwUq4a2aMt9Hda9JSYH2ba+8LjKP9XyInZ+X6MONbgURkQ6i1gJSx82XZywTx5FR3KsEcFJ1zpiyOPtpcju0WO75uuy/M2JJN2Hxj2Rzq58nCJQ== ibmcloud-ssh-key
手順2. SSH鍵の登録
IBM Cloudのポータルに戻り「VPCインフラストラクチャー」→「SSH鍵」のメニューを選び、右にある「作成」ボタンを押します
右の入力フィールドに、任意の名前を入力し、先の手順でコピーしておいた、公開鍵(id_rsa.pub)の中身をペーストして作成を押します
これで、SSH鍵が登録できました。
手順3. 仮想サーバのオーダー
IBM Cloudのポータルに戻り「VPCインフラストラクチャー」→「仮想サーバ・インスタンス」のメニューを選び、右にある「作成」ボタンを押します
ロケーションを選択し、任意の名前を入力します。
オペレーティングシステムは、OpenShift Localのサポート対象のCentOSを選択しました。
プロファイルは「すべてのプロファイル」から、OpenShift Localの最低リソース要件を満たす「bx2-4x16」を今回使います。
#最後のステップ8にて、オプションとしてご紹介しますが、クラスタ監視機能を有効にしたい場合は、「bx2-4x16」では稼働リソース要件を満たさない為、「bx2-8x32」を選択してください。
SSH鍵は、前の手順で登録済みのものを選択します。
最後に「仮想サーバの作成」ボタンを押すと、仮想サーバが立ち上がります。
手順4. 浮動IPのオーダと割当て
手元のPC(Mac)からPublic Network経由でサーバアクセスする簡易な構成を作る為に、Internetからアクセスできる、浮動IPをオーダし、手順3で立ち上げたサーバのネットワーク・インターフェースとして割り当てます。
「VPCインフラストラクチャー」→「仮想サーバ・インスタンス」から、手順3で起動したサーバを選択し、最下段の「ネットワーク・・インターフェース」の「eth0」の右にある「編集」ボタンを押します。
「浮動IPアドレス」で「新規の浮動IPを予約する」を選択し「保存」を押します。
この仮想サーバにアクセスする為にアサインされたGlobal IPアドレスが、「浮動IP」の下に表示されるので、後続ステップで使うために、書き留めておきます。
これで、この仮想サーバにSSHでログインする準備が整いました。
ステップ3: CentOSにリモート接続できる環境を作る
ステップ3では、ターミナルからSSHでログインした後、CentOSのGUI(GNOME)環境と、リモート接続できる(VNC)環境整えます。
手順1. ターミナルを開き ssh にてリモートログインします。
% ssh root@128.168.133.xxx (<- 仮想サーバの浮動IPアドレスを入れる)
The authenticity of host '128.168.133.xxx (128.168.133.xxx)' can't be established.
ED25519 key fingerprint is SHA256:O5f9OygpZ4j1kJMCD/Vo/u5noKY2z+5zhTRgM/Zw9mY.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '128.168.133.xxx' (ED25519) to the list of known hosts.
[root@openshift-local ~]#
秘密鍵(id_rsa)を使ってセキュアに接続できました。
#前ステップで秘密鍵をデフォルト以外の場所に作成した場合は、ssh の -i オプションで、そのファイルを指定してください。
手順2. GUI環境とVNC環境を導入する
CentOSのGUI環境であるGNOMEのモジュールを導入します。
[root@openshift-local ~]# yum -y groupinstall "GNOME Desktop"
1000以上のモジュールがインストールされるので、しばらく時間がかかります。
続いて、リモート接続の為のVNC Serverインストールをします。
[root@openshift-local ~]# yum -y install tigervnc-server
VNC Serverを起動します。
[root@openshift-local ~]# vncserver -geometry 1280x800
You will require a password to access your desktops.
Password:
Verify:
Would you like to enter a view-only password (y/n)? n
A view-only password is not used
xauth: file /root/.Xauthority does not exist
New 'openshift-local:1 (root)' desktop is openshift-local:1
Creating default startup script /root/.vnc/xstartup
Creating default config /root/.vnc/config
Starting applications specified in /root/.vnc/xstartup
Log file is /root/.vnc/openshift-local:1.log
初回起動時は、VNC接続する際のパスワードの設定を求められます。
ここで設定したパスワードを使用して、外部から、このサーバへのVNC接続を行いますので、このパスワードは適切な強度(=強固)なものを設定してください。
#画面サイズはローカルPCの解像度に合わせて、お好みのサイズで指定ください。
#以下のサイトを参考にさせていただきました
https://corgi-lab.com/linux/centos7-install-gui/
https://qiita.com/toshiro3/items/808537690bdfe04a391c
手順3. 外部からVNC接続するためのポートの接続許可を与える
仮想サーバに対し、外部から接続するネットワーク・インターフェースにアタッチされているセキュリティ・グループの設定に、VNCのポート(5901)に対するインバウンド・ルールを追加します。
「仮想サーバ・インスタンス」で該当の仮想サーバを選び、下段の「ネットワーク・インターフェース」の欄で、浮動IPを付けたインターフェースにセットされている「セキュリティグループ」を選択します。
インバウンド・ルールの右にある「作成」を押し、「ポート範囲」で、ポート最小値「5901」、ポート最大値「5901」を入力し、作成ボタンを押します。
インバウンド・ルールに任意のアクセスポイントからポート5901でのアクセスができるルールが設定されました。
#アクセス元のGlobal IPアドレスが分かっている場合は、ソース・タイプにそのIPアドレスを設定することで、仮想サーバへのアクセスの送信元を限定して、セキュアにポートを開放することができますので、この設定を入れることを強くお勧めします。
これで、ローカルPCから、(VNCの5901ポートを使った)GUIでのリモート接続ができる環境が整いました。
ステップ4: OpenShift Localを導入する
手順1. Macからの画面共有の実施
MacでFinderを起動し、上部メニューの「移動」→「サーバへ接続」を選択します。
接続先に「vnc://<浮動IPアドレス>:5901」と入れ「接続」を押します。
パスワードを聞かれるので、前ステップで設定した、VNCのパスワードを入れて「サインイン」を押します。
手順2. OpenShift Local (crc)の実行ユーザの作成
OpenShift Local(以降、実行コマンドのcrcと呼びます)は、rootユーザでは実行出来ないため、適当な権限を持つ(sudoができる)ユーザ「crc」を作ります。
画面上部の「アプリケーション」→「システムツール」→「端末」でターミナルを開き、以下のコマンドを実行します。
[root@openshift-local ~]# useradd crc
[root@openshift-local ~]# passwd crc
Changing password for user crc.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
[root@openshift-local ~]# usermod -aG wheel crc
手順3. OpenShift Localのモジュールのダウンロード
「アプリケーション」→「インターネット」→「Firefox」でブラウザーを開きます。
https://console.redhat.com/openshift/create/local
にアクセスします。
「Red Hat アカウントへのログイン」画面が出てきますので、ご自身のアカウントにてログインしてください。
#アカウントがない方は「Red Hatアカウントを作成する」から、アカウントを作ってください。
「Download OpenShift Local」ボタンからバイナリーファイルを、「Download pull secret」ボタンからシークレットファイルを、それぞれダウンロードして保存します。
手順4. OpenShift Localの導入
OpenShift Localの導入手順の詳細については、以下の公式ドキュメントをご参照いただければと思いますが、
https://access.redhat.com/documentation/ja-jp/red_hat_openshift_local/2.5/html-single/getting_started_guide/index#installing_gsg
今回、当方にて実施した、一連のコマンドについて、以下にご紹介いたします。
[root@openshift-local ~]# mv ダウンロード/* /home/crc/.
[root@openshift-local ~]# chown crc:crc /home/crc/*
[root@openshift-local ~]# su - crc
[crc@openshift-local ~]$ tar xvf crc-linux-amd64.tar.xz
[crc@openshift-local ~]$ mkdir -p bin
[crc@openshift-local ~]$ cp crc-linux-2.6.0-amd64/crc bin/.
[crc@openshift-local ~]$ export PATH=$PATH:$HOME/bin
[crc@openshift-local ~]$ echo 'export PATH=$PATH:$HOME/bin' >> ~/.bashrc
[crc@openshift-local ~]$ crc config set consent-telemetry no
[crc@openshift-local ~]$ crc setup
(setupの途中でcrcユーザのパスワードを入力)
これでcrcの導入が完了しました。
ステップ5: OpenShift Localを起動し、稼働確認する
前ステップに続いて、crcコマンドにてクラスターを起動します。
[crc@openshift-local ~]$ crc start -p pull-secret
:
Started the OpenShift cluster.
The server is accessible via web console at:
https://console-openshift-console.apps-crc.testing
Log in as administrator:
Username: kubeadmin
Password: xxxxx-xxxxx-xxxxx-xxxxx
Log in as user:
Username: developer
Password: developer
Use the 'oc' command line interface:
$ eval $(crc oc-env)
$ oc login -u developer https://api.crc.testing:6443
ブラウザーにて、
https://console-openshift-console.apps-crc.testing
にアクセスし、(セキュリティ警告が出ますがそのまま続けます)
ユーザー名:kubeadmin
パスワード:(上記で表示されたパスワード)
にてログインすると、OpenShiftクラスターの稼働が確認できます。
また、コマンドラインにて
[crc@openshift-local ~]$ eval $(crc oc-env)
[crc@openshift-local ~]$ oc login -u kubeadmin https://api.crc.testing:6443
にて、ログインして、CLIにてクラスターの操作も可能です。
ステップ6: 仮想サーバを停止する
OpenShift Localを使って一連の作業を終了する際、次回の作業開始まで、仮想サーバを停止させておく事で、Cloudのサーバ利用料金を抑える事ができます。
この一連の方法について、以下に手順を示します。
手順1. crcサーバの停止
以下のコマンドにて、crcを停止します。
[crc@openshift-local ~]$ crc stop
INFO Stopping kubelet and all containers...
INFO Stopping the instance, this may take a few minutes...
Stopped the instance
手順2. CentOSからのログアウト
右上の電源アイコンから「root」→「ログアウト」で、リモートログインの接続を解除します。
また、Macの画面共有アプリのメニューより、「画面共有を終了」して画面を閉じます。
手順3. 仮想サーバの停止
「VPCインフラストラクチャー」→「仮想サーバ・インスタンス」で該当の仮想サーバの右にあるアクションボタンを押し、「停止」を選択すると、仮想サーバを停止することができます。
#VPCに対する課金の一時停止については、以下のドキュメントに記載されていますので、ご参照ください。
https://cloud.ibm.com/docs/vpc?topic=vpc-suspend-billing&locale=ja
ステップ7: 将来の作業再開の際の手順を確かめる
前ステップで停止していた仮想サーバを使って、また、OpenShift Localでの作業を再開したい場合の一連の手順を確認しておきます。
手順1. 仮想サーバの開始
「VPCインフラストラクチャー」→「仮想サーバ・インスタンス」で該当の仮想サーバの右にあるアクションボタンを押し、「開始」を選択すると、仮想サーバを開始することができます。
手順2. Macのターミナルを開き ssh にてリモートログインし、VNC Serverを起動します。
% ssh root@128.168.133.xxx (<- 仮想サーバの浮動IPアドレスを入れる)
[root@openshift-local ~]# vncserver -geometry 1280x800
New 'openshift-local:1 (root)' desktop is openshift-local:1
Starting applications specified in /root/.vnc/xstartup
Log file is /root/.vnc/openshift-local:1.log
手順3. Macからの画面共有の実施
MacでFinderを起動し、上部メニューの「移動」→「サーバへ接続」を選択し、接続先に「vnc://<浮動IPアドレス>:5901」と入れ「接続」を押します。
手順4. OpenShift Local (crc)の開始
リモート接続された画面にて、CentOSの画面上部の「アプリケーション」→「システムツール」→「端末」でターミナルを開き、以下のコマンドを実行します。
[root@openshift-local ~]# su - crc
[crc@openshift-local ~]$ crc start -p pull-secret
しばらくしてcrcが立ち上がれば、前回のクラスターの状態から、作業を再開できます。
ステップ8:(オプション)OpenShift Localでクラスター監視機能を有効にする
OpenShift localでは、最小限のリソースで稼働できるよう、デフォルトでは、クラスターの監視が無効になっています。このクラスター監視を有効にする方法については、以下のドキュメントに記載されていますが、
https://access.redhat.com/documentation/ja-jp/red_hat_openshift_local/2.5/html-single/getting_started_guide/index#administrative-tasks_gsg
今回のステップ2で用意した仮想サーバのインスタンスタイプ「bx2-4x16」では、マシンスペックが足りない為、OpenShiftの監視の機能を試すことができません。
そこで、今回作成したサーバ環境を使って、クラスター監視を試せる環境にアップグレードする方法(手順)について(オプションとして)記載いたします。
手順1. 仮想サーバのサイズを変更してサーバを起動する
先のステップ6で仮想サーバが「停止済み」の状態において、仮想サーバの右のアクションボタンより「サイズ変更」を選択します。
プロファイルより「すべてのプロファイルを表示」を押し、プロファイルを現行の「bx2-4x16」から「bx2-8x32」に変更して、保存を押します。
プロファイルが変更されたのを確認し、右にある「仮想サーバ・インスタンスのサイズ変更」ボタンを押してオーダします。
手順2. Macのターミナルを開き ssh にてリモートログインし、VNC Serverを起動します。
% ssh root@128.168.133.xxx (<- 仮想サーバの浮動IPアドレスを入れる)
[root@openshift-local ~]# vncserver -geometry 1280x800
New 'openshift-local:1 (root)' desktop is openshift-local:1
Starting applications specified in /root/.vnc/xstartup
Log file is /root/.vnc/openshift-local:1.log
手順3. Macからの画面共有の実施
MacでFinderを起動し、上部メニューの「移動」→「サーバへ接続」を選択し、接続先に「vnc://<浮動IPアドレス>:5901」と入れ「接続」を押します。
手順4. OpenShift Local (crc)の開始
リモート接続されたCentOSの画面上部の「アプリケーション」→「システムツール」→「端末」でターミナルを開き、以下のコマンドを実行します。
[root@openshift-local ~]# su - crc
[crc@openshift-local ~]$ crc config set enable-cluster-monitoring true
Successfully configured enable-cluster-monitoring to true
[crc@openshift-local ~]$ crc start -p pull-secret -c 7 -m 28000
これにより、オーダした仮想サーバの8Core/32GB Memのサーバリソースのうち、7Core/28GB Mem分のリソースをOpenShift Local用に割り当てた上で、クラスター監視機能を追加稼働させたクラスターを開始できます。
最後に、ブラウザーからダッシュボードに接続して、kubeadminでログインし、左の監視のメニューにて、監視機能が正常に働いている事を確認します。
以上、IBM Cloud上で、OpenShift Localの環境を稼働させ、ローカルPC(Mac)からリモート接続を行い、OpenShiftを試せるまでの一連の手順についてご紹介させていただきました。
今回は「まず、安価に、簡単に、OpenShiftを試用できる環境を作る」ということを目標としましたので、セキュリティ的には、あまり堅牢な環境ではありません。その事を十分に念頭に入れて頂いた上で、OpenShiftの環境を色々触ってスキルアップしたい方などの、何かのご参考になれば幸いです。
また、次の機会にでも、今回の環境に対して、VPNを使ったセキュアな接続の方法(環境の作り方)などについて、記事にできればと考えています。