はじめに
Node-REDにVersion 0.18以降プロジェクト管理機能(フローをGitで管理できる機能)が搭載されました。しかしながら、IBM Cloudが提供するNode-REDボイラープレートではまだ利用できません。そこで今回はボイラープレートを使わずに、以下4点が実施できる環境を構築してみたいと思います。
- ローカルでフロー開発
- Gitでフローの管理
- デプロイメントパイプラインでIBM CloudへPush
- IBM Cloud CF環境でサーバーアプリとして利用
ローカル環境の準備
はじめに、ローカルへNode-REDをインストールし、プロジェクト管理機能を有効化します。
Node-RED インストール
sudo npm install -g --unsafe-perm node-red
Node-RED プロジェクト機能 有効化
<インストール先>/settings.js
ファイルの一番下にプロジェクト機能のセクションがあります。デフォルトは false
になってますので、ここを true
に変更し、プロジェクト機能を有効化します。
// Customising the editor
editorTheme: {
projects: {
// To enable the Projects feature, set this value to true
enabled: true
}
}
GitLab プロジェクトの準備
GitLab CI を用いて、Node-RED フローが更新された際の IBM Cloud へのデプロイを自動化します。
今回は、IBM Cloud CF環境 向けの Node-RED プロジェクトテンプレート を準備してますので、そちらをforkし実施します。
GitLab プロジェクト 作成
-
以下よりプロジェクトをforkください。
https://gitlab.com/ktsz/node-red-starter-ibmcloud -
fork後、必要に応じて、リポジトリURLや名称、公開レベルを変更ください。
GitLab CI定義
IBM Cloud CF環境へデプロイする際に必要となる IBM Cloud の組織やスペース、認証といった情報を、GitLab CI の変数として設定します。
- GitLab プロジェクト 左のメニューより、
設定 → CI/CD → Variables
を開きます。 - 以下変数を設定します。
forkしたコードでは、リージョンはデフォルト(us-south)になってます。もし変更したい場合は、GitLab CI定義の変数にリージョンを追加するとともに、それを利用する .gitlab-ci.yml
を修正ください。
stages:
- test
- deploy
test:
image: node:10
stage: test
script:
- npm install
- npm test
staging:
image: ruby:2.3
type: deploy
script:
- gem install dpl
- dpl --provider=bluemixcloudfoundry --username=$BLUEMIX_USER --password=$BLUEMIX_PASSWORD --organization=$BLUEMIX_ORGANIZATION --space=$BLUEMIX_SPACE --skip-ssl-validation
only:
- master
Node-RED プロジェクト開発の準備
GitLab の準備ができましたら、続いてローカルのNode-REDへプロジェクトをcloneし、開発の準備を行います。
ローカルのNode-REDを起動する
node-red
プロジェクトへクローンする
-
ブラウザでローカルのNode-REDへアクセスし、cloneください。標準の場合、以下URLとなります。
http://127.0.0.1:1880/
認証情報の暗号化
cloneしたプロジェクトはデフォルトだと各種ノードに設定する認証などの情報に対する暗号化が有効になっていません。まずはこれを有効にします。以下のように実施ください。
アプリケーション名の変更
cloneしたプロジェクト内にある manifest.yml
ファイルをテキストエディタ等で開き、IBM Cloud CF環境にデプロイする際のアプリ名や環境情報を変更します。(少なくても、name と host は変更ください。)
applications:
- path: .
memory: 256M
instances: 1
domain: mybluemix.net
name: KS-NodeRED-demo-201906
host: KS-NodeRED-demo-201906
disk_quota: 1024M
IBM Cloud CF環境へデプロイ
Gitへ変更をCommit, Pushする
Node-REDの右のパレット?を使い、Gitへ変更をCommit, Pushします。
- コミットしたい変更対象を選択ください。(今回はすべて選択)
- コミットボタンを押し、コメントを記載の上、コミットします
- リモートへPushします。コミット履歴セクションを開き、「↑↓」ボタンを押します
- ブランチを切りたい場合は、ブランチを新規作成します。(今回は新規に ks_dev を作成)
- ブランチを選択し、アップストリームに設定、変更をプッシュします
- 変更がPushされますと、GitLabにてCIが動きます。master以外の場合は、スクリプトチェックのみ実行されます。CI/CD パイプラインにて
成功
を確認してください。
Masterへマージする
今回の gitlab-ci.yml
では、masterに変更があった場合に IBM Cloud へ Push されるようにパイプラインをくんでいます。IBM CloudへPushするため、ブランチをmasterにマージします。
- マージリクエスト(プルリク)を作成します。Sourceを対象ブランチに、Targetをこのプロジェクトのmasterに設定します。
- マージします
- GitLabにてCIが動きます。masterの場合は、スクリプトチェックとIBM CloudへのPushが走ります。CI/CD パイプラインにて
成功
を確認してください。
IBM Cloud CF Runtime ユーザー定義変数の追加
IBM Cloudダッシュボードにて、GitLabにてデプロイしたアプリを開き、ランタイム変数を追加します。
- デプロイしたアプリをひらきます
- ランタイム → 環境変数 → ユーザー定義に、変数を設定します
- NODE_RED_CREDENTIAL_SECRET : (必須)Node-RED 認証情報の暗号化にて設定したKEYを設定します
- NODE_RED_DISABLE_EDITOR : フローエディタを使用させるかどうか設定します(true:使用しない false:使用する 未設定:使用しない)
- NODE_RED_USERNAME : フローエディタ利用時のログインIDを設定します
- NODE_RED_PASSWORD : フローエディタ利用時のログインPWを設定します
- NODE_RED_USE_APPMETRICS : アプリケーションメトリクスダッシュボードを使用するかどうか設定します(true:使用する false:使用しない 未設定:使用しない)
- CF環境になりますので、フローエディタでのフロー編集は許可していません。フローの編集はローカルで行い、パイプラインを使ってCFへPushしてください。
- フローエディタ表示をON(false)の場合でも、ID/PWの設定を行っていない場合は表示されません
稼働確認
サンプルフロー動作確認
フローエディタ確認
アプリケーションメトリクスダッシュボード確認
まとめ
いかがでしたでしょうか。これで IBM Cloud CF環境でも、フローのバージョン管理、自動デプロイが行われるようになりますので、お仕事等でNode-REDを用いる際も安心して進められるのでは、と思います!