RenderでNode-REDを動かす(クレデンシャル情報の保存、初期フローの読み込み、ヘルスチェックの有効化)

# はじめに

Herokuのdyno無料枠が廃止になることをきっかけに、代替え先について検討しました。

https://qiita.com/kitazaki/items/970a10cbd1059c89aca5

2022年10月7日時点で3つの候補が見つかっています。

- Render
- Railway
- Fly.io

Node-REDを永続的に動かす場合、セキュリティ上、第三者に利用されないためにクレデンシャル情報の保存が課題になります。
初期フローの読み込み、変更したフロー情報の保持や、稼働状態の監視(ヘルスチェック)も必要になります。

# Render

https://render.com/

Renderにはシークレット情報を設定する機能がありますので、それを利用してクレデンシャル情報(settings.js)を保存する方法を説明します。
また、監視(ヘルスチェック)の機能もありますので、それを利用して稼働状態を監視し、問題が発生した場合にアラートを通知する方法を説明します。

## Environment / Secret Files (settings.js)

### 手順1.

「New +」を押して、「Web service」を選択します。

![0.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/ae5fa7c1-3277-e0e3-4304-a9c07dc8955e.jpeg)

### 手順2.

「Public Git repository」のフォームにGitHubのURLを入力し、「Continue」を押します。

![1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/e33d7c93-c8e7-d825-cb84-e99aec8819fc.jpeg)

https://github.com/kitazaki/node-red-test-03

### 手順3.

「Name」に識別名を入力します。

![2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/c5ceff84-5aa7-e345-981e-1c2bba6b96d7.jpeg)

「Start Command」を「npm start」へ変更します。

![3.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/0eeb97d1-edd6-89a6-56df-9653ecaf8c9b.jpeg)

「Advanced」を押します。

![4.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/023cf421-2530-2326-540d-9bea6a7515b6.jpeg)

### 手順4.

「Add Secret File」を押すと、ポップアップが表示されます。

![5.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/733f6ab3-c8cc-3c43-a773-df0a03b81391.jpeg)

![6.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/f8a0a4c7-8d61-acc2-aefb-dca6261661f5.jpeg)

「Filename」に「settings.js」を入力し、「File contents」にsettings.jsファイルの内容を貼り付けて「Save」を押します。

![7.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/2853143a-5617-d131-a866-0696ae6b3959.jpeg)

settings.jsファイルの情報が保存されたことを確認します。

![9.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/1a05bb24-8ea1-0f88-5315-e4e7c60cd348.jpeg)

### 手順5.

最後に「Create Web Service」を押します。

![7.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/a954f813-9a67-d923-b16c-036800f8fb82.jpeg)

ログが表示され、しばらくするとデプロイが完了するので、払い出されたURLへアクセスします。

![8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/3617e918-e94a-203c-d0b7-ca6cc7d1ffd9.png)

ログイン画面が表示されれば正常です。

![9.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/4f71be82-fd99-8ee6-bdab-87125467e981.jpeg)

## フロー (flows.json)

GitHubにflows.jsonを保存し、Node-REDの起動オプションでファイルを指定すれば読み込み可能です。
変更したフローの保存も可能です。
ただし、Environment / Secret Filesでflows.jsonを設定した場合は、読み込み専用となりますので、変更したフローの保存ができません。
(初期フローのままNode-REDを動かすのであればEnvironment / Secret Filesでも問題ありません。)

![スクリーンショット 2022-10-07 13.20.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/0748899e-bc33-25d6-9243-d75d4b3bef2c.png)

![20.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/930ef5e2-f595-347a-5a64-2954da806584.jpeg)

## 監視 (ヘルスチェック)

「Web service」を作成する時に「Advenced」のメニューで設定することが可能です。

![10.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/99b59239-ae3e-ea13-6e5c-9b0b8f4ae2c5.jpeg)

「Web service」を作成した後に追加する場合は、「Dashboard」のメニューから「Settings」→「Health Check Path」の項目で設定可能です。

![11_0.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/a13c2e1d-db95-6936-a03c-e17398886a03.jpeg)

![11_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/f3e373e0-dd61-d9cc-5703-a925518dcfce.png)

設定後は5秒間隔でヘルスチェックの接続要求を受けるようになります。
リクエストヘッダを見ると、kube-probeが利用されていることがわかります。

![21.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/e9cfc82a-e848-30b9-3391-d5038de11a71.jpeg)