
2025.02.18
「売上をスケールする」AIの使い道とは アルペンが挑む、kintone×生成AIの接客データ活用法
Appsodyで楽々実現!Node-REDをKubernetes上で動す方法(全1記事)
リンクをコピー
記事をブックマーク
榎本陽祐氏(以下、榎本):今回私は「appsodyというオープンソースを使ってNode-REDをKubernetes上で動かしてみよう!」という内容でお話させていただきます。
今回の簡単な流れですが、Node-REDのユーザグループのセッションなので、Kubernetesに関する説明を軽くしたあとで、たぶんappsodyという言葉自体を知っている方が少ないと思うので、「appsody is 何?」というところを説明して、最後にこのappsodyを使ってNode-REDで作ったモジュールをKubernetes上にデプロイするデモをお見せできればと考えています。よろしくお願いします。
田中正吾氏(以下、田中):よろしくお願いします。
榎本:まずは、自己紹介をさせていただきます。千葉県松戸市のWeb系のベンチャー企業のJoolenというところでエンジニアをしています。motuoという名前でQiitaを書いていたりして、だいたい埼玉西武ライオンズのユニフォームロゴがあれば私だと思っていただいて間違いないです。
田中:(笑)。
榎本:「2連覇おめでとうございます!」と、これは毎回ネタとして言うんですけど、今年も3連覇狙ってがんばってほしいなと思っています。
余談は別なんですけど、今の業務では主にPHPやLaravel、EC-CUBEなどを使っています。基本的に好き嫌いなく何でも食べる雑食系で、実は汎用機なんかも触れちゃったりするんですけど、もちろんNode-REDも大好きです! 今回は運営の田中正吾さんとか横井一仁さんとかもそうなんですけど、2020年のIBM Championと言ってIBMさんから公式に認めていただいた外部エヴァンジェリストの認定をいただいております。
田中:いえーい!
榎本:あと今年はKabaneroというIBM製のオープンソースのコントリビューターとしての認定もいただきました。今回お話するappsodyというのは、このKabaneroに組み込まれているオープンソースになります。では、さっそく具体的なコンテンツに入っていきます。
Kubernetesとは何かと言いますと、Googleが中心となって開発したコンテナを統合して管理するツールです。Dockerをご存知である前提の話になってしまいますが、このDockerを単品で使っていると複数のホストを跨いだ構成などは難しくなります。しかし、このKubernetesをかますことでうまく制御ができます。
あとはスケールの問題ですね。オートスケールの処理が増えてきたらどんどんリソースを増やすだとか、コンテナが突然落ちた際の自動回復にも対応しています。いろんな部品を独立したコンテナで構築できるので、非常にマイクロサービスと言われているような設計に適しています。
そう言われてもピンとこないと思うので、ざっくり言うと、コンテナが何かの理由で落ちても自動的に回復したり、必要な機能にリソースを集中させやすくなります。Webサーバは小さく、バッチ処理のリソースは大きくみたいな感じで必要なリソースをスケーラブルに割り当てることもできます。
あとはローリングアップデート機能も備えているので、機能のアップデートを不停止で実現したりとか、どんどん伸びていくサービスに使うことでシステムをスケールさせていくことができますと。非常に今のコンテナ界隈ではトレンドになっていて、たぶんデファクトとして扱われています。
でも実際にKubernetesを使おうとすると、大きな壁に当たります。僕も実際に直面した問題なんですが、「そもそもKubernetesってどうやって環境を作るの?」とか、このKubernetesを動かす上でいろいろ設定ファイルをyamlで書く必要があって、これは世界的には「Wall of YAML」、通称「yamlの壁」と言われる非常に学習コストが高いものです。
田中:そうなんだ。
榎本:「1人でKubernetes上にNode-REDで動く環境を構築して」と言われたときに、「そんなのできるかよ」となるわけです。実際に体験して本当につらかったです。
こういった僕の悩みを解消してくれたのが、appsodyというオープンソースのツールです。さっそくこのappsodyを推していきたいと思うんですけど、クラウドネイティブなアプリケーション開発を支援するために作られたIBM製のオープンソースです。主に以下の3つのコンポーネントで構成されています。
Appsody Stacksは、コンテナの依存性やセキュリティ情報、Server.jsなどもこの中に入っていて、フローエディタはこの環境だと使える・使えないといった構成を保管することができます。開発する人はそういった組織とか開発するチームのポリシーを気にすることなくアプリケーションの開発が可能になります。
2番目にAppsody Hub。Hubという名前でわかる通り、Appsody Stacksを管理するためのリポジトリです。Appsody Stacksをカスタマイズしてリポジトリに入れておくと、チーム内で統一された環境でそのプロジェクトを回していくことができます。
3つ目がAppsody Command Line Interface。Appsody CLIです。これがないとappsodyに命令を出すことができないのでこれは必須なコマンドラインです。
実際にどんな感じで動いているの? と言いますと、このスタックリポジトリの中から実際にローカルで開発する人。僕みたいなアプリケーションエンジニアが該当するんですけど、あらかじめ誰かが用意してくれたスタックをローカルに持ってくると、Node-REDのフローエディタなどが使える環境ができます。
ここで開発をしていって、開発が終わったらビルドしてKubernetesへデプロイという流れです。これが本当に簡単に、コマンドライン一発でできるようになる画期的なオープンソースになっています。なのでもうyamlとかをぜんぜん意識することなく、Kubernetes上でも簡単に動きます。
Kubernetes以外にもIBM CloudのKubernetes Service、AzureやAWSなどどこでも動くんです。こういったものが簡単に組めるようになります。
appsody stackの構成なんですけど、今回READMEはどうでもいいとして……。
田中:(笑)。
榎本:最初に適用するテンプレートの指定やプロジェクトをデプロイするときの設定、ポートを何番で動かせますよなど。実際にデプロイするときに必要なファイル群はだいたいここに入ってます。これはNode-REDのServer.jsとかもここの中に入っていて、一番最初に生成されるテンプレートのJSONを置いてあげれば、あとはみなさん勝手に使ってねという感じになっています。
ちょっとここは複雑なんですけど、Node-REDを使われている方はこのGitHubの中を見てもらえば「あー! そういうことか!」というのをなんとなくわかっていただけると思いますので、時間のあるときにぜひご参照ください。
いよいよ実際にKubernetesへのデプロイというのを行います。と言いながらも、僕はすごいビビりなので、動画を用意しました。
ここからは実際にappsodyを使ってどんな動きをしたのかというのをお見せできればと思います。
まずはappsodyで使えるプログラム言語のリスト。appsodyに対応している言語がザっと出ます。Javaを始めNode-REDやNode.js、Python、Swiftも動きます。みたいな感じで、いろんなアプリケーションが使えます。
田中:おぉー!
榎本:ここに書いてあるものは基本的に自分で設定する必要もなく使えるappsodyのスタックです。今回はいろんなものがある中でNode-REDにフォーカスをして進めていきます。
どうやって叩くの? となったときに、もう1回改めてappsody listを叩いてNode-REDを見つけたらappsody initを叩いていきます。
僕のターミナルがざわざわした瞬間でしたね。
田中:(笑)。
榎本:appsody init node-redと叩くと……。
一番見せたかったのはここです。空っぽのディレクトリの中にappsody init node-redと叩くだけで、Dockerの環境をザっと持ってきてこのまま展開してくれます。
ディレクトリの中身を見てみると、こんな感じですね。configと初期テンプレートのFlow.jsonが入っている。こういったシンプルなファイルを生成してくれます。これで準備は完了。
準備は完了したので、いよいよ走らせます。走らせるコマンドはappsody runです。appsodyのconfig yamlが入っているディレクトリでそのままappsody runで走らせると、このままDockerのイメージを起動してくれます。
ここでノードの情報を展開するとさくさくと動きます。ここでStarting flowsと出ているので、この時点でローカルホストのポート3000番で起動しています。
ブラウザでの動作確認を見てみると、ノードのローカルホストの3000番で「Hello World! This is the default.」。動くのが早いですね。adminと叩くと、さっきテンプレートの中に入っていたものがそのまま展開されます。「Hello World! This is the default.」というかたちです。もちろんこれのHello World!をちょっとエディットして「Hello New World!」とすると、そのままデプロイして……。
ちょっと時間が掛かりますけど、「Hello New World!」というかたちで、開発をいつも通り進めていって動かすことができます。これで開発が終わったと想定した上で、これをKubernetes上に乗せます。これも本当に至ってシンプルなappsody deployですね。このコマンド一発で、ローカル上にあるKubernetesに実際に作ったNode-REDのプログラムをビルドして、固めて乗せます。
これはかなり時間が掛かる作業です。ドキドキしながらやってます。
田中:わかります(笑)。チャレンジですよね(笑)。
榎本:だいぶチャレンジングですね(笑)。ここでちょっと時間は掛かるんですけど、裏側でappsodyがyamlも作ってくれて、最終的にKubernetesのクラスタ上に置いてくれます。それでは、Kubernetesの動作確認をしていきます。
これは本当に大したことはなくて、Kubernetesのコマンドで、kubectl get podsと入れてあげます。node-red-demoというものがあると思うんですけど、実際にちゃんときれいにデプロイされていることがわかります。
あとはどのポートで動いているのかを確認した上で、そのまま「Hello New World!」というフォームが出てきました。非常に簡単にKubernetesまで持っていけるので、もし既存の環境とかで使われていて、なかなか使う機会がなかったよという人たちは非常にやりやすいのかなと考えています。
最後に今日のまとめです。すごい駆け足でわかりづらかったかもしれなくて申し訳ないんですけど、今回の手順はQiitaにも上がっています。『appsodyがNode-REDに対応したので使ってみた』というので公開もしています。
田中:ありがとうございます。
榎本:これの発展版としてIBM Cloudを例にして、IBM Cloud Kubernetes ServiceにNode-REDでデプロイしたというのをやっています。なのでちょっと自分で試してみたいときはぜひそちらを参照してください。Node-REDは今はどのクラウドでも動かせるようになっています。これはすごく良いことだと思うので、Node-REDユーザのみなさんはぜひ挑戦していただけるとうれしいです。
はい、私からは以上となります。ありがとうございました。
関連タグ:
2025.02.13
“最近の新人は報連相をしない”という、管理職の他責思考 部下に対する「NG指示」から見る、認識のズレを防ぐコツ
2025.02.13
AIを使いこなせない人が直面する本当の課題 元マッキンゼー・赤羽雄二氏が“英語の情報”を追い続ける理由
2025.02.06
すかいらーく創業者が、社長を辞めて75歳で再起業したわけ “あえて長居させるコーヒー店”の経営に込めるこだわり
2025.02.12
マネージャーは「プレイング3割」が適切 チームの業績を上げるためのマネジメントと業務の比率
2025.02.14
報連相ができない部下に対するコミュニケーションの取り方 「部下が悪い」で終わらせない、管理職のスキル向上のポイント
2025.02.13
上司からは丸投げ、部下からはハラスメント扱い、業務は増加…プレイングマネジャーを苦しめる「6つの圧力」とは
2025.02.12
何度言っても変わらない人への指示のポイント 相手が主体的に動き出す“お願い”の仕方
2025.02.13
「みんなで決めたから」を言い訳にして仲良しクラブで終わる組織 インパクトも多様性も両立させるソース原理
2025.02.10
32歳で「すかいらーく」を創業、75歳で「高倉町珈琲」で再起業 「失敗したからすかいらーくができた」横川竟氏流の経営哲学
2025.01.07
1月から始めたい「日記」を書く習慣 ビジネスパーソンにおすすめな3つの理由
着想から2か月でローンチ!爆速で新規事業を立ち上げる方法
2025.01.21 - 2025.01.21
新人の報連相スキルはマネージメントで引きあげろ!~管理職の「他責思考」を排除~
2025.01.29 - 2025.01.29
【手放すTALK LIVE#45】人と組織のポテンシャルが継承されるソース原理 ~人と組織のポテンシャルが花開く「ソース原理」とは~
2024.12.09 - 2024.12.09
『これで採用はうまくいく』著者が語る、今こそ採用担当に届けたい「口説く」力のすべて
2024.11.29 - 2024.11.29
第20回エクゼクティブメンターイベント「今、「ひと」と組織が共創する〜働き方の未来へ」
2024.12.07 - 2024.12.07