Tanzu Kubernetes Grid(TKGm) v1.3.1 にContour, Harbor, TBS をデプロイした際の手順
Tanzu Kubernetes Grid multicloud(TKGm) v1.3.1 にContour, Harbor, TBS をデプロイした際の手順です。Contour をIngress として利用し、そのバックエンドで Harbor にアクセス出来るようにしています。このHarbor を利用する形でTBS もデプロイしています。
手順としては、ほとんど「Tanzu Kubernetes Grid(TKGm) v1.3.0 にContour, Harbor, TBS をデプロイした際の手順」と同じです。
環境
- Tanzu Kubernetes Grid v1.3.1 on vSphere
- Workload Cluster v1.20.5
手順
TKGm のデプロイ
以下のドキュメントに従って、まずはTKGm のManagement Cluster, Workload Cluster をデプロイしていきます。
govc
を利用し、事前の準備を行うために以下の環境変数をセットしておきます。$ cat tkgm-env.sh
export GOVC_USERNAME=xxxx
export GOVC_PASSWORD=xxxx
export GOVC_DATACENTER=Datacenter
export GOVC_NETWORK="VM Network"
export GOVC_DATASTORE=datastore3
export GOVC_RESOURCE_POOL=/Datacenter/host/Cluster/Resources/tkgm
export GOVC_INSECURE=1
export TEMPLATE_FOLDER=/Datacenter/vm/tkgm
export GOVC_URL=xxxx
source tkgm-env.sh
ダウンロードしておいたTKGm のノードOS として利用するOVA をインポートしていきます。
$ cat options.json
{
"DiskProvisioning": "thin"
}
govc import.ova --options=options.json -folder ${TEMPLATE_FOLDER} ~/Downloads/_packages/ubuntu-2004-kube-v1.19.9-vmware.1-tkg.1-6209205269669257148.ova
govc import.ova --options=options.json -folder ${TEMPLATE_FOLDER} ~/Downloads/_packages/ubuntu-2004-kube-v1.20.5-vmware.1-tkg.1-16555584836258482890.ova
インポートしたOVA をテンプレート化します。
govc vm.markastemplate ${TEMPLATE_FOLDER}/ubuntu-2004-kube-v1.19.9
govc vm.markastemplate ${TEMPLATE_FOLDER}/ubuntu-2004-kube-v1.20.5
上の手順に従って、
tanzu
CLI を導入していきます。$ tar xvf tanzu-cli-bundle-v1.3.1-darwin-amd64.tar
x cli/
x cli/core/
x cli/core/v1.3.1/
x cli/core/v1.3.1/tanzu-core-darwin_amd64
x cli/core/plugin.yaml
x cli/cluster/
x cli/cluster/v1.3.1/
x cli/cluster/v1.3.1/tanzu-cluster-darwin_amd64
x cli/cluster/plugin.yaml
x cli/login/
x cli/login/v1.3.1/
x cli/login/v1.3.1/tanzu-login-darwin_amd64
x cli/login/plugin.yaml
x cli/management-cluster/
x cli/management-cluster/v1.3.1/
x cli/management-cluster/v1.3.1/tanzu-management-cluster-darwin_amd64
x cli/management-cluster/plugin.yaml
x cli/pinniped-auth/
x cli/pinniped-auth/v1.3.1/
x cli/pinniped-auth/v1.3.1/tanzu-pinniped-auth-darwin_amd64
x cli/pinniped-auth/plugin.yaml
x cli/kubernetes-release/
x cli/kubernetes-release/v1.3.1/
x cli/kubernetes-release/v1.3.1/tanzu-kubernetes-release-darwin_amd64
x cli/kubernetes-release/plugin.yaml
x cli/manifest.yaml
x cli/ytt-darwin-amd64-v0.31.0+vmware.1.gz
x cli/kapp-darwin-amd64-v0.36.0+vmware.1.gz
x cli/imgpkg-darwin-amd64-v0.5.0+vmware.1.gz
x cli/kbld-darwin-amd64-v0.28.0+vmware.1.gz
x cli/vendir-darwin-amd64-v0.18.0+vmware.1.gz
$ cd cli
$ ls
cluster/ kapp-darwin-amd64-v0.33.0+vmware.1.gz kubernetes-release/ pinniped-auth/
core/ kapp-darwin-amd64-v0.36.0+vmware.1.gz login/ vendir-darwin-amd64-v0.18.0+vmware.1.gz
imgpkg-darwin-amd64-v0.2.0+vmware.1.gz kbld-darwin-amd64-v0.24.0+vmware.1.gz management-cluster/ ytt-darwin-amd64-v0.30.0+vmware.1.gz
imgpkg-darwin-amd64-v0.5.0+vmware.1.gz kbld-darwin-amd64-v0.28.0+vmware.1.gz manifest.yaml ytt-darwin-amd64-v0.31.0+vmware.1.gz
sudo install core/v1.3.1/tanzu-core-darwin_amd64 /usr/local/bin/tanzu
tanzu plugin clean
cd ..
tanzu plugin install --local cli all
$ tanzu plugin list
NAME LATEST VERSION DESCRIPTION REPOSITORY VERSION STATUS
alpha v1.3.1 Alpha CLI commands core not installed
cluster v1.3.1 Kubernetes cluster operations core v1.3.1 installed
kubernetes-release v1.3.1 Kubernetes release operations core v1.3.1 installed
login v1.3.1 Login to the platform core v1.3.1 installed
management-cluster v1.3.1 Kubernetes management cluster operations core v1.3.1 installed
pinniped-auth v1.3.1 Pinniped authentication operations (usually not directly invoked) core v1.3.1 installed
Management Cluster のデプロイ
Management Cluster をデプロイしていきます。以下のコマンドを実行すると、Management Cluster を導入するためのConfiguration を設定していくUI がブラウザに表示されます。ガイドに従って項目を埋めていき、Deploy する直前で
Ctrl+C
で処理を中断しています。本来はそのままデプロイして問題ないですが、tanzu
CLI で導入したかったので、clusterconfig.yaml
の雛形を作成するためにこの様にしています。$ tanzu management-cluster create --ui
Validating the pre-requisites...
Serving kickstart UI at http://127.0.0.1:8080
^CShutting down...
Stopped serving kickstart UI at http://127.0.0.1:8080
以下の様な環境変数がセットされていることを確認出来ました。
$ cat ~/.tanzu/tkg/clusterconfigs/ldjlwayvw6.yaml
AVI_CA_DATA_B64: ""
AVI_CLOUD_NAME: ""
AVI_CONTROLLER: ""
AVI_DATA_NETWORK: ""
AVI_DATA_NETWORK_CIDR: ""
AVI_ENABLE: "false"
AVI_LABELS: ""
AVI_PASSWORD: ""
AVI_SERVICE_ENGINE_GROUP: ""
AVI_USERNAME: ""
CLUSTER_CIDR: 100.96.0.0/11
CLUSTER_NAME: schecter
CLUSTER_PLAN: dev
ENABLE_CEIP_PARTICIPATION: "false"
ENABLE_MHC: "true"
IDENTITY_MANAGEMENT_TYPE: none
INFRASTRUCTURE_PROVIDER: vsphere
LDAP_BIND_DN: ""
LDAP_BIND_PASSWORD: ""
LDAP_GROUP_SEARCH_BASE_DN: ""
LDAP_GROUP_SEARCH_FILTER: ""
LDAP_GROUP_SEARCH_GROUP_ATTRIBUTE: ""
LDAP_GROUP_SEARCH_NAME_ATTRIBUTE: cn
LDAP_GROUP_SEARCH_USER_ATTRIBUTE: DN
LDAP_HOST: ""
LDAP_ROOT_CA_DATA_B64: ""
LDAP_USER_SEARCH_BASE_DN: ""
LDAP_USER_SEARCH_FILTER: ""
LDAP_USER_SEARCH_NAME_ATTRIBUTE: ""
LDAP_USER_SEARCH_USERNAME: userPrincipalName
OIDC_IDENTITY_PROVIDER_CLIENT_ID: ""
OIDC_IDENTITY_PROVIDER_CLIENT_SECRET: ""
OIDC_IDENTITY_PROVIDER_GROUPS_CLAIM: ""
OIDC_IDENTITY_PROVIDER_ISSUER_URL: ""
OIDC_IDENTITY_PROVIDER_NAME: ""
OIDC_IDENTITY_PROVIDER_SCOPES: ""
OIDC_IDENTITY_PROVIDER_USERNAME_CLAIM: ""
SERVICE_CIDR: 100.64.0.0/13
TKG_HTTP_PROXY_ENABLED: "false"
VSPHERE_CONTROL_PLANE_DISK_GIB: "20"
VSPHERE_CONTROL_PLANE_ENDPOINT: xxx.xxx.xxx.xxx
VSPHERE_CONTROL_PLANE_MEM_MIB: "4096"
VSPHERE_CONTROL_PLANE_NUM_CPUS: "2"
VSPHERE_DATACENTER: /Datacenter
VSPHERE_DATASTORE: /Datacenter/datastore/datastore3
VSPHERE_FOLDER: /Datacenter/vm/tkgm
VSPHERE_NETWORK: VM Network
VSPHERE_PASSWORD: <encoded:xxxxxx>
VSPHERE_RESOURCE_POOL: /Datacenter/host/Cluster/Resources
VSPHERE_SERVER: xxxx
VSPHERE_SSH_AUTHORIZED_KEY: ssh-rsa AAAAxxxxxx
VSPHERE_TLS_THUMBPRINT: 65:xxxx:49
VSPHERE_USERNAME: xxxx
VSPHERE_WORKER_DISK_GIB: "20"
VSPHERE_WORKER_MEM_MIB: "4096"
VSPHERE_WORKER_NUM_CPUS: "2"
上の情報を元にManagement Cluster を作成しました。各ノードの最低メモリは4GB 必要になっているようです。4GB より小さい値を設定すると、
"Error: configuration validation failed: vSphere node size validation failed: the minimum requirement of VSPHERE_CONTROL_PLANE_MEM_MIB is 4096"
の様に怒られます。$ tanzu management-cluster create --file .tanzu/tkg/clusterconfigs/ldjlwayvw6.yaml -v 6
...(SNIP)...
Moving all Cluster API objects from bootstrap cluster to management cluster...
Performing move...
Discovering Cluster API objects
Moving Cluster API objects Clusters=1
Creating objects in the target cluster
Deleting objects from the source cluster
Waiting for additional components to be up and running...
Waiting for resource tanzu-addons-controller-manager of type *v1.Deployment to be up and running
Waiting for resource kapp-controller of type *v1.Deployment to be up and running
Waiting for resource tkr-controller-manager of type *v1.Deployment to be up and running
Context set for management cluster schecter as 'schecter-admin@schecter'.
Deleting kind cluster: tkg-kind-c2lmb5d35u5po616845g
Management cluster created!
You can now create your first workload cluster by running the following:
tanzu cluster create [name] -f [file]
Some addons might be getting installed! Check their status by running the following:
kubectl get apps -A
Management Cluster を確認していきます。
$ tanzu cluster list --include-management-cluster
NAME NAMESPACE STATUS CONTROLPLANE WORKERS KUBERNETES ROLES PLAN
schecter tkg-system running 1/1 1/1 v1.20.5+vmware.1 management dev
$ tanzu management-cluster get
NAME NAMESPACE STATUS CONTROLPLANE WORKERS KUBERNETES ROLES
schecter tkg-system running 1/1 1/1 v1.20.5+vmware.1 management
Details:
NAME READY SEVERITY REASON SINCE MESSAGE
/schecter True 9m58s
├─ClusterInfrastructure - VSphereCluster/schecter True 9m58s
├─ControlPlane - KubeadmControlPlane/schecter-control-plane True 9m58s
│ └─Machine/schecter-control-plane-jrjrk True 9m53s
└─Workers
└─MachineDeployment/schecter-md-0
└─Machine/schecter-md-0-868fcff449-v75w5 True 9m53s
Providers:
NAMESPACE NAME TYPE PROVIDERNAME VERSION WATCHNAMESPACE
capi-kubeadm-bootstrap-system bootstrap-kubeadm BootstrapProvider kubeadm v0.3.14
capi-kubeadm-control-plane-system control-plane-kubeadm ControlPlaneProvider kubeadm v0.3.14
capi-system cluster-api CoreProvider cluster-api v0.3.14
capv-system infrastructure-vsphere InfrastructureProvider vsphere v0.7.7
tanzu management-cluster kubeconfig get --admin --export-file lab-schecter-kubeconfig
export KUBECONFIG=~/lab-schecter-kubeconfig
$ k get nodes
NAME STATUS ROLES AGE VERSION
schecter-control-plane-jrjrk Ready control-plane,master 14m v1.20.5+vmware.1
schecter-md-0-868fcff449-v75w5 Ready <none> 13m v1.20.5+vmware.1
Workload Cluster のデプロイ
ディレクトリ
~/.tanzu/tkg/clusterconfigs
にWorkload Cluster 用の定義ファイルを作成してます。$ cat cluster-fender-config.yaml
AVI_ENABLE: "false"
CLUSTER_NAME: fender
CLUSTER_PLAN: dev
ENABLE_CEIP_PARTICIPATION: "false"
ENABLE_MHC: "true"
VSPHERE_CONTROL_PLANE_DISK_GIB: "40"
VSPHERE_CONTROL_PLANE_ENDPOINT: xxx.xxx.xxx.xxx
VSPHERE_CONTROL_PLANE_MEM_MIB: "4096"
VSPHERE_CONTROL_PLANE_NUM_CPUS: "2"
VSPHERE_DATACENTER: /Datacenter
VSPHERE_DATASTORE: /Datacenter/datastore/datastore4
VSPHERE_FOLDER: /Datacenter/vm/tkgm
VSPHERE_NETWORK: VM Network
VSPHERE_PASSWORD: <encoded:xxxxxx>
VSPHERE_RESOURCE_POOL: /Datacenter/host/Cluster/Resources
VSPHERE_SERVER: xxxx
VSPHERE_SSH_AUTHORIZED_KEY: ssh-rsa AAAAxxxxxx
VSPHERE_TLS_THUMBPRINT: 65:xxxx:49
VSPHERE_USERNAME: xxxx
VSPHERE_WORKER_DISK_GIB: "128"
VSPHERE_WORKER_MEM_MIB: "8192"
VSPHERE_WORKER_NUM_CPUS: "4"
CONTROL_PLANE_MACHINE_COUNT: 1
WORKER_MACHINE_COUNT: 1
OS_NAME: ubuntu
作成したら以下のコマンドでWorkload Cluster を作成していきます。
$ tanzu cluster create fender --tkr v1.19.9---vmware.1-tkg.1 --file ~/.tanzu/tkg/clusterconfigs/cluster-fender-config.yaml -v 6
WARNING: TanzuKubernetesRelease "v1.19.9---vmware.1-tkg.1" is not compatible on the management cluster
Using namespace from config:
Downloading bom for TKR "v1.19.9---vmware.1-tkg.1"
Validating configuration...
...(SNIP)...
Waiting for addons installation...
Waiting for resources type *v1alpha3.ClusterResourceSetList to be up and running
Waiting for resource antrea-controller of type *v1.Deployment to be up and running
Workload cluster 'fender' created
Workload Cluster にアクセスします。
$ tanzu cluster list
NAME NAMESPACE STATUS CONTROLPLANE WORKERS KUBERNETES ROLES PLAN
fender default running 1/1 1/1 v1.19.9+vmware.1 <none> dev
tanzu cluster kubeconfig get fender --export-file lab-fender-kubeconfig --admin
export KUBECONFIG=~/lab-fender-kubeconfig
$ k get nodes
NAME STATUS ROLES AGE VERSION
fender-control-plane-48lfk Ready master 48m v1.19.9+vmware.1
fender-md-0-7f8474584d-7pp7n Ready <none> 46m v1.19.9+vmware.1
無事にデプロイ出来ましたので、続いてContour をデプロイしていきます。
Contour のデプロイ
こちらの「Deploying and Managing Extensions and Shared Services」、「Implementing Ingress Control with Contour」に従ってデプロイしていきます。こちらの環境では事前に、metalLB をインストールし、
type: LoadBalancer
リソースを払い出せる様にしています。本来であれば、NSX ALB を利用し、L4 のロードバランサは実装しておくのが望ましいと思います。tkg-extensions-v1.3.1+vmware.1
ディレクトリ直下に移動し、cert-manager
をインストールします。k apply -f cert-manager
この後は「Implementing Ingress Control with Contour」の手順に従って進めていきます。ディレクトリを
tkg-extensions-v1.3.1+vmware.1/extensions
に移動し、以下のマニフェストを apply
します。k apply -f ingress/contour/namespace-role.yaml
contour の
values.yaml
をコピーし、envoy.service.type
を NodePort
から LoadBalancer
に変更します。変更したvalues.yaml
を元にSecret
を作成します。$ cp ingress/contour/vsphere/contour-data-values.yaml.example \
ingress/contour/vsphere/contour-data-values.yaml
$ cat ingress/contour/vsphere/contour-data-values.yaml
#@data/values
#@overlay/match-child-defaults missing_ok=True
---
infrastructure_provider: "vsphere"
contour:
image:
repository: projects.registry.vmware.com/tkg
envoy:
image:
repository: projects.registry.vmware.com/tkg
service:
type: "NodePort"%
vim ingress/contour/vsphere/contour-data-values.yaml
$ k -n tanzu-system-ingress create secret generic contour-data-values \
--from-file=values.yaml=ingress/contour/vsphere/contour-data-values.yaml
contour をデプロイします。
k apply -f ingress/contour/contour-extension.yaml
しばらくすると、サービスが起動してきます。
$ k -n tanzu-system-ingress get app contour
NAME DESCRIPTION SINCE-DEPLOY AGE
contour Reconcile succeeded 9s 51s
後ほど必要になるので、envoy の
EXTERNAL-IP
をメモしておきます。$ k -n tanzu-system-ingress get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/contour ClusterIP 100.70.123.52 <none> 8001/TCP 40s
service/envoy LoadBalancer 100.70.234.104 xxx.xxx.xx.xxx 80:31366/TCP,443:30369/TCP 40s
続いて、Let's Encrypt を利用し、Contour で利用する証明書を取得します。
Let's Encrypt で証明書の取得
以下のコマンドで証明書を発行します。
この環境ではGoogle DNS を使っています。envoy にアサインされていた
EXTERNAL-IP
を *.<MYDOMAIN>
のAレコードとして登録しています。$ certbot --server https://acme-v02.api.letsencrypt.org/directory \
-d "*.<MYDOMAIN>" --manual --preferred-challenges dns-01 certonly \
--work-dir ./<cluster-name>/wd \
--config-dir ./<cluster-name>/cfg \
--logs-dir ./<cluster-name>/logs
案内に従ってステップを進めていくと、DNS TXT レコード とそれに対応する Values が表示されるので、その組合せをGoogle DNS に登録します。
名前解決出来るまでしばらく時間が掛かりますが、以下のコマンドで登録したDNS TXT レコードの Values 値が返ってくればOKです。
nslookup -q=txt _acme-challenge.<MYDOMAIN>
クエリが通ったら、プロンプトでEnter を入力し、処理を終えます。
Congratulations! Your certificate and chain have been saved at:
と出力されていれば、無事処理が終わっています。Harbor のデプロイ
続いてHarbor をデプロイしていきます。この手順ではBitnami が提供しているHelm Chart を利用してデプロイしています。こちらにある手順に従って、事前にBitnami のHelm Chart を追加しておきます。
Harbor をデプロイするNamespace とRoleBinding 設定をしていきます。
k create ns harbor
Harbor が利用するTLS の
Secret
を作成していきます。--cert
と --key
で指定しているファイルは上の手順で作成したfullchain.pem
とprivkey.pem
になります。$ k -n harbor create secret tls harbor-tls-secret \
--cert=./<cluster-name>/cfg/live/<MYDOMAIN>/fullchain.pem \
--key=./<cluster-name>/cfg/live/<MYDOMAIN>/privkey.pem
Helm のリポジトリをアップデートしておきます。
helm repo update
$ helm search repo bitnami |grep harbor
bitnami/harbor 10.0.4 2.2.2 Harbor is an an open source trusted cloud nativ...
Harbor をインストールする際の
values.yaml
を作成します。この環境ではIngress として、Contour を利用しているので、ingress.annotations.kubernetes.io/ingress.class にContour を指定しています。$ cat values.yaml
harborAdminPassword: xxxxx
volumePermissions.enabled: true
service:
type: ClusterIP
tls:
enabled: true
existingSecret: harbor-tls-secret
notaryExistingSecret: harbor-tls-secret
externalURL: registry.<MYDOMAIN>
ingress:
enabled: true
hosts:
core: registry.<MYDOMAIN>
notary: notary.<MYDOMAIN>
annotations:
ingress.kubernetes.io/force-ssl-redirect: "true" # force https, even if http is requested
kubernetes.io/ingress.class: contour # using Contour for ingress
kubernetes.io/tls-acme: "true" # using ACME certificates for TLS
portal:
tls:
existingSecret: harbor-tls-secret
persistence:
persistentVolumeClaim:
registry:
size: 100Gi
trivy:
size: 50Gi
helm でHarbor をデプロイします。
helm upgrade --install harbor bitnami/harbor -f values.yaml --namespace harbor --version 9.8.3
無事にHarbor が立ち上がっている様です。
$ k -n harbor get pods
NAME READY STATUS RESTARTS AGE
pod/harbor-chartmuseum-64bb8957b-d9265 1/1 Running 0 2m50s
pod/harbor-core-6cbcd86d9d-vtq69 1/1 Running 1 2m50s
pod/harbor-jobservice-55fb697bb-9flpg 1/1 Running 1 2m50s
pod/harbor-notary-server-798cfd9b4b-5t7xt 1/1 Running 0 2m50s
pod/harbor-notary-signer-5db94b74b4-ptlsc 1/1 Running 1 2m50s
pod/harbor-portal-5f69977cbf-fcp82 1/1 Running 0 2m50s
pod/harbor-postgresql-0 1/1 Running 0 2m50s
pod/harbor-redis-master-0 1/1 Running 0 2m50s
pod/harbor-registry-774644858-4z5xq 2/2 Running 0 2m50s
pod/harbor-trivy-0 1/1 Running 0 2m50s
試しに、コンテナイメージをHarbor にアップロード出来るか確認してみます。Harbor UI から事前にdevops ユーザーを作成し、コンテナをアップロードする権限を追加しています。
docker login registry.<MYDOMAIN> -u devops -p xxxx
docker tag nginx:1.17.10 registry.<MYDOMAIN>/library/nginx:1.17.10
$ docker push registry.<MYDOMAIN>/library/nginx:1.17.10
The push refers to repository [registry.<MYDOMAIN>/library/nginx]
6c7de695ede3: Pushed
2f4accd375d9: Pushed
ffc9b21953f4: Pushed
1.17.10: digest: sha256:8269a7352a7dad1f8b3dc83284f195bac72027dd50279422d363d49311ab7d9b size: 948
無事にインストール出来たことが確認出来ました。このHarbor を利用して、TBS をデプロイしていきます。
TBS のデプロイ
こちら「Tanzu Kubernetes Grid 上に Tanzu Build Service をインストールする」の記事を参考に事前に必要なパッケージやコマンドをインストールしておきます。
上で作成したHarbor と
registry.pivotal.io
にログインしておきます。registry.pivotal.io
のログインにはVMware Tanzu Network のアカウントが必要になります。docker login registry.<MYDOMAIN> -u devops -p xxxx
docker login registry.pivotal.io
TBS のインストールに必要なコンテナイメージをHarbor 上に展開します。Harbor 上にプロジェクトは事前に作成しておき、メンバーとしてdevops ユーザーを加えています。
$ kbld relocate -f images.lock --lock-output images-relocated.lock --repository registry.<MYDOMAIN>/tanzu/build-service
...(SNIP)...
relocate | imported 15 images
Succeeded
TBS をデプロイします。
$ ytt -f values.yaml -f manifests/ -v docker_repository="registry.<MYDOMAIN>/tanzu/build-service" -v docker_username=devops -v docker_password=xxxx | kbld -f images-relocated.lock -f- | kapp deploy -a tanzu-build-service -f- -y
...(SNIP)...
Changes
Namespace Name Kind Conds. Age Op Op st. Wait to Rs Ri
(cluster) build-service Namespace - - create - reconcile - -
^ build-service-admin-role ClusterRole - - create - reconcile - -
^ build-service-admin-role-binding ClusterRoleBinding - - create - reconcile - -
^ build-service-authenticated-role ClusterRole - - create - reconcile - -
^ build-service-authenticated-role-binding ClusterRoleBinding - - create - reconcile - -
^ build-service-secret-syncer-role ClusterRole - - create - reconcile - -
^ build-service-secret-syncer-role-binding ClusterRoleBinding - - create - reconcile - -
^ build-service-user-role ClusterRole - - create - reconcile - -
^ build-service-warmer-role ClusterRole - - create - reconcile - -
^ build-service-warmer-role-binding ClusterRoleBinding - - create - reconcile - -
^ builders.kpack.io CustomResourceDefinition - - create - reconcile - -
^ builds.kpack.io CustomResourceDefinition - - create - reconcile - -
^ cert-injection-webhook-cluster-role ClusterRole - - create - reconcile - -
^ cert-injection-webhook-cluster-role-binding ClusterRoleBinding - - create - reconcile - -
^ clusterbuilders.kpack.io CustomResourceDefinition - - create - reconcile - -
^ clusterstacks.kpack.io CustomResourceDefinition - - create - reconcile - -
^ clusterstores.kpack.io CustomResourceDefinition - - create - reconcile - -
^ custom-stack-editor-role ClusterRole - - create - reconcile - -
^ custom-stack-viewer-role ClusterRole - - create - reconcile - -
^ customstacks.stacks.stacks-operator.tanzu.vmware.com CustomResourceDefinition - - create - reconcile - -
^ defaults.webhook.cert-injection.tanzu.vmware.com MutatingWebhookConfiguration - - create - reconcile - -
^ defaults.webhook.kpack.io MutatingWebhookConfiguration - - create - reconcile - -
^ images.kpack.io CustomResourceDefinition - - create - reconcile - -
^ kpack Namespace - - create - reconcile - -
^ kpack-controller-admin ClusterRole - - create - reconcile - -
^ kpack-controller-admin-binding ClusterRoleBinding - - create - reconcile - -
^ kpack-webhook-certs-mutatingwebhookconfiguration-admin-binding ClusterRoleBinding - - create - reconcile - -
^ kpack-webhook-mutatingwebhookconfiguration-admin ClusterRole - - create - reconcile - -
^ metrics-reader ClusterRole - - create - reconcile - -
^ proxy-role ClusterRole - - create - reconcile - -
^ proxy-rolebinding ClusterRoleBinding - - create - reconcile - -
^ sourceresolvers.kpack.io CustomResourceDefinition - - create - reconcile - -
^ stacks-operator-manager-role ClusterRole - - create - reconcile - -
^ stacks-operator-manager-rolebinding ClusterRoleBinding - - create - reconcile - -
^ stacks-operator-system Namespace - - create - reconcile - -
^ validation.webhook.kpack.io ValidatingWebhookConfiguration - - create - reconcile - -
build-service build-pod-image-fetcher DaemonSet - - create - reconcile - -
^ build-service-warmer-namespace-role Role - - create - reconcile - -
^ build-service-warmer-namespace-role-binding RoleBinding - - create - reconcile - -
^ ca-cert ConfigMap - - create - reconcile - -
^ canonical-registry-secret Secret - - create - reconcile - -
^ cb-service-account ServiceAccount - - create - reconcile - -
^ cert-injection-webhook Deployment - - create - reconcile - -
^ cert-injection-webhook Service - - create - reconcile - -
^ cert-injection-webhook-role Role - - create - reconcile - -
^ cert-injection-webhook-role-binding RoleBinding - - create - reconcile - -
^ cert-injection-webhook-sa ServiceAccount - - create - reconcile - -
^ cert-injection-webhook-tls Secret - - create - reconcile - -
^ http-proxy ConfigMap - - create - reconcile - -
^ https-proxy ConfigMap - - create - reconcile - -
^ no-proxy ConfigMap - - create - reconcile - -
^ secret-syncer-controller Deployment - - create - reconcile - -
^ secret-syncer-service-account ServiceAccount - - create - reconcile - -
^ setup-ca-certs-image ConfigMap - - create - reconcile - -
^ sleeper-image ConfigMap - - create - reconcile - -
^ warmer-controller Deployment - - create - reconcile - -
^ warmer-service-account ServiceAccount - - create - reconcile - -
kpack build-init-image ConfigMap - - create - reconcile - -
^ build-init-windows-image ConfigMap - - create - reconcile - -
^ canonical-registry-secret Secret - - create - reconcile - -
^ canonical-registry-serviceaccount ServiceAccount - - create - reconcile - -
^ completion-image ConfigMap - - create - reconcile - -
^ completion-windows-image ConfigMap - - create - reconcile - -
^ controller ServiceAccount - - create - reconcile - -
^ kp-config ConfigMap - - create - reconcile - -
^ kpack-controller Deployment - - create - reconcile - -
^ kpack-controller-local-config Role - - create - reconcile - -
^ kpack-controller-local-config-binding RoleBinding - - create - reconcile - -
^ kpack-webhook Deployment - - create - reconcile - -
^ kpack-webhook Service - - create - reconcile - -
^ kpack-webhook-certs-admin Role - - create - reconcile - -
^ kpack-webhook-certs-admin-binding RoleBinding - - create - reconcile - -
^ lifecycle-image ConfigMap - - create - reconcile - -
^ rebase-image ConfigMap - - create - reconcile - -
^ webhook ServiceAccount - - create - reconcile - -
^ webhook-certs Secret - - create - reconcile - -
stacks-operator-system canonical-registry-secret Secret - - create - reconcile - -
^ controller-manager Deployment - - create - reconcile - -
^ controller-manager-metrics-service Service - - create - reconcile - -
^ leader-election-role Role - - create - reconcile - -
^ leader-election-rolebinding RoleBinding - - create - reconcile - -
^ stackify-image ConfigMap - - create - reconcile - -
Op: 82 create, 0 delete, 0 update, 0 noop
Wait to: 82 reconcile, 0 delete, 0 noop
...(SNIP)...
Succeeded
ClusterBuilder をインストールします。
kp import -f descriptor-100.0.80.yaml
$ kp clusterbuilder list
NAME READY STACK IMAGE
base true io.buildpacks.stacks.bionic registry.<MYDOMAIN>/tanzu/build-service/base@sha256:c92f141eb1c11461e3d67b06c63161ace42d996b8532f2864b409110ed09569f
default true io.buildpacks.stacks.bionic registry.<MYDOMAIN>/tanzu/build-service/default@sha256:c92f141eb1c11461e3d67b06c63161ace42d996b8532f2864b409110ed09569f
full true io.buildpacks.stacks.bionic registry.<MYDOMAIN>/tanzu/build-service/full@sha256:7746302c68a8a7e635c0cbba776231d70702379ecf61e435b4b1ecacfc088412
tiny true io.paketo.stacks.tiny registry.<MYDOMAIN>/tanzu/build-service/tiny@sha256:64f48a2598e40ea0b13cabd83f6a41751f0745c890168eea49fba1f4777d1028
TKGm のデプロイから始まり、Contour、Harbor、TBS とデプロイし終わりました。