appsodyがNode-REDに対応したので使ってみた

# appsodyでNode-REDが使える様になったらしい。

[appsody](https://appsody.dev/)で[Node-RED](https://nodered.jp/)が利用可能になったというアナウンスがありました！

<blockquote class="twitter-tweet"><p lang="en" dir="ltr">🙌 Newly Available🙌 <a href="https://twitter.com/NodeRED?ref_src=twsrc%5Etfw">@NodeRED</a> stack is now available in <a href="https://twitter.com/appsodydev?ref_src=twsrc%5Etfw">@appsodydev</a>! <a href="https://twitter.com/hashtag/CloudNative?src=hash&amp;ref_src=twsrc%5Etfw">#CloudNative</a> <a href="https://twitter.com/hashtag/Nodejs?src=hash&amp;ref_src=twsrc%5Etfw">#Nodejs</a> <a href="https://twitter.com/hashtag/NodeRED?src=hash&amp;ref_src=twsrc%5Etfw">#NodeRED</a> <a href="https://twitter.com/hashtag/javascript?src=hash&amp;ref_src=twsrc%5Etfw">#javascript</a> <a href="https://twitter.com/hashtag/Java?src=hash&amp;ref_src=twsrc%5Etfw">#Java</a> <a href="https://twitter.com/hashtag/OpenSource?src=hash&amp;ref_src=twsrc%5Etfw">#OpenSource</a> <a href="https://t.co/XZz27Y1h4J">https://t.co/XZz27Y1h4J</a></p>&mdash; Kabanero (@KabaneroIO) <a href="https://twitter.com/KabaneroIO/status/1204840850468954112?ref_src=twsrc%5Etfw">December 11, 2019</a></blockquote>

先日の、[Kabanero(Knative + Istio + Tekton ひとまとめ)を使ってNode.jsのアプリケーションを5分でK8sにデプロイする](https://qiita.com/motuo/items/1cde634a010e9e1d7d5a)を書いた勢いもあったので、ついでにこれも触ってみました。
※環境は`mac`。docker for macでKubernetesが有効であることが前提です。

## Node-REDを使うための手順
### appsodyをインストール(または最新にアップデートする。)
インストール手順は[こちら](https://qiita.com/motuo/items/1cde634a010e9e1d7d5a#appsody%E3%82%92install%E3%81%99%E3%82%8B)
アップデートは

```sh
brew upgrade appsody
```

でOK。
インストールまたは、アップデート後に

```sh
appsody list
```

を実行すると、`Node-RED`が追加されていることが確認できます！

```sh
$ appsody list

REPO            ID                              VERSION         TEMPLATES               DESCRIPTION                                              
experimental    java-spring-boot2-liberty       0.1.11          *default                Spring Boot on Open Liberty & OpenJ9 using Maven         
experimental    nodejs-functions                0.1.6           *simple                 Serverless runtime for Node.js functions                 
experimental    quarkus                         0.2.2           *default                Quarkus runtime for running Java applications            
experimental    rocket                          0.1.0           *simple                 Rocket web framework for Rust                            
experimental    rust                            0.1.4           *simple                 Runtime for Rust applications                            
experimental    vertx                           0.1.4           *default                Eclipse Vert.x runtime for running Java applications     
*incubator      java-microprofile               0.2.21          *default                Eclipse MicroProfile on Open Liberty & OpenJ9 using Maven
*incubator      java-spring-boot2               0.3.19          *default, kotlin        Spring Boot using OpenJ9 and Maven                       
*incubator      kitura                          0.2.3           *default                Runtime for Kitura applications                          
*incubator      node-red                        0.1.0           *simple                 Node-RED runtime for running flows                       
*incubator      nodejs                          0.3.0           *simple                 Runtime for Node.js applications                         
*incubator      nodejs-express                  0.2.10          scaffold, *simple       Express web framework for Node.js                        
*incubator      nodejs-loopback                 0.1.8           *scaffold               LoopBack 4 API Framework for Node.js                     
*incubator      python-flask                    0.1.6           *simple                 Flask web Framework for Python                           
*incubator      starter                         0.1.1           *simple                 Runnable starter stack, copy to create a new stack       
*incubator      swift                           0.2.3           *simple                 Appsody runtime for Swift applications   
```

あとは[GitHubリポジトリ](https://github.com/appsody/stacks/tree/master/incubator/node-red)を参照しながら作業。

## Templateを展開する。
適当なディレクトリの配下で下記のコマンドを実行しましょう。

```sh
appsody init node-red
```

ちなみに、

```sh
appsody init node-red none
```

の様に`none`を指定すると、`.appsody-config.yaml`のみが生成される様です。

下記の様なファイルが生成されます。

<img width="216" alt="スクリーンショット 2019-12-12 14.14.19.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154110/89b00f79-1c03-8623-36f4-a4a2ef5a57bc.png">

## 実行する
ローカルで簡単に実行するためには

```sh
appsody run
```

を実行します。

`http://localhost:3000`で下記の画面が確認できればOKです。

![スクリーンショット 2019-12-12 14.22.04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154110/f37e5b53-586a-1257-ef58-e43b553a5b07.png)

フローエディタは`http://localhost:3000/admin`から確認可能です。

![スクリーンショット 2019-12-12 14.22.55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154110/0be42d3b-38d2-70f9-4b3f-b98d242b2682.png)

## K8sにデプロイする。
前回と同様に

```sh
appsody deploy
```
でOKです。

最終行に表示されるURLからアクセス可能です。(この場合は`http://localhost:31069`)

```
Deployed project running at http://localhost:31069
```

**↓↓↓↓↓スクリーンショット↓↓↓↓↓**
![スクリーンショット 2019-12-12 14.24.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154110/bf04c632-1f78-bd29-64f8-d3c723d8cae7.png)

<hr>
Podを見てみる。

```sh
$ kubectl get pod
NAME                                  READY   STATUS    RESTARTS   AGE
appsody-appsody-65b456946-mczpr       1/1     Running   18         5d20h
appsody-operator-57b94c7c48-tsswv     1/1     Running   15         5d20h
my-nodered-project-55db6d8bcc-c6k2z   1/1     Running   0          63s
```
バッチリ、podがあるのが確認できますね！

あとは、いつも通りにNode-REDを使っていきましょう！