2024.10.10
将来は卵1パックの価格が2倍に? 多くの日本人が知らない世界の新潮流、「動物福祉」とは
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ユーザのみなさんはぜひ挑戦していただけるとうれしいです。
はい、私からは以上となります。ありがとうございました。
関連タグ:
2024.11.13
週3日働いて年収2,000万稼ぐ元印刷屋のおじさん 好きなことだけして楽に稼ぐ3つのパターン
2024.11.11
自分の「本質的な才能」が見つかる一番簡単な質問 他者から「すごい」と思われても意外と気づかないのが才能
2024.11.13
“退職者が出た時の会社の対応”を従業員は見ている 離職防止策の前に見つめ直したい、部下との向き合い方
2024.11.12
自分の人生にプラスに働く「イライラ」は才能 自分の強みや才能につながる“良いイライラ”を見分けるポイント
2023.03.21
民間宇宙開発で高まる「飛行機とロケットの衝突」の危機...どうやって回避する?
2024.11.11
気づいたら借金、倒産して身ぐるみを剥がされる経営者 起業に「立派な動機」を求められる恐ろしさ
2024.11.11
「退職代行」を使われた管理職の本音と葛藤 メディアで話題、利用者が右肩上がり…企業が置かれている現状とは
2024.11.18
20名の会社でGoogleの採用を真似するのはもったいない 人手不足の時代における「脱能力主義」のヒント
2024.11.12
先週まで元気だったのに、突然辞める「びっくり退職」 退職代行サービスの影響も?上司と部下の“すれ違い”が起きる原因
2024.11.14
よってたかってハイリスクのビジネスモデルに仕立て上げるステークホルダー 「社会的理由」が求められる時代の起業戦略