SB C&Sの最新技術情報 発信サイト

C&S ENGINEER VOICE

SB C&S

Tanzu Mission Control でのTanzu Application Platform インストールの紹介

VMware
2023.12.11

こんにちは。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証明書をインストール

実施前の環境イメージは以下となります。
赤枠は本手順で作成します。

tap_with_tmc_1.png

インストール完了後の環境イメージは以下です。tkgs-01にTAPのインストールが完了し、Harborとも連携できています。また、操作用デスクトップからTAPにて展開されたサービスにアクセスできるように、DNSにTAPのIPを紐づけるドメイン名の登録をしています。

tap_with_tmc_2.png

TAPインストール

Harbor側の準備

利用するコンテナレジストリとして、Harbor側の準備を行います。

TAPで利用するProjectを作成しておきます。
今回は[tap]という名称にて作成します。

tap_with_tmc_3.png

続いてtapプロジェクトからコンテナ イメージをダウンロードする際に必要となるため、HarborのCA証明書をダウンロードしておきます。

tap_with_tmc_4.png

TAP インストール

TMCを用いて、対象のクラスタへTAPのインストールを行います。

TMCにて、[Catalog]を開き[Solutions]を開き、[Single Cluster]を選択後[INSTALL TANZU APPLICATION PLATFORM]をクリックします。

tap_with_tmc_5.png

TAPの名称を設定する画面が表示されます。
以下パラメータを入力して[NEXT]をクリックします。

  • Tanzu Application Platform name: tap-01

tap_with_tmc_6.png

各パラメータの設定画面が表示されます。
[SELECT CLUSTER]をクリックして表示される画面にて、展開先クラスタを選択して[SELECT CLUSTER]を選択します。
※このときに対象のクラスタがTAPのインストール要件を満たしていない場合はエラーが表示されます

tap_with_tmc_7.png

[CREATE NEW SECRET]をクリックして表示される画面にて、以下パラメータを入力して[CREATE SECRET]をクリックします。

  • Secret name: registry-credentials
    ※自由に入力可能となっていますが、「registry-credentials」という文字列である必要があるため注意してください
  • Select namespace: default
  • Image registry URL: HarborのFQDN
  • Username: Harborのユーザー名
  • Password: Harborのパスワード

tap_with_tmc_8.png

以下パラメータを入力します。

  • Ingress domain: pacific.lab ※作業デスクトップからアクセス可能なドメイン
  • Supply chain: basic ※Source to URL機能のみ有効化
  • Repository name: tap

tap_with_tmc_9.png

[Advanced configuration]-[YAML]を開き、sharedの下階層のインデント(image registryと同インデント)に以下パラメータを入力して[DONE]-[NEXT]をクリックします。

  ca_cert_data: |
    -----BEGIN CERTIFICATE-----
    {事前にダウンロードしたHarborのCA証明書}
    -----END CERTIFICATE-----

tap_with_tmc_10.png

最後にライセンス条項の確認後にチェックを入れ、[INSTALL TAP]をクリックします。

tap_with_tmc_11.png

TAPのインストールが開始されます。StatusがSucceededになりましたらインストール完了です。
また、こちらの画面上からProfileの[full]をクリックすると、インストールされたPackageの一覧が確認できます。

tap_with_tmc_12.png

補足になりますが、HarborのtapプロジェクトにbuildserviceというRepositoryが追加されていることも確認できます。

tap_with_tmc_13.png

Tanzu Developer Portal へのアクセス

TAPをインストールすると、Tanzu Developer Portal (TAP GUI) というGUIのポータルが用意されます。
ただしこちらはFQDNでアクセスする必要があるため、接続できるようにIPアドレスとFQDNを紐付ける必要があります。

該当のFQDNは、TMCの右上に[Tanzu Developer Portal URL]に記載されています。
※ TAP インストール時に指定したIngress domainの前に「tap-gui.」が付与される形になります。

tap_with_tmc_14.png

紐付ける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.240             8001/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_with_tmc_15.png

以上でTAPのインストールは完了です。対象のクラスタへ無事にTAPが展開され、TAPの各サービスの入り口となるEnvoyのIPアドレスに名前解決してアクセスできるようになっています。

tap_with_tmc_16.png

動作確認

動作確認として、試しにWorkloadを1つ展開してみます。
TAPインストールの際に[Supply chain]のパラメータをbasicに指定したため、Source to URLのWorkloadが利用できます。Source to URLではソースコードからビルドを行い、コンテナイメージ化して、Podの展開まで実施されます。

tap_with_tmc_17.png

対象のアプリケーションとして、VMware TanzuのGitHubにて公開されているPythonのアプリケーションを利用します。
こちらのアプリケーションは、「{アプリケーションのURL}/hello/{文字列}」の形式でアクセスをすると、文字列を表示するものです。

https://github.com/vmware-tanzu/application-accelerator-samples.git

開発者名前空間の作成

Workloadの展開先の名前空間として、開発者名前空間が必要となるため作成します。

TMCにて、インストールしたTAPの画面より[CREATE DEVELOPER NAMESPACE]をクリックして表示される画面にて作成します。
今回は[tap-wl]という名称で作成しています。

tap_with_tmc_18.png

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が記載されてることも確認できます。

tap_with_tmc_19.png

アプリケーションのURLが表示されるので、Tanzu Developer Portalと同様にDNSでEnvoyのIPアドレスと紐づけることで、アプリケーションを表示できます。

今回用いたアプリケーションは、「/hello/{文字列}」といった形式でURLの後につけた文字列を表示するものです。以下のような形でアクセスして、問題なくアクセスできることを確認しておきます。
例: https://tap-wl-sample.tap-test.pacific.lab/hello/TAP!!

tap_with_tmc_20.png

まとめ

今回はTMCを用いたTAPのインストールを実施してみました。インストール作業に関しては基本的にTMCのGUI上で操作をすることができ、簡易的に実施することができました。
一方でTMCのドキュメント側にはTAPの情報が不足していることもあり、一部困惑した箇所もありました。ただし、TAPの知識を持っているエンジニアの支援が最初にあれば、運用開始後に非常にお手軽にセルフサービスで展開できる点は強みだと感じました。

他のおすすめ記事はこちら

著者紹介

SB C&S株式会社
ICT事業本部 技術本部 技術統括部
第1技術部 1課
村上 正弥 - Seiya.Murakami -

VMware vExpert