Tanzu Application Platform(TAP) の Getting Started をやってみた / Workloadデプロイ･SupplyChain動き出すところまで

TAP のサンプルアプリの起動(やりかけ)の実施内容やら、メモやらを記載していってみます。
完成はしてないけど、触ってみてるよ 記事ですので、内容はご注意ください。

(追記: まだ記事内容自体は未完了で、TAPの設定ファイルの書き方などの癖がわかってないけど、
 これだけの手順でアプリケーションデプロイできるの?! もしかして楽になるのでは? とワクワク感があるのでした。)

## そもそも Tanzu Application Platform (TAP)とは

ソースコードからいい感じにコンテナとかビルドして、
いい感じにデプロイまで行ってくれる仕組みらしい。

私は、このあたりの情報を参考にしました。まだ、なんとなくふわっとした理解しかできていない。

- https://blogs.vmware.com/vmware-japan/2022/02/tap-introduction.html
- https://paas.connpass.com/event/238740/

そんな状況で、とりあえず触ってみるという記事。

## 前段 / TAP 環境の構築

TAPの構築はAWS上に以下のCloudformationを用いて起動した。

https://aws.amazon.com/jp/quickstart/architecture/vmware-tanzu-application-platform/

AWSにログインしておき、 `How to deploy` タブの、 `Deploy into a new VPC.` をクリックすると
Cloudformation のウィザードに従って、デプロイすることで環境ができあがったところからが開始地点です。

ウィザードの従って設定していくと、Cloudformationのデプロイを開始します。
開始後45分ぐらいは起動待ちだった。


### AWS 料金

1日放置しておくと 3-5千円 になるので、あとでCloudwatchログを減らしたり
EKSのノード数を減らしたりして、ワークロードを減らすとAWS料金は削減ができる。
でも、限界があり、頑張っても毎日2-3千円ぐらいはかかってしまうので、個人で試すときは、要注意。


## Getting Started 試してみた
https://docs.vmware.com/en/VMware-Tanzu-Application-Platform/1.3/tap/GUID-getting-started.html

この記事を試してみる。

上記のインストール方法で、TAPを構築すると、 `Installed Tanzu Application Platform GUI` のところまで
実行されているように見える。(詳細は不明、全く同じとはどこにも記載はない)

なので、いきなり、tap-gui のページまでアクセスすることができるようになっています

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/131643/12175d30-b51b-9efc-da87-f5a536c15c35.png)

とりあえず、GUIがあるとやる気が出始める。

----
## サンプルアプリのデプロイ

https://docs.vmware.com/en/VMware-Tanzu-Application-Platform/1.3/tap/GUID-getting-started-deploy-first-app.html

ここからが目的の、サンプルアプリケーションのデプロイの流れについて。

#### tap-values.yaml
サンプルアプリのデプロイに必要なパラメーターは、tapのセットアップに使用したマシンの
`~/tap-setup-scripts/generated$ cat tap-values.yaml`
に格納されている。(AWSのCloudformationでのセットアップは色々自動でやってくれるので、上記のファイルを見つけるのに、時間を食った。この時点ではじめて tap-values.yaml というものを知る。)


### プロジェクトのダウンロード
`Application Accerarators` から `Tanzu Java Web App` を選択して、生成される
WEBアプリケーションのプロジェクトをダウンロードする。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/131643/dd421288-83dd-a9b9-9fc0-c6b0e9430a91.png)

ウィザードに従って･･･

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/131643/b0fe8729-3c24-1377-e8b3-27e167aeac45.png)

値は以下のように設定。
- name は適当に `my-first-tanzu-java-web-app` にした。
- image repository は、`tap-values.yaml` の内容と合わせる。

`GENERATE ACCELERATOR` をクリックして、ZIPファイルを生成、
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/131643/fa024a5a-834b-3a63-e28d-644a4f7852d8.png)

あとは、ZIPファイルをダウンロードする。

## 同じ名前で、GitHub にリポジトリを作成

ソースを格納する先にGithubを使うことにした。
認証などもめんどくさいので、とりあえずパブリックのリポジトリを作成する。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/131643/323ca45b-6a9d-b257-7177-a03d61c9bf85.png)


- 上記のリポジトリをクローン
- リポジトリにダウンロードしたZIPファイルを展開 
  - ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/131643/8be718c5-2597-75ef-0b00-d6e58de72443.png)
- 展開した結果を Git Push して、Github上に格納


## デプロイ

Gitリポジトリを準備したので、ここからソースを取得して、いい感じにビルド、デプロイしてくれることを期待して、
TAP上にデプロイしてみる。

### サプライチェーン(Supply Chain)･ワークロード(Workload)

どんな流れで、アプリをビルド･デプロイ･(テストなど)･･･してくれる流れのことを、サプライチェーンと読んでいるらしい。
サプライチェーンは、クラスタ内に色々なパターンが登録できるようで、いくつかデプロイされている。

以下のように、パッケージとして、何が入っているか見ることができるみたい。

```
XXXXX@ip-XXXXX:~$ tanzu package available list -A
(例)
  ootb-supply-chain-basic.tanzu.vmware.com             Tanzu App Platform Out of The Box Supply Chain Basic                      Out of The Box Supply Chain Basic.                                                0.10.2          tap-install
```

とりあえず、サンプルのWEBアプリが動いているので、すでに何かサプライチェーンはクラスタ内にデプロイされていると踏んで、
それを使う想定で、以下コマンドを実行してみる。

えいやー。(ファイルパスはどこでも良い。)
```
tanzu apps workload create my-first-tanzu-java-web-app \
--git-repo https://github.com/make0x0/my-first-tanzu-java-web-app \
--git-branch main \
--type web \
--label app.kubernetes.io/part-of=tanzu-java-web-app \
--yes \
--namespace tap-workload
```

### 無邪気にデプロイしてみるもののSupplyChainNotFound
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/131643/f76d6516-bfb3-b529-7db7-82087e290771.png)
んー。

### デプロイ済みのサプライチェーンを見てみる
デプロイ済みのサプライチェーンは以下のように見ることができた。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/131643/c837035f-e07e-638f-6959-1c872b4331ec.png)

ラベルでマッチングしているみたい。そのラベルにマッチしないので、not found と言われているのではないか?
ということで、Workloadのデプロ時のラベル指定を合わせてみる。


### 再度 Workload をデプロイ

一旦、デプロイ済みのWorkload を削除
```
tanzu apps workload delete my-first-tanzu-java-web-app --namespace tap-workload
```

その後、修正したコマンドで再デプロイ。(ラベル、タイプ を  source-test-scan-to-url のサプライチェーン に合わせてみる。

```
tanzu apps workload create my-first-tanzu-java-web-app \
--git-repo https://github.com/make0x0/my-first-tanzu-java-web-app \
--git-branch main \
--label apps.tanzu.vmware.com/has-tests=true \
--label app.kubernetes.io/part-of=tanzu-java-web-app \
--type web \
--yes \
--namespace tap-workload
```

そうすると、利用できるサプライチェーンが見つかった模様。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/131643/93eeb1f8-6fbe-195b-39b7-991b7379ab6c.png)


### 今日はここまで
- サンプルアプリをデプロイしてみる
- デプロイするときサプライチェーンというリソースがクラスタに必要
- サプライチェーンは、Workloadのラベルでマッチングしているので合わせる必要がある

ここまでの注意点っぽい。
だが、まだアプリが稼働していないが、時間切れのためこの記事ではここまで。

### まだ終わらない

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/131643/2d832d6b-7359-510c-001b-7dd52cbefb21.png)

`image-privider` なる箇所で、問題がある模様。

トラブルシュート方法などもわかってないので、続きはまた別の機会に!

## さいごに

最近おしごとで k8s 触れておらずもやもや。かといって、自分で手を動かしてもなかったので、
アドベントカレンダーの登録をきっかけに、ちょっと触り始めたのでいいきっかけになりました!

途中記事になっているので、色々`ご指摘`受けそうですが、まあ一旦Upします。