初めに
2019年12月5日にIBM から始まった新しいオープン・ソース・プロジェクト Kabanero を使用して、Kubernetes 対応のクラウド・ネイティブ・アプリを迅速に構築するという記事が公開されています。(この記事は「Build cloud-native apps faster for Kubernetes with Kabanero, a new open source project from IBM(2019年7月16日公開)」の翻訳です。)
K8sに興味津々だけど、その難しさに阻まれてきた私にとって、面白そうなOSSプロジェクトのようです。
公式HPはこちら
IBM Cloud Pak for Applicationsにも使われているそうです。
Kabaneroって何?
以下は上記のサイトの引用です。
すでに身に付けたスキルを使って Kubernetes アプリケーションを作成できます
Kabanero を使用する場合、DevOps 手法を習得したり、ネットワーキング、Ingress、セキュリティーなどの Kubernetes インフラストラクチャーに関するトピックを習得したりするのに時間を費やす必要はありません。Kabanero は Kubernetes のネイティブ DevOps ツールチェーンに、開発者が使い慣れているランタイムとフレームワーク (Node.js、Java、Swift) を統合するからです。Kubernetes と Knative への (Operator と Helm チャートを使用して) 事前ビルドされたデプロイメントは、ベスト・プラクティスに基づいています。
Kabanero を選ぶ理由
現在の市場に Kabanero のようなプロジェクトはありません。Kabanero が対処する個々の側面に対処するオープン・ソース・プロジェクトはありますが、コンテナー化されたクラウド・ネイティブ・アプリケーションの作成から本番環境の Kubernetes 上でのライフサイクルまでのすべてを操作できるオープン・ソース・プロジェクトは Kabanero しかありません。
Kabanero を使用することで、開発チームはあらかじめコンテナーと Kubernetes の専門知識を身に付けなくても、Kubernetes にデプロイできる状態のアプリケーションを構築できます。したがって、組織がクラウドへの移行においてレガシー・インフラストラクチャーから最新式インフラストラクチャーに移行する際に開発者が越えなければならない障壁が低くなります。
ドキュメントを読んだ時の感想
一介のWebアプリケーションエンジニアにとって、この響きはとても魅力的に見えます。作成したアプリケーションを迅速かつ、堅牢な環境で動かしたいでも、面倒な設定は出来るだけ避けたい、というニーズを汲み取ってくれていると思います。
というわけで、Node.jsのデプロイまでやってみた。
Developer向けのページと、youtube動画に詳細があります。
You can go from zero to application running in Knative/Kubernetes in under 5 minutes, working only with the app code - no tinkering with Dockerfiles, no learning Kube and Kube Yaml, no non-sense.
要するに
0から初めて5分で、Knative/Kubernetes上で稼働するアプリケーションが作れますよ!必要なのは、アプリケーションのコードだけで、DockerfileやK8sのyamlを意識することもないですよ!
だそうです。すごい。
というわけでやってみた。
どうやらEclipse
またはVS Code
が使えるようです。今回はmac
& VS Code
で行きましょう。
※以下は、youtubeで公開されている動画の手順を参考にしています。
前提
docker for mac
でKubernetes
が有効であること。
appsodyをinstallする。
appsodyはK8sにデプロイするときに使用する、CLIツールのようです。詳しくはこちら
こちらの手順に従って、appsody
をインストールします。
私の場合は、
brew install appsody/appsody/appsody
だけで大丈夫でした。
appsody list
とうって、下記のようになれば良いようです。
$ 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 nodejs 0.2.5 *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
VS Codeの拡張(Codewind)をインストールする
特に変わったところはありません。Codewind
をインストールしましょう。
インストール完了後
テンプレートを展開します。
下記の様な手順となります。
- CodeWindの起動
- プロジェクトの追加
-
Kabanero Node.js Express Simple template
を選択(選択画面右上よりSouce Managerを押下してKabaneroを選択しておく)
以上です。
下記の様な概要画面が表示されると思います。
Application Endpoint
の通り、
http://127.0.0.1:32776/
にアクセスすると下記の画面が表示されます。ソースコードを変更すると、リアルタイムに反映されます。
Applicationモニタなどの見方
該当のプロジェクトを右クリックすると、いくつかのコンテキストメニューが表示されます。
Applicationモニタ
Performanceモニタ
まだ、よく見方はわかりませんがモニタリングもうまくできている様です。
K8sへのデプロイ
appsody deploy
で完了です。
Deployed project running at http://localhost:31781
というメッセージが出ているので、http://localhost:31781
にアクセスすると、確かに稼働していることが確認できます。
まとめ
謳い文句にある様に、確かにK8sへのデプロイまですぐに対応できました。VS Code
との親和性も高いのは良いですね!
他にも多くの機能がありそうなので、こちらもドキュメントを見ながら検証をしてみようと思います。
参考リンク
Kabanero 公式ページをざっと翻訳してみた (2019年8月版)
Kabanero Developer Experience 公式ページもざっと翻訳してみた (2019年8月版)