こんにちは。SB C&S の村上です。
この記事では、Tanzu Mission Control (TMC) を用いてTanzu Application Platform (TAP) のインストールを行う流れを紹介します。
こちらのTAPインストール機能は、2023年10月31日のバージョンアップにてTMCに追加された機能です。本来TAPのインストールを行う際は、インストール用のYAMLファイルの作成やコマンドでの操作が必要となります。しかしTMCで提供される機能では、インストールをすべてTMCのGUI上で進めることができます。
またインストール方法も、現在はSingle Cluster構成とMulti Cluster構成のどちらにも対応しているため、検証から本番にかけてTMC上での操作にてTAP環境準備ができるようになっています。
環境情報
本手順では、事前に作成済みのTanzu Kubernetes Grid Service (TKGs)に対して、TAP (Single Cluster構成) のインストールを実施していきます。
TAPのインストールに必要なリソース要件としては以下となります。
- ノードごとに 8 GB以上のRAM
- すべてのノードの合計で 16 vCPU以上
- ノードごとに 100 GB以上の空きディスク容量
※ TKGsの場合は「/var/lib/kubelet」に100GB以上の空き容量が必要
上記リソース要件も踏まえて以下内容のクラスタを用意しています。
- Kubernetes基盤
- TKGs (vSphere with Tanzu)
- Version: 1.26.5
- Management Cluster
- 台数: 3
- vmClass: best-effort-xlarge (4vCPU, 32GB)
- Storage
- /var/lib/kubelet: 128Gi (GiB)
- Workload Cluster
- 台数: 3
- vmClass: best-effort-2xlarge (8vCPU, 64GB)
- Storage
- /var/lib/kubelet: 128Gi (GiB)
- /var/lib/containerd: 50Gi (GiB)
- コンテナ レジストリの証明書
- HarborのCA証明書をインストール
実施前の環境イメージは以下となります。
赤枠は本手順で作成します。
インストール完了後の環境イメージは以下です。tkgs-01にTAPのインストールが完了し、Harborとも連携できています。また、操作用デスクトップからTAPにて展開されたサービスにアクセスできるように、DNSにTAPのIPを紐づけるドメイン名の登録をしています。
TAPインストール
Harbor側の準備
利用するコンテナレジストリとして、Harbor側の準備を行います。
TAPで利用するProjectを作成しておきます。
今回は[tap]という名称にて作成します。
続いてtapプロジェクトからコンテナ イメージをダウンロードする際に必要となるため、HarborのCA証明書をダウンロードしておきます。
TAP インストール
TMCを用いて、対象のクラスタへTAPのインストールを行います。
TMCにて、[Catalog]を開き[Solutions]を開き、[Single Cluster]を選択後[INSTALL TANZU APPLICATION PLATFORM]をクリックします。
TAPの名称を設定する画面が表示されます。
以下パラメータを入力して[NEXT]をクリックします。
- Tanzu Application Platform name: tap-01
各パラメータの設定画面が表示されます。
[SELECT CLUSTER]をクリックして表示される画面にて、展開先クラスタを選択して[SELECT CLUSTER]を選択します。
※このときに対象のクラスタがTAPのインストール要件を満たしていない場合はエラーが表示されます
[CREATE NEW SECRET]をクリックして表示される画面にて、以下パラメータを入力して[CREATE SECRET]をクリックします。
- Secret name: registry-credentials
※自由に入力可能となっていますが、「registry-credentials」という文字列である必要があるため注意してください - Select namespace: default
- Image registry URL: HarborのFQDN
- Username: Harborのユーザー名
- Password: Harborのパスワード
以下パラメータを入力します。
- Ingress domain: pacific.lab ※作業デスクトップからアクセス可能なドメイン
- Supply chain: basic ※Source to URL機能のみ有効化
- Repository name: tap
[Advanced configuration]-[YAML]を開き、sharedの下階層のインデント(image registryと同インデント)に以下パラメータを入力して[DONE]-[NEXT]をクリックします。
ca_cert_data: |
-----BEGIN CERTIFICATE-----
{事前にダウンロードしたHarborのCA証明書}
-----END CERTIFICATE-----
最後にライセンス条項の確認後にチェックを入れ、[INSTALL TAP]をクリックします。
TAPのインストールが開始されます。StatusがSucceededになりましたらインストール完了です。
また、こちらの画面上からProfileの[full]をクリックすると、インストールされたPackageの一覧が確認できます。
補足になりますが、HarborのtapプロジェクトにbuildserviceというRepositoryが追加されていることも確認できます。
Tanzu Developer Portal へのアクセス
TAPをインストールすると、Tanzu Developer Portal (TAP GUI) というGUIのポータルが用意されます。
ただしこちらはFQDNでアクセスする必要があるため、接続できるようにIPアドレスとFQDNを紐付ける必要があります。
該当のFQDNは、TMCの右上に[Tanzu Developer Portal URL]に記載されています。
※ TAP インストール時に指定したIngress domainの前に「tap-gui.」が付与される形になります。
紐付けるIPアドレスは、envoyサービスのEXTERNAL-IPとなります。
対象のクラスタのkube-configにて以下コマンドでIPアドレスを確認できます。このアドレスをFQDNに名前解決するレコードを、DNSに登録しておきます。
$ kubectl get service -n tanzu-system-ingress ## 出力 NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE contour ClusterIP 10.96.171.2408001/TCP 10m envoy LoadBalancer 10.96.137.201 172.20.83.99 80:30161/TCP,443:31075/TCP 10m
DNSに登録完了後、URLにアクセスをするとTanzu Developer Portalにアクセスすることができます。
以上でTAPのインストールは完了です。対象のクラスタへ無事にTAPが展開され、TAPの各サービスの入り口となるEnvoyのIPアドレスに名前解決してアクセスできるようになっています。
動作確認
動作確認として、試しにWorkloadを1つ展開してみます。
TAPインストールの際に[Supply chain]のパラメータをbasicに指定したため、Source to URLのWorkloadが利用できます。Source to URLではソースコードからビルドを行い、コンテナイメージ化して、Podの展開まで実施されます。
対象のアプリケーションとして、VMware TanzuのGitHubにて公開されているPythonのアプリケーションを利用します。
こちらのアプリケーションは、「{アプリケーションのURL}/hello/{文字列}」の形式でアクセスをすると、文字列を表示するものです。
https://github.com/vmware-tanzu/application-accelerator-samples.git
開発者名前空間の作成
Workloadの展開先の名前空間として、開発者名前空間が必要となるため作成します。
TMCにて、インストールしたTAPの画面より[CREATE DEVELOPER NAMESPACE]をクリックして表示される画面にて作成します。
今回は[tap-wl]という名称で作成しています。
TAP プラグインインストール
TAP Workloadの作成にあたり、Tanzu CLIを用います。これはTMCから取得しますが、そのままではTAPのプラグインが存在しないためインストールを行います。
以下コマンドでインストールを行います。
$ tanzu plugin install --group vmware-tap/default ## 出力 [i] Installing plugin 'accelerator:v1.7.0' with target 'kubernetes' [i] Installing plugin 'apps:v0.13.0' with target 'kubernetes' [i] Installing plugin 'build-service:v1.0.0' with target 'kubernetes' [i] Installing plugin 'external-secrets:v0.1.0' with target 'kubernetes' [i] Installing plugin 'insight:v1.7.0' with target 'kubernetes' [i] Installing plugin 'package:v0.32.1' with target 'kubernetes' [i] Installing plugin 'secret:v0.32.0' with target 'kubernetes' [i] Installing plugin 'services:v0.8.0' with target 'kubernetes' [ok] successfully installed all plugins from group 'vmware-tap/default:v1.7.0'
ワークロードの展開
作成した開発者名前空間に、Tanzu CLIを用いてワークロードの展開を行います。
以下コマンドにてワークロードの展開を行います。
$ tanzu apps workload apply tap-wl-sample ` --app tap-app-sample ` --git-repo https://github.com/vmware-tanzu/application-accelerator-samples.git ` --sub-path python-web-app ` --git-branch main ` --type web ` -n tap-wl
ワークロードの展開実行後は、以下コマンドで展開中のログを確認できます。
$ tanzu apps workload tail tap-wl-sample --namespace tap-wl --timestamp --since 1h
また、ワークロードで動作しているサプライチェーンの様子はTanzu Developer Portalから確認できます。
サプライチェーンのDeliveryフェイズがSuccessになりましたら、アプリケーションの展開まで完了している状態となります。URLの欄に対象アプリケーションのURLが記載されてることも確認できます。
アプリケーションのURLが表示されるので、Tanzu Developer Portalと同様にDNSでEnvoyのIPアドレスと紐づけることで、アプリケーションを表示できます。
今回用いたアプリケーションは、「/hello/{文字列}」といった形式でURLの後につけた文字列を表示するものです。以下のような形でアクセスして、問題なくアクセスできることを確認しておきます。
例: https://tap-wl-sample.tap-test.pacific.lab/hello/TAP!!
まとめ
今回はTMCを用いたTAPのインストールを実施してみました。インストール作業に関しては基本的にTMCのGUI上で操作をすることができ、簡易的に実施することができました。
一方でTMCのドキュメント側にはTAPの情報が不足していることもあり、一部困惑した箇所もありました。ただし、TAPの知識を持っているエンジニアの支援が最初にあれば、運用開始後に非常にお手軽にセルフサービスで展開できる点は強みだと感じました。
他のおすすめ記事はこちら
著者紹介
SB C&S株式会社
ICT事業本部 技術本部 技術統括部
第1技術部 1課
村上 正弥 - Seiya.Murakami -
VMware vExpert