『OpenShift は GUI でもつ』ー OpenShift Web Console のヒミツ

お久しぶりです。レッドハットでクラウドインフラを生業にしている宇都宮です。

さてこれは OpenShift Advent Calendar 2022 の5日目の記事なのですが、名だたる超人達がディープな記事を書いているので、それはそちらにおまかせして、僕は相当どうでもいいネタをダラダラと書きます。

OpenShift は何でもつ?

伊勢は津でもつ 津は伊勢でもつ 尾張名古屋は城でもつ 

超有名な言い回しがありますが、これを見て私はこう思う。それでは、OpenShift は何でもつ?

OpenShift は Kubernetes でもつ。
うん、そうだ。間違いない。が、そういうことじゃない。あと語呂が悪い。

OpenShift は Operator でもつ。
おお、これはかなり核心を突いている。これでいいじゃないかと思えるくらいだ。でもやっぱり語呂が悪い。

生来のへそ曲がりなうつぼは変化球を投げたい。色々考えた結果、あえて私はこう叫びたい。

OpenShift は GUI でもつ

OpenShift の GUI のよさ

OpenShift の GUI は OpenShift Web Console と呼ばれるものですが、これが素晴らしい。
まず、日本語表示が選べる。この手のソフトウェアで日本語 GUI があるのは相当レアです。たぶんレアだと思う。レアなんじゃないかな。まちょっと覚悟はしておけ?
しかも中国語や韓国語も選べて、英語も入れると4ヵ国語も話せる。珍しいと思ってハングルも読めないのに韓国語に変えてしまう、そして言語設定の画面に戻れなくて焦る、という経験は皆さんも頷かれると思います。

そして管理者画面と開発者画面があることは、OpenShift な諸兄姉はご存知でしょう。
管理者画面では、ユーザの権限によって表示されるメニューがダイナミックに変わるのは当たり前。Deployment などのリソースを YAML だけでなくウィザード的な画面を使って作ることもできます。
開発者画面では、アプリソースコードからコンテナイメージをビルドし、それをデプロイするまでを GUI だけで設定できます。デプロイしたアプリのトポロジーをビジュアルに表示できる機能もあります。

今紹介した素晴らしさは Web Console のメジャーな面です。しかし私はこんなメジャーなことを紹介するために記事を書く男ではない。

今日私が紹介したいのはここ。

ここって何て呼ぶんでしょうかね。ヘッダー?
正直、Web Consoleでも頻繁に触らない部分と言えます。しかしここには面白い秘密が隠されているので、今日はそれを順番に簡単に紹介していきます。

OpenShift Web Console の上のメニュー

ハンバーガーボタン(三本線のやつ)

はい、まずは左端の三本線のアイコンです。ハンバーガーボタンとかハンバーガーアイコンとか呼ぶそうなので、こう呼ぶとそこはかとなくプロっぽい感じが出せます。

これは単純に、左側のメニューを出したり隠したりするだけのボタンです。
モニター全画面で表示するときは別に隠さなくてもいいんだけど、モニター左半分にGUI、右半分にターミナルとか両方開いておきたい場合に使ったりします。

ここはこれ以上言うこともないので次へ。

ロゴ

次にロゴです。ここには "Red Hat OpenShift" とか "Red Hat OpenShift Service on AWS" とか、プラットフォームごとに違うロゴが表示されてます。

実はこのロゴ、好きなものにカスタマイズできるんですよ。知ってました?

ちょっとやってみましょうか。例えば、冒頭のいらすとやさんの画像に変えてみましょう。

まずは変更先の画像を ConfigMap として up します。GUI の紹介の記事で CLI でやるのは悔しい気持ちもあるんですが、CLI でやるほうが話早いので、CLI でやります(おい)

$ ll
total 376
-rwxr-xr-x. 1 lab-user users 381226 Dec  1 08:56 text_animals_ogenki.png
$ oc create configmap console-custom-logo --from-file ./text_animals_ogenki.png -n openshift-config
configmap/console-custom-logo created

あとはデフォルトで作られてる consoles.operator.openshift.io カスタムリソースを変更していきます。ここは GUI でも構いません。
管理者画面で、

管理 (Administration) > クラスター設定 (Cluster Settings) > 設定 (Configuration) > Console; operator.openshift.io

と行って、YAML で次のように spec.customization. 以下を追記してセーブ。
customProductName の部分は自由で、ブラウザのタブの部分に表示されます。

spec:
  customization:
    customLogoFile:
      key: text_animals_ogenki.png
      name: console-custom-logo
    customProductName: OGENKI Logo

oc edit コマンドや oc patch コマンドを使ってももちろんOK。

後は openshift-console Operator が自動的に Pod を作り直すので2,3分待って画面をリロードすると、

とこんな感じになります。

誰得だよこれ?と思うかもですが、例えば外販事業として Kubernetes as a Service 的なサービスを提供したいユーザーさんが、Web Console は使いたいけど自前のロゴを表示したい、という場合に便利ですね。

ちなみにここの画像の大きさは高さ 60px が最大です。それより大きな画像は、アスペクト比固定で高さ 60px に縮小されます。

ベントーメニュー(ルービックキューブみたいなやつ)

次に9個のドットが並んだルービックキューブみたいなアイコンです。お弁当みたいだからベントーメニューとか呼ばれるらしい、1800円くらいするちょっとええ弁当やね。

ここにはいろんなリンクが表示されます。

OpenShift Container Platform だとデフォルトで OpenShift Cluster Manager での当該クラスタのページと、Red Hat Hybrid Cloud Console のリンクが表示されてます。

OpenShift でインストールする Operator によっては、別の GUI のページが用意されるものがあります。
そういう GUI のページへのリンクが、Operator インストールと同時に自動的にここに追加されることもあります。

例えば、OpenShift GitOps Operator をインストールすると、Argo CD の GUI へのリンクが追加されます。

このリンクのエントリーは、ConsoleLink というカスタムリソースで管理されてます。ゆえに、このカスタムリソースを作ってやれば、自由にリンクを追加することができます。

試しにこの赤帽エンジニアブログのリンクを追加してみましょう。 管理者画面で、

管理 (Administration) > カスタムリソース定義 (CustomResourceDefinitions) > ConsoleLink > インスタンス(Instance) > コンソールのリンクの作成(Create ConsoleLink)

と行って、次のようにYAMLを書いて作成ボタンを押す。

apiVersion: console.openshift.io/v1
kind: ConsoleLink
metadata:
  name: rheb
spec:
  applicationMenu:
    imageURL: https://cdn.profile-image.st-hatena.com/users/rheb/profile.gif?1538617339
    section: 参考になるサイト達 
  href: 'https://rheb.hatenablog.com/'
  location: ApplicationMenu
  text: 赤帽エンジニアブログ

そうすると、次のようにリンクが追加されます。

localtion の部分に "ApplicationMenu" を選ぶとこのベントーメニューに追加されますが、他にも "HelpMenu" や "UserMenu" など、別のところにリンクを表示されることもできます。

通知

お次はベルのアイコンです。ここには OpenShift Monitoring のアラートルールに引っ掛かって Firing 状態のアラートが表示されます。
これは OpenShift Monitoring の View 権限があるユーザーにのみ表示されます。

アラートの Severity に合わせて、"重大なアラート(Critical Alerts)"、"他のアラート(Other Alerts)"、"推奨事項(Recommendations)" と分けて表示されます。
ベルの横には、"重大なアラート(Critical Alerts)" と "他のアラート(Other Alerts)" の合計数が表示されます。

ネジ頭みたいなやつ

ネジ頭みたいなプラスのアイコン、これが私の超多用する便利機能です。この記事はここだけ覚えてもらえば8000点。
これを押すと、YAMLを直に書いてリソースを作れる画面に行きます。

よくありますよね、githubとかで見つけたYAMLをパクりたい時。
そういう時、CLI で curl とか wget とかでファイルダウンロードしてませんか?
もしくはブラウザでコピーしてvimとかemacsとかにペーストとかしていませんか?ヒアドキュメントでやってませんか?
今日からは、ブラウザでYAMLをコピーしたら、そのまま Web Console にペースト!よしなに編集したらボタン押して以上終わり!

いやもちろんね、CLI でやるのが悪いとは言いませんよ。マニフェストはファイルとして保管しないといけないルールとかもあるでしょうし、そういう場合は話は別です。
ただ、単純にYAMLをコピーしてそのまま oc create/apply したいケースって割とあると思うんです。その場合は、このネジ頭を使ってやると話が早いです。

ヘルプ

次はハテナマークで、シンプルにこれはヘルプです。OpenShift のドキュメントやサポートケースなどへのリンクが表示されています。

CLIツールのダウンロード先にもここから行けます。oc だけでなく helm とか odo とかもダウンロードできるので、開発者の人が自身の端末にこれらの CLI をインストールしたいときに便利です。

ちなみに、前述の ConsoleLink で location に "HelpMenu" を指定すると、ここにリンクが作られます。

ユーザー

最後はユーザーメニューです。ここは結構触ったことがある諸兄姉も多いのではないでしょうか。

"ログインコマンドのコピー"と書いているけど、実質的には API トークンの発行ですね。 発行されたトークンを含めて、CLI で oc login する時のワンライナーや、直接 curl で叩くコマンドが表示されます。

"ユーザー設定"は、言語とか表示系のいろんな設定ができます。

まとめ

さて、ためになるようなならないような話をダラダラしてきましたが、OpenShift の GUI のマイナーな部分について紹介しました。

クラウドネイティブ界隈では、CLI をバリバリ叩けるのが必要不可欠~みたいに思われる人もいらっしゃるかもしれません。 どうしても GUI は操作履歴を残すのが CLI より大変なので、CLI 指向になるのは仕方ないところかなと思います。

ですが、OpenShift は GUI が結構イケます。GUI のいいところは、間違えないところと結果的に早いところかなと思います。
例えば、私も常々お世話になっている OperatorHub。CLI で OperatorGroup や Subscription といったカスタムリソースを作って Operator をインストールするのも悪くないですが、GUI が使えるならそのほうがまず syntax を間違えないし、その結果早いです。
OpenShift Data Foundation のように、結構多くのカスタムリソースを作るソフトウェアでも、GUI でウィザードがあると誰でも簡単に間違いなく構成できるようになります。

そういうわけで、みんなもっと OpenShift の GUI を使いましょう。

伊勢は津でもつ 津は伊勢でもつ OpenShift は GUI でもつ

うーん、語呂がいい。

ということで今日はここまで。

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