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.10.29
5〜10万円の低単価案件の受注をやめたら労働生産性が劇的に向上 相見積もり案件には提案書を出さないことで見えた“意外な効果”
2024.10.24
パワポ資料の「手戻り」が多すぎる問題の解消法 資料作成のプロが語る、修正の無限ループから抜け出す4つのコツ
2024.10.28
スキル重視の採用を続けた結果、早期離職が増え社員が1人に… 下半期の退職者ゼロを達成した「関係の質」向上の取り組み
2024.10.22
気づかぬうちに評価を下げる「ダメな口癖」3選 デキる人はやっている、上司の指摘に対する上手な返し方
2024.10.24
リスクを取らない人が多い日本は、むしろ稼ぐチャンス? 日本のGDP4位転落の今、個人に必要なマインドとは
2024.10.23
「初任給40万円時代」が、比較的早いうちにやってくる? これから淘汰される会社・生き残る会社の分かれ目
2024.10.23
「どうしてもあなたから買いたい」と言われる営業になるには 『無敗営業』著者が教える、納得感を高める商談の進め方
2024.10.28
“力を抜くこと”がリーダーにとって重要な理由 「人間の達人」タモリさんから学んだ自然体の大切さ
2024.10.29
「テスラの何がすごいのか」がわからない学生たち 起業率2年連続日本一の大学で「Appleのフレームワーク」を教えるわけ
2024.10.30
職場にいる「困った部下」への対処法 上司・部下間で生まれる“常識のズレ”を解消するには