
2025.03.07
メール対応担当の8割以上が「カスハラ被害」に クレームのハード化・長期化を防ぐ4つの対策
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.03.25
減点を恐れてモチベ低下、果ては離職も… あらゆる“会社の害虫”を大繁殖させる「ラスボス」の正体
2025.03.24
最悪の場合、組織を死に至らせる“会社の害虫”とは 誤った意思決定や品質不祥事を招く要因
2023.02.13
小6で「ヤマギシ会」に入り、23歳まで子どもだけで集団生活 「お金が存在しない」コミューン育ちの青年が社会に出て知ったこと
2025.03.25
ムダな仕事がなくならない“マッチョな職場”を変えるには 近年の過度な「KPI主義」が組織に与えた影響
2025.03.27
交渉で「落としどころを探る」という考えは捨てるべき プロが教える、チャンスを逃さない条件交渉のコツ
2025.03.19
組織をダメにする“害虫”の正体は間違った思い込み AIやDXなど手段のみにこだわるダメ上司の見極め方
2025.03.24
気づけばモラル崩壊……人材育成に無頓着な企業の末路 業績アップや採用にもつながる“人への投資”の重要性
2025.03.21
マネージャーの「自分でやったほうが早い」という行動で失うもの 効率・スピード重視の職場に足りていない考え方
2025.03.21
査定時期に上司から1年前の失敗を指摘される理不尽 変えられない過去を議論する「成果主義」の弊害
2025.01.07
1月から始めたい「日記」を書く習慣 ビジネスパーソンにおすすめな3つの理由
2025.03.25
減点を恐れてモチベ低下、果ては離職も… あらゆる“会社の害虫”を大繁殖させる「ラスボス」の正体
2025.03.24
最悪の場合、組織を死に至らせる“会社の害虫”とは 誤った意思決定や品質不祥事を招く要因
2023.02.13
小6で「ヤマギシ会」に入り、23歳まで子どもだけで集団生活 「お金が存在しない」コミューン育ちの青年が社会に出て知ったこと
2025.03.25
ムダな仕事がなくならない“マッチョな職場”を変えるには 近年の過度な「KPI主義」が組織に与えた影響
2025.03.27
交渉で「落としどころを探る」という考えは捨てるべき プロが教える、チャンスを逃さない条件交渉のコツ
2025.03.19
組織をダメにする“害虫”の正体は間違った思い込み AIやDXなど手段のみにこだわるダメ上司の見極め方
2025.03.24
気づけばモラル崩壊……人材育成に無頓着な企業の末路 業績アップや採用にもつながる“人への投資”の重要性
2025.03.21
マネージャーの「自分でやったほうが早い」という行動で失うもの 効率・スピード重視の職場に足りていない考え方
2025.03.21
査定時期に上司から1年前の失敗を指摘される理不尽 変えられない過去を議論する「成果主義」の弊害
2025.01.07
1月から始めたい「日記」を書く習慣 ビジネスパーソンにおすすめな3つの理由