Red Hat OpenShift on IBM Cloud (ROKS)

OpenStackやOpenShiftなどのCloud製品を担当しているソリューションアーキテクトの輿水です。

Red Hat OpenShift on IBM Cloud (ROKS)については以前にHands on Lab環境と使ってみるという記事を書きましたが、半年くらい経過しているのでRed Hat OpenShift on IBM Cloud (ROKS)を再度チラッと見てみます。

rheb.hatenablog.com

rheb.hatenablog.com


今回のお題

  • Red Hat OpenShift on IBM Cloud CLI
  • Red Hat OpenShift on IBM Cloud コンソールの利用
    • クラスター作成
    • クラスターアップデート
    • ノード追加
  • クラスターの中を覗いてみる
  • Red Hat OpenShift on IBM Cloud コスト

Red Hat OpenShift on IBM Cloud CLI

前回はCLIはまったく使用せず、Red Hat OpenShift on IBM Cloud コンソールを利用してクラスターを作成しました。他のクラウドではCLIを利用するケースが多いので、IBM CloudのCLIも確認してみます。OpenShift CLI のインストール手順にしたがって導入します。

  • IBM Cloud CLI (ibmcloud)
  • Red Hat OpenShift on IBM Cloud プラグイン (OpenShift クラスターの ibmcloud oc)
  • IBM Cloud Container Registry プラグイン (ibmcloud cr)
  • IBM Cloud Kubernetes Service 可観測性プラグイン (ibmcloud ob)

IBM Cloud CLIをインストールした後の作業は、コマンドラインでibmcloudにログインしておく必要があります。以下のうように入力を求められるので、Webにログインする際に利用しているメールアドレスをパスワードを入力します。初回のみリージョンの選択肢が表示されるので適切なものを選んでください。

$ ibmcloud login

API エンドポイント: https://cloud.ibm.com

Email> xxxxxx@redhat.com(IBM Cloudに登録したメールアドレス)

Password>(IBM Cloudに登録したパスワード)
認証中です...
OK

リージョンを選択します (または Enter キーを押してスキップします):
1. au-syd
2. in-che
3. jp-osa
4. jp-tok
5. kr-seo
6. eu-de
7. eu-gb
8. ca-tor
9. us-south
10. us-east
11. br-sao
数値を入力してください> 4
ターゲットのリージョン jp-tok

API エンドポイント:      https://cloud.ibm.com
リージョン:              jp-tok
ユーザー:                xxxxxx@redhat.com
アカウント:              xxxxxx's Account (xxxxxx) <-> xxxxxx

▼手順に従ってCLIをインストール

$ ibmcloud plugin install container-service
リポジトリー 'IBM Cloud' から 'container-service' を検索しています...
プラグイン 'container-service/kubernetes-service 1.0.295' がリポジトリー 'IBM Cloud' 内で見つかりました
プラグイン 'container-service/kubernetes-service 1.0.208' は既にインストールされていました。 'container-service/kubernetes-service 1.0.295' で更新しますか? [y/N] > y
バイナリー・ファイルをダウンロードしようとしています...
 29.09 MiB / 29.09 MiB [============================================] 100.00% 5s
30501488 バイトがダウンロードされました
バイナリーをインストールしています...
OK
プラグイン 'container-service 1.0.295' は ~/.bluemix/plugins/container-service に正常にインストールされました。 'ibmcloud plugin show container-service' を使用して詳細を表示してください。

$ ibmcloud plugin install container-registry
リポジトリー 'IBM Cloud' から 'container-registry' を検索しています...
プラグイン 'container-registry 0.1.536' がリポジトリー 'IBM Cloud' 内で見つかりました
プラグイン 'container-registry 0.1.497' は既にインストールされていました。 'container-registry 0.1.536' で更新しますか? [y/N] > y
バイナリー・ファイルをダウンロードしようとしています...
 26.27 MiB / 26.27 MiB [============================================] 100.00% 3s
27547088 バイトがダウンロードされました
バイナリーをインストールしています...
OK
プラグイン 'container-registry 0.1.536' は ~/.bluemix/plugins/container-registry に正常にインストールされました。 'ibmcloud plugin show container-registry' を使用して詳細を表示してください。

$ ibmcloud plugin install observe-service
リポジトリー 'IBM Cloud' から 'observe-service' を検索しています...
プラグイン 'observe-service 1.0.61' がリポジトリー 'IBM Cloud' 内で見つかりました
バイナリー・ファイルをダウンロードしようとしています...
 17.70 MiB / 17.70 MiB [============================================] 100.00% 2s
18561888 バイトがダウンロードされました
バイナリーをインストールしています...
OK
プラグイン 'observe-service 1.0.61' は ~/.bluemix/plugins/observe-service に正常にインストールされました。 'ibmcloud plugin show observe-service' を使用して詳細を表示してください。

$ ibmcloud plugin list
インストール済みプラグインをリストしています...

プラグイン名                           バージョン   状況                 サポートされるプライベート・エンドポイント
cloud-functions/wsk/functions/fn       1.0.49       更新が使用可能です   false
cloud-object-storage                   1.2.1        更新が使用可能です   false
container-registry                     0.1.536                           true
container-service/kubernetes-service   1.0.295                           false
observe-service/ob                     1.0.61                            false

Red Hat OpenShift on IBM Cloud リソースを作成および管理には「ibmcloud oc」を利用します。AWSのrosaコマンド、AROのazコマンドと同じような使用感です。

これはあくまで個人的な感覚ですが、Red Hat OpenShift on IBM Cloudに関しては、Red Hat OpenShift on IBM Cloud コンソールが直感的にわかりやすく、クラスターの作成やノードの追加はRed Hat OpenShift on IBM Cloud コンソールで実施した方が簡単です。すべてのコマンドを対比した訳はないのですが、ibmcloud ocコマンドで出来ることはほぼRed Hat OpenShift on IBM Cloud コンソールから実施できると思います。

クラスター作成

Red Hat OpenShift on IBM Cloud コンソールから「Create Cluster」を選びクラスターを作成します。シングルゾーンまたはマルチゾーン、使用するワーカーのvCPUやメモリ、台数を指定できます。昨年末に作成した際はバージョンが4.5でしたが、現在はデフォルトが4.6になっています。また、4.7へのアップデートも可能です。

▼シングルゾーン構成 f:id:mkoshimizu:20210628145348p:plain ▼マルチゾーン構成 f:id:mkoshimizu:20210628145408p:plain

クラスター作成後のクラスター管理画面が以前より使い勝手がよくなっている印象です。Add-onの導入状況の表示(インストールもそこから可)や右側に「IBM Cloud Shell」や「Oauth token request」へのリンクを出すことができたりします。

f:id:mkoshimizu:20210628163741p:plain

クラスターアップデート

Red Hat OpenShift on IBM Cloudでは以下の2通りの方法があります。

  • OpenShiftのWebコンソールからアップデート
  • Red Hat OpenShift on IBM Cloud コンソールのクラスター管理画面(もしくはコマンド)でアップデート

作成したクラスター(デフォルトで作成すると4.6)をクラスター管理画面から4.6から4.7にアップデートしてみます。後述しますが、クラスター管理画面でのアップデートは「ibmcloud oc cluster master update」に該当するようで、マスターの更新を行います。ワーカーノードは別途アップデートを行う必要があります。

▼クラスター管理画面 f:id:mkoshimizu:20210628160227p:plain

▼Webコンソールでの進捗確認ができる f:id:mkoshimizu:20210628160637p:plain f:id:mkoshimizu:20210628160958p:plain

ノードの追加

作成したクラスターへの新しいワーカーノードを追加もクラスター管理画面から実施できます。同じworker poolにノードを追加する場合は[Resize]になります。追加と思って[Add]を選ぶと新規のworker poolを作ってしまいます。

▼同一worker poolへのノードの追加 f:id:mkoshimizu:20210628162756p:plain ▼新規worker poolの追加 f:id:mkoshimizu:20210628162816p:plain

クラスターの中を覗いてみる

AROクラスターでも実施したように、中身をちょっと見てみましょうといくつかコマンドを試してみました。Red Hat OpenShift on IBM Cloudではマスターノードは利用者からは認識できない状況になっています。「oc get nodes」コマンドで確認できるのはワーカーのみです。ROLESに「master,worker」と出ますがマスターノードを兼ねている訳ではありません。この点が他のマネージドOpenShiftと異なる点で、マスターに関してはIBM様にお任せとなってます。

$ oc get nodes
NAME             STATUS   ROLES           AGE    VERSION
10.212.234.207   Ready    master,worker   160m   v1.20.0+2817867
10.212.234.217   Ready    master,worker   160m   v1.20.0+2817867
10.212.234.220   Ready    master,worker   160m   v1.20.0+2817867
10.212.234.223   Ready    master,worker   6h9m   v1.19.0+c3e2e69
10.212.234.233   Ready    master,worker   160m   v1.20.0+2817867
10.212.234.234   Ready    master,worker   6h8m   v1.19.0+c3e2e69
10.212.234.243   Ready    master,worker   6h8m   v1.19.0+c3e2e69
10.212.234.245   Ready    master,worker   141m   v1.20.0+2817867

$ oc whoami
IAM#mkoshimi@redhat.com

$ oc get machineset -A
error: the server doesn't have a resource type "machineset"

ibmcloud ocコマンドでクラスターの中身をチラ見してみます。

▼クラスター一覧
$  ibmcloud oc cluster ls
OK
Name                       ID                     State     Created       Workers   Location   Version                 Resource Group Name   Provider
mycluster-osa22-b3c.4x16   c3ci566o0ios9ivro38g   normal   2 hours ago   9          Osaka          4.6.28_1543_openshift   Default                classic
mycluster-tok02-b3c.4x16   c3chubft05l5kt4orku0   normal   3 hours ago   3          Tokyo          4.7.12_1520_openshift   Default                classic


▼特定のクラスターのリソース状況
$ ibmcloud oc cluster get --cluster c3chubft05l5kt4orku0 --show-resources
Retrieving cluster c3chubft05l5kt4orku0 and all its resources...
OK

Name:                           mycluster-tok02-b3c.4x16
ID:                             c3chubft05l5kt4orku0
State:                          normal
Status:                         All Workers Normal
Created:                        2021-06-28T01:00:51+0000
Location:                       tok02
Pod Subnet:                     172.30.0.0/16
Service Subnet:                 172.21.0.0/16
Master URL:                     https://c100-e.jp-tok.containers.cloud.ibm.com:30608
Public Service Endpoint URL:    https://c100-e.jp-tok.containers.cloud.ibm.com:30608
Private Service Endpoint URL:   -
Master Location:                Tokyo
Master Status:                  Ready (5 hours ago)
Master State:                   deployed
Master Health:                  normal
Ingress Subdomain:              mycluster-tok02-b-490845-162f4dd9d7174cb8b0ffbc223c7b2a54-0000.jp-tok.containers.appdomain.cloud
Ingress Secret:                 mycluster-tok02-b-490845-162f4dd9d7174cb8b0ffbc223c7b2a54-0000
Ingress Status:                 healthy
Ingress Message:                All Ingress components are healthy
Workers:                        8
Worker Zones:                   tok02
Version:                        4.7.12_1520_openshift
Creator:                        -
Monitoring Dashboard:           -
Resource Group ID:              461c4fdfb3aa498eb230ce340f6023fa
Resource Group Name:            Default

Addons
Name                          Enabled
openshift-container-storage   true

Subnet VLANs
VLAN ID   Subnet CIDR        Public   User-managed
3108638   10.212.77.216/29   false    false
3108636   162.133.94.40/29   true     false

クラスターのアップデートをクラスター管理画面から実施できると書きましたが、クラスターに属しているワーカーノードの状態を確認すると、アップデート前に作成したワーカーノードについては「* To update to 4.7.16_1522_openshift version, run 'ibmcloud ks worker update'. Review and make any required version changes」という記載があり、ワーカーノードは手動でアップデートする必要があります。

$ ibmcloud oc worker ls --cluster c3chubft05l5kt4orku0
OK
ID                                                       Public IP       Private IP       Flavor               State    Status   Zone    Version
kube-c3chubft05l5kt4orku0-myclusterto-default-000001c2   162.133.80.21   10.212.234.234   b3c.4x16.encrypted   normal   Ready    tok02   4.6.34_1546_openshift*
kube-c3chubft05l5kt4orku0-myclusterto-default-000002de   162.133.80.25   10.212.234.243   b3c.4x16.encrypted   normal   Ready    tok02   4.6.34_1546_openshift*
kube-c3chubft05l5kt4orku0-myclusterto-default-000003c8   162.133.80.24   10.212.234.223   b3c.4x16.encrypted   normal   Ready    tok02   4.6.34_1546_openshift*
↑最初に作成したワーカー

kube-c3chubft05l5kt4orku0-myclusterto-default-000008a7   162.133.80.23   10.212.234.245   b3c.4x16.encrypted   normal   Ready    tok02   4.7.16_1522_openshift
↑クラスターを4.6から4.7にアップデートした後に、Resizeで追加されたワーカー

kube-c3chubft05l5kt4orku0-myclusterto-myworke-00000445   162.133.80.19   10.212.234.233   b3c.4x16.encrypted   normal   Ready    tok02   4.7.16_1522_openshift
kube-c3chubft05l5kt4orku0-myclusterto-myworke-000005d9   162.133.80.26   10.212.234.207   b3c.4x16.encrypted   normal   Ready    tok02   4.7.16_1522_openshift
kube-c3chubft05l5kt4orku0-myclusterto-myworke-00000675   162.133.80.22   10.212.234.217   b3c.4x16.encrypted   normal   Ready    tok02   4.7.16_1522_openshift
kube-c3chubft05l5kt4orku0-myclusterto-myworke-0000078b   162.133.80.30   10.212.234.220   b3c.4x16.encrypted   normal   Ready    tok02   4.7.16_1522_openshift
↑クラスターを4.6から4.7にアップデートした後に、新しいワーカープールを追加して出来たワーカー

* To update to 4.7.16_1522_openshift version, run 'ibmcloud ks worker update'. Review and make any required version changes

ここ、さりげにksコマンドになってますが、特定のワーカーのアップデートしている間はそのワーカーで稼働していたpodは他のワーカーに退避されるようにしておく必要があります。

$ ibmcloud ks worker update --cluster c3chubft05l5kt4orku0 --worker kube-c3chubft05l5kt4orku0-myclusterto-default-000001c2
Updating the worker node version can cause downtime for your apps and services. During the update, all pods might be rescheduled onto other worker nodes and data is deleted if not stored outside the pod. To avoid downtime, ensure that you have enough worker nodes to handle your workload while the selected worker nodes are updating.
You might need to change your YAML files for deployments before updating. Review the docs for details: 'https://ibm.biz/upworker'
Are you sure you want to update your worker node [kube-c3chubft05l5kt4orku0-myclusterto-default-000001c2] to 4.7.16_1522_openshift? [y/N]> y

Processing kube-c3chubft05l5kt4orku0-myclusterto-default-000001c2...
Processing on kube-c3chubft05l5kt4orku0-myclusterto-default-000001c2 complete.

最初にコマンド実行したワーカーがアップデートされたことを確認してから、順次このコマンドを実施します。

$ ibmcloud oc worker ls --cluster c3chubft05l5kt4orku0
OK
ID                                                       Public IP       Private IP       Flavor               State    Status   Zone    Version
kube-c3chubft05l5kt4orku0-myclusterto-default-000001c2   162.133.80.21   10.212.234.234   b3c.4x16.encrypted   normal   Ready    tok02   4.6.34_1546_openshift --> 4.7.16_1522_openshift (pending)
kube-c3chubft05l5kt4orku0-myclusterto-default-000002de   162.133.80.25   10.212.234.243   b3c.4x16.encrypted   normal   Ready    tok02   4.6.34_1546_openshift --> 4.7.16_1522_openshift (pending)
kube-c3chubft05l5kt4orku0-myclusterto-default-000003c8   162.133.80.24   10.212.234.223   b3c.4x16.encrypted   normal   Ready    tok02   4.6.34_1546_openshift --> 4.7.16_1522_openshift (pending)
kube-c3chubft05l5kt4orku0-myclusterto-default-000008a7   162.133.80.23   10.212.234.245   b3c.4x16.encrypted   normal   Ready    tok02   4.7.16_1522_openshift
kube-c3chubft05l5kt4orku0-myclusterto-myworke-00000445   162.133.80.19   10.212.234.233   b3c.4x16.encrypted   normal   Ready    tok02   4.7.16_1522_openshift
kube-c3chubft05l5kt4orku0-myclusterto-myworke-000005d9   162.133.80.26   10.212.234.207   b3c.4x16.encrypted   normal   Ready    tok02   4.7.16_1522_openshift
kube-c3chubft05l5kt4orku0-myclusterto-myworke-00000675   162.133.80.22   10.212.234.217   b3c.4x16.encrypted   normal   Ready    tok02   4.7.16_1522_openshift
kube-c3chubft05l5kt4orku0-myclusterto-myworke-0000078b   162.133.80.30   10.212.234.220   b3c.4x16.encrypted   normal   Ready    tok02   4.7.16_1522_openshift

$ ibmcloud oc worker ls --cluster c3chubft05l5kt4orku0
OK
ID                                                       Public IP       Private IP       Flavor               State    Status   Zone    Version
kube-c3chubft05l5kt4orku0-myclusterto-default-000001c2   162.133.80.21   10.212.234.234   b3c.4x16.encrypted   normal   Ready    tok02   4.7.16_1522_openshift
kube-c3chubft05l5kt4orku0-myclusterto-default-000002de   162.133.80.25   10.212.234.243   b3c.4x16.encrypted   normal   Ready    tok02   4.7.16_1522_openshift
kube-c3chubft05l5kt4orku0-myclusterto-default-000003c8   162.133.80.24   10.212.234.223   b3c.4x16.encrypted   normal   Ready    tok02   4.7.16_1522_openshift
kube-c3chubft05l5kt4orku0-myclusterto-default-000008a7   162.133.80.23   10.212.234.245   b3c.4x16.encrypted   normal   Ready    tok02   4.7.16_1522_openshift
kube-c3chubft05l5kt4orku0-myclusterto-myworke-00000445   162.133.80.19   10.212.234.233   b3c.4x16.encrypted   normal   Ready    tok02   4.7.16_1522_openshift
kube-c3chubft05l5kt4orku0-myclusterto-myworke-000005d9   162.133.80.26   10.212.234.207   b3c.4x16.encrypted   normal   Ready    tok02   4.7.16_1522_openshift
kube-c3chubft05l5kt4orku0-myclusterto-myworke-00000675   162.133.80.22   10.212.234.217   b3c.4x16.encrypted   normal   Ready    tok02   4.7.16_1522_openshift
kube-c3chubft05l5kt4orku0-myclusterto-myworke-0000078b   162.133.80.30   10.212.234.220   b3c.4x16.encrypted   normal   Ready    tok02   4.7.16_1522_openshift

Red Hat OpenShift on IBM Cloud コスト

Red Hat OpenShift on IBM Cloudではマスター部分は見えない状態で、料金表にはワーカーノードの記載のみがあります。

ノード インスタンスタイプ vCPU RAM DISK インスタンス料金 OpenShift料金
マスターノード - - - - -
ワーカーノード 4 vCPU 16GB RAM 仮想 - 共有 4 16GB 25GB SSD - $0.44/hour

マルチゾーンの場合はMultizone load balancerも必要になります。その他、ストレージやネットワーク利用分も従量課金するのは他のクラウド製品と同様です。

参照:OpenShift料金表 (参照にはIBM Cloudのアカウントでログインが必要)

▼以下はコンソールから確認できる費用

初期設定で円を選んでしまいドルに変える方法がわからず。 f:id:mkoshimizu:20210629113237p:plainf:id:mkoshimizu:20210629113254p:plain

* 各記事は著者の見解によるものでありその所属組織を代表する公式なものではありません。その内容については非公式見解を含みます。