こんにちわ!TUNA-JPの運営メンバーをしている @hirosat です。
本記事は、「TUNA-JP Advent Calendar 2022」の3日目のエントリです。
(実は、本業が忙しくなってきて、執筆当日になってバタバタしながら書いてます。。ひぇぇ)
TL;DR (この記事の要約)
- VMware Tanzu Application Platform (以下、TAP) では、こんなことができるよ!を、ちょっとご紹介
この記事の狙い
Advent Calender 2日目 では、TAPには色んなOSSが使われていることをご紹介させていただきました。
その後、恐らく次に思うことは、「で、結局それらを使ってどんなことができるんよ?」なのではないかと思います。VMwareからもいくつかTAPの記事がでていますが、「何か凄そう!」と思える記事はあるけど、具体的にはどう使われるかがイメージできる記事がないのでは?と思いました。
なので本記事では、そんな疑問に解消するため、逆引き形式で紹介しようかなと思いました。
前提として、全体像は2日目にご紹介したこの画像に集約されていますので、これを頭の隅に入れておいてください。
※. 上記はTAP1.3時点の構成です。今後のバージョンアップによって変わる可能性があります。
また、思いつく限り書いてみましたが、完全に全機能を網羅できていない可能性もあります。
逆引き: TAPでできること
※. 以下、基本的には、肯定的な答えになるよう、仕向けています・・w
Software Supply Chain を構成するOSS
★ 開発者にとって・・・
ソースコードを書いたら、いい感じにKubernetesアプリケーションにして欲しい
できます!必要最低限なステップは、これだけです。
- Github等のGitレポジトリにソースコードをあげる
- CLI で
tanzu apps workload apply 引数
と実行し、対象のGitレポを指定
後は、TAPがソースコードをコンテナ化してくれて、Kubernetes上にアプリケーションとしてデプロイされ、URLが払い出されて公開までしてくれます。(参考: Deploy an App)
そうは言っても、どんなコードを書けばいいのか分からないけど、雛形とかあるの?
あります!
Deploy an App のドキュメント内ではそこから解説しています。
具体的には、TAPが提供するGUIのAccelerators のページに進み、10数種類ある雛形の中から自分のイメージに合うものを選択し、サンプルをダウンロードします。
それをGitレポジトリに置き、少しずつ自分のアプリの仕様に合わせて編集していきましょう。
ソースコードを改良するたびに、毎回パイプラインに投入するコマンドを打つの?
違います! (あ、やべ、否定してしまった・・w)
tanzu apps workload apply 引数
を打つのは、Gitレポジトリを登録する初回のみです。
その後は、git commit & push するだけで、改良したコードを元に、新しいアプリケーションが自動的にデプロイされて公開されます。
パイプラインが今どんな処理を行っていて、どこでエラーがでたかを見る方法はあるの?
複数あります!
- TAP GUIから
Workload
メニューに進み、自分のアプリケーションがパイプラインを通る様子を視覚的に確認できます -
tanzu apps workload get APP名
で、現在の状態の概要を確認できます -
tanzu apps workload tail APP名
で、ジョブ投入後の各フェーズの詳細なログを確認できます
パイプラインを通って、デプロイされた後のアプリの状態を確認する方法はあるの?
あります!
ただし、TAP GUIのHomeメニュー内で、自分のアプリケーションをカタログとして登録する必要があります。
Deploy an App のドキュメント内の、Add your Application...のところで、解説しています。
★ 運用者にとって・・・
CI/CDパイプラインを作ったことないけど、簡単に開発者にパイプラインを提供できる?
できます!
具体的には、TAPのインストール に従い、導入するだけです。
TAPには、3種類のOOTB(Out of the box = すぐに使える) Supply Chain というものが用意されており、
初期設定では、最も基本的なOOTB Supply Chain Basic というCI/CDパイプラインが利用可能な状態となります。
なお、OOTB Supply Chain Basic では、以下の処理を行ってくれます。
- Gitレポからソースコードを取り込み (Flux)
- コンテナイメージのビルド (kpack)
- Kubernetesに必要なコンフィグの設定
- アプリのデプロイ (knative)
図には、テストとかスキャンが入ってるけど、これも簡単に導入できるの?
できます!
それが残りの2種類のOOTB Supply Chainです。
- OOTB Supply Chain Basic:
Git取り込み
+ビルド
+設定
+デプロイ
- OOTB Supply Chain Testing: 1に加え、
Tekton で Test
が追加 - OOTB Supply Chain Testing & Scanning: 2に加え、Grype で
ソースコード Scan
とコンテナ Scan
が追加
変更方法は、Add testing and scanning を御覧ください。
図には、Jenkinsとかも出てきてるけど、これらにも変更できるの?
できます!
デフォルトで使われるOSSは、前の質問の通りですが、以下のドキュメントで入れ替えることができます。
開発支援ツールで使われるOSS
※. 開発支援ツールの話なので、そもそも対象が開発者となります。
Supply Chainが通ってデプロイされるのを待つのがダルい。。もっと簡単に動作確認する方法はないの?
あります!
ただし、Java アプリケーション + VS code IDE 限定です。
TAPの Developer Conventions という機能によって実現します。または、Live Update
と呼ぶこともあります。
具体的には、IDE上で変更した内容を、OSSのTiltと連携して、リアルタイムでKubernetes上のPodに反映して動作確認できます。Gitレポにあげる前段階として、この機能でしばらくデバッグを続け、コード内容がFixしたら、TAPのSupply Chainに反映するような使い方が想定されます。
使い方は、Iterate on your App をご参照ください。
Supply Chainでデプロイされたアプリに対して、Threadやアクセス数を解析する方法ある?
あります!
ただし、Spring Boot(とSteeltoe) アプリケーション 限定です。
TAPの Application Live View という機能によって実現します。
先ほど、自分のアプリケーションをカタログとして登録する方法を紹介しましたが、対応アプリの場合、Live Viewという項目が現れ、そこから確認可能です。
デプロイ支援ツールとして利用されるOSS
複数のアプリをサブドメインで振り分けたい
できます!
(というより、TAPでの標準的な使い方として、そのような仕様になっています。)
OSSのContourによって実現されます。
PodのScale-to-zero、Scale-from-zeroを実現したい
できます!
(というより、TAPでの標準的な使い方として、そのような仕様になっています。)
OSSのknativeによって、podがAuto scalingします。
しばらくアクセスがなかったら0pod状態になり、その状態からアクセスリクエストによってPodを起動、といったことが実現できます。もちろん、0podが嫌な場合、最小1podみたいな設定も可能です。
アプリをTLS対応したい
できます!
OSSのcert-managerにより、自動でhttps対応したり、証明書の自動更新といったことが可能です。
あとがき
本当は、もっといっぱい機能があるので紹介したかったですが、1記事としてのボリュームを考えると、ここら辺でやめておきます。図もいれたかったけど、タイムアップですね。。
自社のコンテナ開発・生産体制に停滞を感じている場合、TAPの導入をご検討してみてはいかがでしょうか?