LoginSignup
7
4

More than 3 years have passed since last update.

Codewindとappsodyを使ってNode.jsのアプリケーションを5分でK8sにデプロイする

Last updated at Posted at 2019-12-09

初めに

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.png

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 macKubernetesが有効であること。

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をインストールしましょう。
スクリーンショット 2019-12-09 17.53.49.png

インストール完了後

CODEWINDが追加されています。
スクリーンショット 2019-12-09 17.56.31.png

テンプレートを展開します。

下記の様な手順となります。
1. CodeWindの起動
2. プロジェクトの追加
3. Kabanero Node.js Express Simple templateを選択(選択画面右上よりSouce Managerを押下してKabaneroを選択しておく)

以上です。

下記の様な概要画面が表示されると思います。
スクリーンショット 2019-12-09 18.56.07.png

Application Endpointの通り、

http://127.0.0.1:32776/

にアクセスすると下記の画面が表示されます。ソースコードを変更すると、リアルタイムに反映されます。
スクリーンショット 2019-12-09 18.57.30.png

Applicationモニタなどの見方

該当のプロジェクトを右クリックすると、いくつかのコンテキストメニューが表示されます。
スクリーンショット 2019-12-09 18.58.48.png

Applicationモニタ

スクリーンショット 2019-12-09 19.00.11.png

Performanceモニタ

スクリーンショット 2019-12-09 19.01.20.png

まだ、よく見方はわかりませんがモニタリングもうまくできている様です。

K8sへのデプロイ

appsody deploy

で完了です。

Deployed project running at http://localhost:31781

というメッセージが出ているので、http://localhost:31781にアクセスすると、確かに稼働していることが確認できます。

まとめ

謳い文句にある様に、確かにK8sへのデプロイまですぐに対応できました。VS Codeとの親和性も高いのは良いですね!
他にも多くの機能がありそうなので、こちらもドキュメントを見ながら検証をしてみようと思います。

参考リンク

Kabanero 公式ページをざっと翻訳してみた (2019年8月版)
Kabanero Developer Experience 公式ページもざっと翻訳してみた (2019年8月版)

7
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
4