IK.AM

@making's tech note


Tanzu Application Platform 1.2でTanzu Build Serviceのfull dependenciesをインストールする

🗃 {Dev/CaaS/Kubernetes/TAP}
🏷 Cartographer 🏷 Kubernetes 🏷 TAP 🏷 Tanzu 🏷 Tanzu Build Service 
🗓 Updated at 2022-09-13T13:56:52+09:00  🗓 Created at 2022-08-15T18:24:16+09:00 {✒️️ Edit  ⏰ History  🗑 Delete}

TAP 1.2をProfileでインストールした場合は、Tanzu Build Serviceのlite dependenciesがインストールされます。 今回はTanzu Application Platform 1.2 (Full Profile) をAKSにインストールしAzure ADと連携するメモ - Self Signed編で作成した環境にfull dependenciesをインストールします。

full dependenciesの場合は、offline対応しており、JavaのようなRuntimeが全てイメージに組み込まれています。そのため、ビルドの度にダウンロードが発生しなくなります。 TAP 1.2の時点で、次のbuildpackはfull dependenciesにしか含まれません。

liteとfullの詳しい違いは以下を参照してください。

https://docs.vmware.com/en/VMware-Tanzu-Application-Platform/1.2/tap/GUID-tanzu-build-service-dependencies.html#lite-vs-full

目次

基本的には以下のドキュメントの通りです。

https://docs.vmware.com/en/VMware-Tanzu-Application-Platform/1.2/tap/GUID-tanzu-build-service-install-tbs.html#install-full-dependencies-5

lite dependenciesの削除

lite dependenciesではClusterStack,ClusterStore,ClusterBuilderは次のようになります。

$ kubectl get clusterstack,clusterstore,clusterbuilder
NAME                            READY
clusterstack.kpack.io/base      True
clusterstack.kpack.io/default   True

NAME                            READY
clusterstore.kpack.io/default   True

NAME                              LATESTIMAGE                                                                                                                        READY
clusterbuilder.kpack.io/base      tap28868.azurecr.io/build-service:clusterbuilder-base@sha256:5c4c3eef1a24a456264873b9bd4e85d8f4b7faf4fec114f0d3de4b686d6a4fa6      True
clusterbuilder.kpack.io/default   tap28868.azurecr.io/build-service:clusterbuilder-default@sha256:5c4c3eef1a24a456264873b9bd4e85d8f4b7faf4fec114f0d3de4b686d6a4fa6   True

lite dependenciesを除外するためのtap-values.ymlに以下の設定を追加します。

buildservice:
  # ...
  exclude_dependencies: true

変更を反映します。

tanzu package installed update -n tap-install tap -f tap-values.yml 

full dependencies用のpackage repositoryの登録

TAP 1.2からはfull dependenciesはTBS用の専用package repositoryから配布されるようになりました。package repositoryを追加します。

tanzu package repository add tbs-full-deps-repository \
  --url registry.tanzu.vmware.com/build-service/full-tbs-deps-package-repo:1.6.1 \
  --namespace tap-install

次のpackageが利用可能になります。

$ tanzu package available get -n tap-install full-tbs-deps.tanzu.vmware.com/1.6.1

NAME:                             full-tbs-deps.tanzu.vmware.com
VERSION:                          1.6.1
RELEASED-AT:                      0001-01-01 00:00:00 +0000 UTC
DISPLAY-NAME:                     Full Tanzu Build Service Dependencies
SHORT-DESCRIPTION:                Full Tanzu Build Service Dependencies provide all buildpacks and stacks with support for airgapped environments.
PACKAGE-PROVIDER:                 VMware
MINIMUM-CAPACITY-REQUIREMENTS:    Cluster with nodes > 50GB ephemeral storage, Registry > 5GB available space
LONG-DESCRIPTION:                 Full Tanzu Build Service Dependencies Build Service provide contains all Tanzu Buildpacks and dependencies, which provides support for more workload types. The dependencies are pre-packaged so builds don't have to download them from the Internet. This can speed up build times and allows builds to occur in airgapped environments.
MAINTAINERS:                      [{Matt McNew} {Matt Gibson} {Tom Kennedy} {Viraj Patel} {Tyler Phelan} {Nicholas Carlson}]
RELEASE-NOTES:                    https://docs.vmware.com/en/VMware-Tanzu-Build-Service/index.html
LICENSE:                          []
SUPPORT:                          https://tanzu.vmware.com/support
CATEGORY:                         []

full dependenciesのインストール

追加されたpackageをインストールします。

tanzu package install full-tbs-deps -p full-tbs-deps.tanzu.vmware.com -v 1.6.1 -n tap-install

完了するのに10分近くかかります。

full dependenciesではClusterStack,ClusterStore,ClusterBuilderは次のようになります。

$ kubectl get clusterstack,clusterstore,clusterbuilder
NAME                            READY
clusterstack.kpack.io/base      True
clusterstack.kpack.io/default   True
clusterstack.kpack.io/full      True
clusterstack.kpack.io/tiny      True

NAME                            READY
clusterstore.kpack.io/default   True

NAME                              LATESTIMAGE                                                                                                                        READY
clusterbuilder.kpack.io/base      tap28868.azurecr.io/build-service:clusterbuilder-base@sha256:de4384876beb357367d986041bbfd006f0d4bf705a5ab4316e5ca67976230e76      True
clusterbuilder.kpack.io/default   tap28868.azurecr.io/build-service:clusterbuilder-default@sha256:de4384876beb357367d986041bbfd006f0d4bf705a5ab4316e5ca67976230e76   True
clusterbuilder.kpack.io/full      tap28868.azurecr.io/build-service:clusterbuilder-full@sha256:7e5538e6abb3919cf0363fadff9136e8724ff69ed699706d97428b4c755cc715      True
clusterbuilder.kpack.io/tiny      tap28868.azurecr.io/build-service:clusterbuilder-tiny@sha256:5b103c7d3ba7186ef8dca6865f61ca0c1adad9f2adaf5d3e8de930d1dbbb371d      True

⚠️ 一度でもlite dependenciesでビルドをしたことがある場合は、online buildpackが引き続き使われることがあるようです。その場合は、次のコマンドでリソースをいったん全部削除し、reconcileで再度作成されるのを待ってください。

kubectl delete clusterbuilder --all
kubectl delete clusterstack --all
kubectl delete clusterstore --all
kubectl delete tanzunetdependencyupdaters -n build-service --all
kubectl delete deploy dependency-updater-controller -n build-service

full clusterbuilderでWorkloadを作成

full dependenciesの場合は、デフォルトのdefault clusterbuilderのままでもoffline対応buildpackが使われるので、buildは速くなります。Partner Buildpacksもdefault clusterbuilderで利用可能です。

一方、PHP BuildpackやWeb Servers Buildpackを使いたい場合はfull clusterbuilderを使用する必要があります。

Workloadでどのclusterbuilderを使用するかはtap-values.ymlで指定できます。デフォルトではdefault (= base)が設定されます。

ootb_supply_chain_basic:
  cluster_builder: default # or base or full or tiny

この設定を変更してクラスタ全体で変更することもできますが、TAP 1.2からはWorklod個別にclusterbuilderを指定できるようになりました。

https://docs.vmware.com/en/VMware-Tanzu-Application-Platform/1.2/tap/GUID-scc-tbs.html

tanzu apps workload apply spring-music \
  --app spring-music \
  --git-repo https://github.com/tanzu-japan/spring-music \
  --git-branch tanzu \
  --type web \
  --label apps.tanzu.vmware.com/has-tests=true \
  --annotation autoscaling.knative.dev/minScale=1 \
  --param clusterBuilder=full \
  -n demo \
  -y
tanzu apps workload tail spring-music -n demo
# "or" stern -n demo spring-music