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 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.typeNodePort から 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.pemprivkey.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 とデプロイし終わりました。

このブログの人気の投稿