RedHat OpenShiftのNode-REDオペレータを利用する方法

日立製作所OSSソリューションセンタの横井です。この記事では、OpenShift上でNode-REDを利用する方法について説明します。OpenShiftのウェブコンソールのおかげで、初心者の方でもコマンドライン操作なしで、Node-RED環境を簡単にデプロイすることができます。最近、OpenShiftカタログには、次のようなNode-REDオペレータが用意されるようになりました。

![0.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/287766/0febbcad-69e9-ccff-c413-4a573e6f76b2.png)
[RedHatエコシステムカタログ](https://catalog.redhat.com/software/containers/search?q=node-red)

2020年12月現在、カタログには4つの項目があります。この中の「Node-RED Operator」をKatacoda上のOpenShift環境に導入してみましょう。

# (1) OpenShiftのウェブコンソールにアクセス

まず、次のURLを使ってOpenShift Playground 4.6にアクセスします。このプレイグラウンド環境は、OpenShiftを無料で試用できる環境であり、60分間のみ利用できます。

https://learn.openshift.com/playgrounds/openshift46

Welcomeサイドバーにある赤い「START SCENARIO」ボタンをクリックすると、コマンドラインを使用してOpenShift環境を操作できるターミナルが表示されます。他のブラウザーウィンドウでOpenShiftウェブコンソールを開くには、Terminalタブの横にあるConsoleタブの外部リンクをクリックします。ターミナルウィンドウが表示されていないとKatacoda環境が意図せず終了してしまうため、ウェブコンソールを使用しているときは常にこのターミナルを開いたままにしておく必要があります。

![2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/287766/605ddbbd-901b-ea75-7e0a-62c72669f3f5.png)

ウェブコンソールにログインするには、UsernameとPasswordの両方のフィールドに「admin」を入力します。

![3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/287766/4f15cd55-45c4-a0de-c040-f9b70040360d.png)

# (2) Node-REDオペレータをインストール

次の手順では、ウェブコンソール上でNode-REDオペレータをインストールします。オペレーターをセットアップするには、左側のメニューで「Operators」->「OperatorHub」を選択します。テキストフィールドにキーワードとして「node-red」という単語が入力されると、Marketplaceタグを持つオペレータと、タグなしのオペレーターの2つのNode-REDオペレータが表示されます。Marketplaceタグが付いているオペレーターは購入が必要なため、この手順では1つ目のMarketplaceタグがついていないNode-REDオペレータをクリックします。

![4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/287766/fbedc84f-5537-7ef6-a929-4df7fc873004.png)

次に、デフォルトの設定ままで「Install」ボタンをクリックします。

![6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/287766/20a6d394-3099-cf6a-6e74-f178e41e1b6b.png)

インストール処理には約1分かかります。インストールが完了すると、セットアップの状態が「Installing operator」から「Installed operator - ready for use」に変わります。

![7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/287766/f84ceb50-64b0-4c51-701c-b94c9f85e79e.png)

# (3) Node-REDコンテナをデプロイ

インストールの状態が「Installed operator - ready for use」になったら、アカウントを「Administrator」から「Developer」へ変更します。役割をDeveloperにすることで、Node-REDコンテナをカタログからデプロイできるようになります。

![8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/287766/a96f07ce-fcd1-150d-4ff0-6b97fb04137c.png)

左のメニューの「+Add」をクリック後、Projectとして「openshift-operators」を選択し、「Form catalog」に移動します。

![9.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/287766/3a2ca416-6a46-2fb3-32b0-68331e6c4402.png)

次のスクリーンショットに示すように、カタログには3つの項目が出現します。この3つのうち「Node-RED」をクリックします(マニュアルが十分に記載されていないため、Backup Node-REDコンテナとRestore Node-REDの使い方は現在のところ分かりませんでした)。

![10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/287766/8eccdeac-4a8e-fffe-27cb-ae77315cfd50.png)

デプロイメントの設定で、「YAML View」を選択してデフォルト値を変更します。

![12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/287766/48f962a2-678a-1197-9e11-b2d57467e779.png)

YAML Viewでは、`adminpassword`と永続ボリュームの`enabled`値の2つの値を次のように変更する必要があります。

```
spec:
  adminpassword: $2a$08$zZWtXTja0fB1pzD4sHCMyOCMYz2Z6dNbM6tl8sJogENOMcxWV9DN.
  persistentvolume:
    enabled: false
```

`adminpassword` は、Node-REDフローエディタのログインパスワードのハッシュ値です。
新たにYAML Viewに貼り付けられたハッシュ値は「password」を意味します。オリジナルのハッシュ値を生成する方法の詳細を知りたい場合は、[Node-REDの日本語ドキュメント](https://nodered.jp/docs/user-guide/runtime/securing-node-red#%E3%83%A6%E3%83%BC%E3%82%B6%E5%90%8D%E3%83%91%E3%82%B9%E3%83%AF%E3%83%BC%E3%83%89%E3%81%AB%E3%82%88%E3%82%8B%E8%AA%8D%E8%A8%BC)を参照してください。また、Katacoda環境ではStorage Classを使用できないため、`enabled`値は`false`である必要があります。

![15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/287766/95284ec2-5a5e-b721-b879-ec585d9b4772.png)

Createボタンを押した後は、ウェブコンソールの画面がTopology画面に切り替わります。この画面では、インスタンスのリングの色によってデプロイの進行状況を確認できます。デプロイが正常に完了すると、約2分以内にNode-REDインスタンスのリングが青色で表示されます。

![16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/287766/376ed197-555c-a1a5-9a42-c0de923f02b1.png)

インスタンスの青いリングには、Node-REDフローエディタを開くための外部ボタンがあります(もしNode-REDインスタンスのURLを表示したい場合は、青色のリングをクリックして、詳細情報のサイドバーを開きます。このサイドバーの中のRoutesフィールドに、Node-REDインスタンスのURLが表示されます)。この外部ボタンをクリックすると、新規ブラウザータブが開き、ログインUIが表示されます。Node-REDフローエディタにログインするには、ユーザ名として「admin」、パスワードとして「password」を入力します。

![ja17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/287766/ab672c52-bffa-ea5d-92be-81ec3b6bd0b4.png)

デプロイしたNode-REDインスタンスは、インターネットからアクセスできます。不正なアクセスをさせないため、Node-REDには、定義済みのユーザーのみを許可するログインUIが装備されています。

Node-REDオペレータによって作成されたNode-REDフローエディタでは、デフォルトでプロジェクト機能が有効になっています。この手順では、gitリポジトリにフローデータを配置する機能は必要ありません。そのため、「後にする」ボタンをクリックすることで、git設定を使用しなくても済むようになります。

![ja18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/287766/961791be-0e20-86f3-ccbe-9aa9c149e5b0.png)

ここからは、Node-REDフローエディタを通常どおり使用できます。例として、injectノードとdebugノードを使用して動作を確認しました。

![ja21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/287766/f7d2eeb1-95ea-6ed5-f5e4-ca5e6aeb4f06.png)

この記事では、初心者ユーザーがRedHat OpenShiftのオペレータを使用して、Node-REDの環境を簡単にデプロイできることを説明しました。OpenShiftには、Node-REDに接続できるGitLab、MySQL、その他のミドルウェアなどの多目的なコンポーネントがあるという利点があると考えています。OpenShiftのこの利点について説明するために、TensorFlowモデルを含むDockerコンテナとNode-REDを統合する方法について、[次の記事](https://qiita.com/kazuhitoyokoi/items/0f9b585fe36670a43d1a)で執筆する予定です。