TAP Multi Cluster (1.3) : Part 2 – Install TAP With OOTB-Supply Chain Testing and Scanning using ACR Repo

Reading Time: 3 mins

 Overview

The installation order is flexible given the ability to update the installation with a modified values file using the tanzu package installed update command. For this demo, I will be installing TAP in following order: 

      • View
      • Build
      • Run
      • Iterate
      • Add Build, Run, View and Iterate clusters to TAP GUI

Install View cluster

  • Ensure the steps given in part-1 are completed.
tap-values-view.yaml
profile: view
ceip_policy_disclosed: true # Installation fails if this is set to 'false'
shared:
ingress_domain: captainvirtualization.co.in ## Domain to be changed
contour:
envoy:
service:
type: LoadBalancer
tap_gui:
service_type: ClusterIP # NodePort for distributions that don't support LoadBalancer
ingressEnabled: "true"
ingressDomain: "captainvirtualization.co.in" ## Domain to be changed
app_config:
app:
baseUrl: http://tap-gui.captainvirtualization.co.in ## Domain to be changed
proxy:
/metadata-store:
target: https://metadata-store-app.metadata-store:8443/api/v1
changeOrigin: true
secure: false
headers:
Authorization: "Bearer <TOKEN>" ## Token to be updated later
X-Custom-Source: project-star
integrations:
github: # Other integrations available see NOTE below
- host: github.com
token: <GITHUB TOKEN> # Create a token in github
catalog:
locations:
- type: url
target: https://github.com/Eknathreddy09/tanzu-java-web-app/blob/main/catalog/catalog-info.yaml ## Provide your repo (optional)
backend:
baseUrl: http://tap-gui.captainvirtualization.co.in ## Domain to be changed
cors:
origin: http://tap-gui.captainvirtualization.co.in ## Domain to be changed
kubernetes:
serviceLocatorMethod:
type: 'multiTenant'
clusterLocatorMethods:
- type: 'config'
clusters:
- url: https://tap-multi-build-dns-31959f19.hcp.eastus.azmk8s.io:443 ## URL to be changed
name: tap-multi-build ## Cluster Name to be changed (Optional)
authProvider: serviceAccount
skipTLSVerify: true
serviceAccountToken: <CLUSTER TOKEN> ## Cluster Token to be provided later
skipMetricsLookup: true
- url: https://tap-multi-run-dns-ef259c2d.hcp.eastus.azmk8s.io:443 ## URL to be changed
name: tap-multi-run ## Cluster Name to be changed (Optional)
authProvider: serviceAccount
skipTLSVerify: true
serviceAccountToken: <CLUSTER TOKEN> ## Cluster Token to be provided later
skipMetricsLookup: true
- url: https://tap-multi-iterate-dns-78eebbd7.hcp.eastus.azmk8s.io:443 ## URL to be changed
name: tap-multi-iterate ## Cluster Name to be changed (Optional)
authProvider: serviceAccount
skipTLSVerify: true
serviceAccountToken: <CLUSTER TOKEN> ## Cluster Token to be provided later
skipMetricsLookup: true
appliveview:
ingressEnabled: true
sslDisabled: true
ingressDomain: captainvirtualization.co.in ## Domain to be changed

Once the tap-values file is updated with your values – domain name, GITHUB token etc .., then proceed to install TAP in VIEW Cluster

$ tanzu package install tap -p tap.tanzu.vmware.com -v 1.3.4 --values-file tap-values-view.yaml -n tap-install
Installing package 'tap.tanzu.vmware.com'
Getting package metadata for 'tap.tanzu.vmware.com'
Creating service account 'tap-tap-install-sa'
Creating cluster admin role 'tap-tap-install-cluster-role'
Creating cluster role binding 'tap-tap-install-cluster-rolebinding'
Creating secret 'tap-tap-install-values'
Creating package resource
Waiting for 'PackageInstall' reconciliation for 'tap'
'PackageInstall' resource install status: Reconciling
'PackageInstall' resource install status: ReconcileSucceeded

Added installed package 'tap'


$ tanzu package installed list -n tap-install

NAME PACKAGE-NAME PACKAGE-VERSION STATUS
accelerator accelerator.apps.tanzu.vmware.com 1.3.2 Reconcile succeeded
api-portal api-portal.tanzu.vmware.com 1.2.5 Reconcile succeeded
appliveview backend.appliveview.tanzu.vmware.com 1.3.1 Reconcile succeeded
cert-manager cert-manager.tanzu.vmware.com 1.7.2+tap.1 Reconcile succeeded
contour contour.tanzu.vmware.com 1.22.0+tap.5 Reconcile succeeded
fluxcd-source-controller fluxcd.source.controller.tanzu.vmware.com 0.27.0+tap.1 Reconcile succeeded
learningcenter learningcenter.tanzu.vmware.com 0.2.4 Reconcile succeeded
learningcenter-workshops workshops.learningcenter.tanzu.vmware.com 0.2.3 Reconcile succeeded
metadata-store metadata-store.apps.tanzu.vmware.com 1.3.4 Reconcile succeeded
source-controller controller.source.apps.tanzu.vmware.com 0.5.1 Reconcile succeeded
tap tap.tanzu.vmware.com 1.3.4 Reconcile succeeded
tap-gui tap-gui.tanzu.vmware.com 1.3.5 Reconcile succeeded
tap-telemetry tap-telemetry.tanzu.vmware.com 0.3.2 Reconcile succeeded

## Get TAP-GUI Load Balancer IP

kubectl get svc -n tanzu-system-ingress

Once the packages are reconciled successfully, create a record set in DNS pointing the ip ( can be fetched using below command ) to host name as defined in tap-values-view.yaml, In this case I have used tap-gui.captainvirtualization.co.in

Load balancer IP
$ kubectl get svc -n tanzu-system-ingress

Now, you should be able to access TAP GUI in your browser.

Install Build clusters

  • Ensure the steps given in part-1 are completed.
tap-values-build.yaml
profile: build
ceip_policy_disclosed: true # Installation fails if this is set to 'false'
shared:
ingress_domain: captainvirtualization.co.in ## Domain to be changed
image_registry:
project_path: "captainrepo.azurecr.io/build-service" ## Change Registry hostname
username: "captainrepo" ## Change Registry Username
password: "< Registry Password >"
buildservice:
kp_default_repository: "captainrepo.azurecr.io/build-service" ## Change Registry hostname
kp_default_repository_username: "captainrepo" ## Change Registry Username
kp_default_repository_password: "< Registry Password >" ## Provide Registry Password
supply_chain: testing_scanning
ootb_supply_chain_testing_scanning:
registry:
server: "captainrepo.azurecr.io" ## Change Registry hostname
repository: "supply-chain"
gitops:
ssh_secret: ""
cluster_builder: default
service_account: default
grype:
namespace: "tap-install" # (optional) Defaults to default namespace.
targetImagePullSecret: "registry-credentials"
metadataStore:
url: https://metadata-store.captainvirtualization.co.in ## Domain to be changed
caSecret:
name: store-ca-cert
importFromNamespace: metadata-store-secrets
authSecret:
name: store-auth-token
importFromNamespace: metadata-store-secrets
scanning:
metadataStore:
url: "" # Configuration is moved, so set this string to empty.
$ tanzu package install tap -p tap.tanzu.vmware.com -v 1.3.4 --values-file tap-values-build.yaml -n tap-install
Installing package 'tap.tanzu.vmware.com'
Getting package metadata for 'tap.tanzu.vmware.com'
Creating service account 'tap-tap-install-sa'
Creating cluster admin role 'tap-tap-install-cluster-role'
Creating cluster role binding 'tap-tap-install-cluster-rolebinding'
Creating secret 'tap-tap-install-values'
Creating package resource
Waiting for 'PackageInstall' reconciliation for 'tap'
'PackageInstall' resource install status: Reconciling
'PackageInstall' resource install status: ReconcileSucceeded

Added installed package 'tap'


$ tanzu package installed list -n tap-install

NAME PACKAGE-NAME PACKAGE-VERSION STATUS
appliveview-conventions conventions.appliveview.tanzu.vmware.com 1.3.1 Reconcile succeeded
buildservice buildservice.tanzu.vmware.com 1.7.4 Reconcile succeeded
cartographer cartographer.tanzu.vmware.com 0.5.4 Reconcile succeeded
cert-manager cert-manager.tanzu.vmware.com 1.7.2+tap.1 Reconcile succeeded
contour contour.tanzu.vmware.com 1.22.0+tap.5 Reconcile succeeded
conventions-controller controller.conventions.apps.tanzu.vmware.com 0.7.1 Reconcile succeeded
fluxcd-source-controller fluxcd.source.controller.tanzu.vmware.com 0.27.0+tap.1 Reconcile succeeded
grype grype.scanning.apps.tanzu.vmware.com 1.3.1 Reconcile succeeded
ootb-supply-chain-testing-scanning ootb-supply-chain-testing-scanning.tanzu.vmware.com 0.10.5 Reconcile succeeded
ootb-templates ootb-templates.tanzu.vmware.com 0.10.5 Reconcile succeeded
scanning scanning.apps.tanzu.vmware.com 1.3.1 Reconcile succeeded
source-controller controller.source.apps.tanzu.vmware.com 0.5.1 Reconcile succeeded
spring-boot-conventions spring-boot-conventions.tanzu.vmware.com 0.5.0 Reconcile succeeded
tap tap.tanzu.vmware.com 1.3.4 Reconcile succeeded
tap-auth tap-auth.tanzu.vmware.com 1.1.0 Reconcile succeeded
tap-telemetry tap-telemetry.tanzu.vmware.com 0.3.2 Reconcile succeeded
tekton-pipelines tekton.tanzu.vmware.com 0.39.0+tap.2 Reconcile succeeded

Install Run clusters

  • Ensure the steps given in part-1 are completed.
tap-values-run.yaml
profile: run
ceip_policy_disclosed: true # Installation fails if this is set to 'false'
shared:
ingress_domain: captainvirtualization.co.in ## Change Domain Name
supply_chain: testing_scanning
ootb_supply_chain_testing_scanning:
registry:
server: "captainrepo.azurecr.io" ## Change Registry Hostname
repository: "supply-chain"
excluded_packages:
- policy.apps.tanzu.vmware.com
contour:
envoy:
service:
type: LoadBalancer
appliveview_connector:
backend:
sslDisabled: true
ingressEnabled: true
host: "appliveview.captainvirtualization.co.in" ## Change Domain Name
$ tanzu package install tap -p tap.tanzu.vmware.com -v 1.3.4 --values-file tap-values-run.yaml -n tap-install
Installing package 'tap.tanzu.vmware.com'
Getting package metadata for 'tap.tanzu.vmware.com'
Creating service account 'tap-tap-install-sa'
Creating cluster admin role 'tap-tap-install-cluster-role'
Creating cluster role binding 'tap-tap-install-cluster-rolebinding'
Creating secret 'tap-tap-install-values'
Creating package resource
Waiting for 'PackageInstall' reconciliation for 'tap'
'PackageInstall' resource install status: Reconciling
'PackageInstall' resource install status: ReconcileSucceeded

Added installed package 'tap'

$ tanzu package installed list -n tap-install

NAME PACKAGE-NAME PACKAGE-VERSION STATUS
api-auto-registration apis.apps.tanzu.vmware.com 0.1.2 Reconcile succeeded
appliveview-connector connector.appliveview.tanzu.vmware.com 1.3.1 Reconcile succeeded
appsso sso.apps.tanzu.vmware.com 2.0.0 Reconcile succeeded
cartographer cartographer.tanzu.vmware.com 0.5.4 Reconcile succeeded
cert-manager cert-manager.tanzu.vmware.com 1.7.2+tap.1 Reconcile succeeded
cnrs cnrs.tanzu.vmware.com 2.0.2 Reconcile succeeded
contour contour.tanzu.vmware.com 1.22.0+tap.5 Reconcile succeeded
eventing eventing.tanzu.vmware.com 2.0.2 Reconcile succeeded
fluxcd-source-controller fluxcd.source.controller.tanzu.vmware.com 0.27.0+tap.1 Reconcile succeeded
image-policy-webhook image-policy-webhook.signing.apps.tanzu.vmware.com 1.1.10 Reconcile succeeded
ootb-delivery-basic ootb-delivery-basic.tanzu.vmware.com 0.10.5 Reconcile succeeded
ootb-templates ootb-templates.tanzu.vmware.com 0.10.5 Reconcile succeeded
service-bindings service-bindings.labs.vmware.com 0.8.1 Reconcile succeeded
services-toolkit services-toolkit.tanzu.vmware.com 0.8.1 Reconcile succeeded
source-controller controller.source.apps.tanzu.vmware.com 0.5.1 Reconcile succeeded
tap tap.tanzu.vmware.com 1.3.4 Reconcile succeeded
tap-auth tap-auth.tanzu.vmware.com 1.1.0 Reconcile succeeded
tap-telemetry tap-telemetry.tanzu.vmware.com 0.3.2 Reconcile succeeded

Install Iterate clusters

  • Ensure the steps given in part-1 are completed.
tap-values-iterate.yaml
profile: iterate
shared:
ingress_domain: "captainvirtualization.co.in" ## Change Domain Name
image_registry:
project_path: "captainrepo.azurecr.io/build-service" ## Change Registry HostName
username: "captainrepo" ## Change Registry User Name
password: "< Registry Password >" ## Provide Registry Password
ceip_policy_disclosed: TRUE # Installation fails if this is not set to true. Not a string.
buildservice: # Optional if the corresponding shared keys are provided.
kp_default_repository: "captainrepo.azurecr.io/build-service" ## Change Registry HostName
kp_default_repository_username: "captainrepo" ## Change Registry User Name
kp_default_repository_password: "< Registry Password >" ## Provide Registry Password
supply_chain: testing_scanning
ootb_supply_chain_testing_scanning: # Optional if the shared above mentioned shared keys are provided.
registry:
server: "captainrepo.azurecr.io" ## Change Registry HostName
repository: "supply-chain"
gitops:
ssh_secret: "" # (Optional) Defaults to "".
image_policy_webhook:
allow_unmatched_tags: true
contour:
envoy:
service:
type: LoadBalancer # (Optional) Defaults to LoadBalancer.
cnrs:
domain_name: "captainvirtualization.co.in" # Optional if the shared.ingress_domain is provided. ## Change Domain Name
appliveview_connector:
backend:
sslDisabled: true
ingressEnabled: true
host: "appliveview.captainvirtualization.co.in" ## Change Domain Name
excluded_packages:
- policy.apps.tanzu.vmware.com
- image-policy-webhook.signing.apps.tanzu.vmware.com
$ tanzu package install tap -p tap.tanzu.vmware.com -v 1.3.4 --values-file tap-values-iterate.yaml -n tap-install
Installing package 'tap.tanzu.vmware.com'
Getting package metadata for 'tap.tanzu.vmware.com'
Creating service account 'tap-tap-install-sa'
Creating cluster admin role 'tap-tap-install-cluster-role'
Creating cluster role binding 'tap-tap-install-cluster-rolebinding'
Creating secret 'tap-tap-install-values'
Creating package resource
Waiting for 'PackageInstall' reconciliation for 'tap'
'PackageInstall' resource install status: Reconciling
'PackageInstall' resource install status: ReconcileSucceeded

Added installed package 'tap'


$ tanzu package installed list -n tap-install

NAME PACKAGE-NAME PACKAGE-VERSION STATUS
api-auto-registration apis.apps.tanzu.vmware.com 0.1.2 Reconcile succeeded
appliveview-connector connector.appliveview.tanzu.vmware.com 1.3.1 Reconcile succeeded
appliveview-conventions conventions.appliveview.tanzu.vmware.com 1.3.1 Reconcile succeeded
appsso sso.apps.tanzu.vmware.com 2.0.0 Reconcile succeeded
buildservice buildservice.tanzu.vmware.com 1.7.4 Reconcile succeeded
cartographer cartographer.tanzu.vmware.com 0.5.4 Reconcile succeeded
cert-manager cert-manager.tanzu.vmware.com 1.7.2+tap.1 Reconcile succeeded
cnrs cnrs.tanzu.vmware.com 2.0.2 Reconcile succeeded
contour contour.tanzu.vmware.com 1.22.0+tap.5 Reconcile succeeded
conventions-controller controller.conventions.apps.tanzu.vmware.com 0.7.1 Reconcile succeeded
developer-conventions developer-conventions.tanzu.vmware.com 0.8.0 Reconcile succeeded
eventing eventing.tanzu.vmware.com 2.0.2 Reconcile succeeded
fluxcd-source-controller fluxcd.source.controller.tanzu.vmware.com 0.27.0+tap.1 Reconcile succeeded
ootb-delivery-basic ootb-delivery-basic.tanzu.vmware.com 0.10.5 Reconcile succeeded
ootb-templates ootb-templates.tanzu.vmware.com 0.10.5 Reconcile succeeded
service-bindings service-bindings.labs.vmware.com 0.8.1 Reconcile succeeded
services-toolkit services-toolkit.tanzu.vmware.com 0.8.1 Reconcile succeeded
source-controller controller.source.apps.tanzu.vmware.com 0.5.1 Reconcile succeeded
spring-boot-conventions spring-boot-conventions.tanzu.vmware.com 0.5.0 Reconcile succeeded
tap tap.tanzu.vmware.com 1.3.4 Reconcile succeeded
tap-auth tap-auth.tanzu.vmware.com 1.1.0 Reconcile succeeded
tap-telemetry tap-telemetry.tanzu.vmware.com 0.3.2 Reconcile succeeded
tekton-pipelines tekton.tanzu.vmware.com 0.39.0+tap.2 Reconcile succeeded

Multi Cluster Setup

## Change the context to View cluster

$ kubectl config use-context tap-view-cluster
Switched to context "tap-view-cluster".

## Store CA certificate from View cluster

CA_CERT=$(kubectl get secret -n metadata-store ingress-cert -o json | jq -r ".data.\"ca.crt\"")


cat <<EOF > store_ca.yaml
---
apiVersion: v1
kind: Secret
type: Opaque
metadata:
name: store-ca-cert
namespace: metadata-store-secrets
data:
ca.crt: $CA_CERT
EOF

## Store authentication token from the View cluster

AUTH_TOKEN=$(kubectl get secrets metadata-store-read-write-client -n metadata-store -o jsonpath="{.data.token}" | base64 -d)
## Switch the context to Build cluster

$ kubectl config use-context tap-build-cluster
Switched to context "tap-build-cluster".

## Apply the CA certificate and authentication token to Build cluster

$ kubectl create ns metadata-store-secrets

$ kubectl apply -f store_ca.yaml

$ kubectl create secret generic store-auth-token --from-literal=auth_token=$AUTH_TOKEN -n metadata-store-secrets

$ tanzu package installed update tap -f tap-values-build.yaml -n tap-install

Configure developer namespaces

cat <<EOF | kubectl apply -f -
---
apiVersion: secretgen.carvel.dev/v1alpha1
kind: SecretExport
metadata:
name: store-ca-cert
namespace: metadata-store-secrets
spec:
toNamespaces: [tap-install]
---
apiVersion: secretgen.carvel.dev/v1alpha1
kind: SecretExport
metadata:
name: store-auth-token
namespace: metadata-store-secrets
spec:
toNamespaces: [tap-install]
EOF

Viewing resources on multiple clusters in Tanzu Application Platform GUI

You can configure Tanzu Application Platform GUI to retrieve Kubernetes object details from multiple clusters and then surface those details in the various Tanzu Application Platform GUI plug-ins.

Copy this YAML content into a file called tap-gui-viewer-service-account-rbac.yaml

apiVersion: v1
kind: Namespace
metadata:
name: tap-gui
---
apiVersion: v1
kind: ServiceAccount
metadata:
namespace: tap-gui
name: tap-gui-viewer
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: tap-gui-read-k8s
subjects:
- kind: ServiceAccount
namespace: tap-gui
name: tap-gui-viewer
roleRef:
kind: ClusterRole
name: k8s-reader
apiGroup: rbac.authorization.k8s.io
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: k8s-reader
rules:
- apiGroups: ['']
resources: ['pods', 'pods/log', 'services', 'configmaps']
verbs: ['get', 'watch', 'list']
- apiGroups: ['apps']
resources: ['deployments', 'replicasets']
verbs: ['get', 'watch', 'list']
- apiGroups: ['autoscaling']
resources: ['horizontalpodautoscalers']
verbs: ['get', 'watch', 'list']
- apiGroups: ['networking.k8s.io']
resources: ['ingresses']
verbs: ['get', 'watch', 'list']
- apiGroups: ['networking.internal.knative.dev']
resources: ['serverlessservices']
verbs: ['get', 'watch', 'list']
- apiGroups: [ 'autoscaling.internal.knative.dev' ]
resources: [ 'podautoscalers' ]
verbs: [ 'get', 'watch', 'list' ]
- apiGroups: ['serving.knative.dev']
resources:
- configurations
- revisions
- routes
- services
verbs: ['get', 'watch', 'list']
- apiGroups: ['carto.run']
resources:
- clusterconfigtemplates
- clusterdeliveries
- clusterdeploymenttemplates
- clusterimagetemplates
- clusterruntemplates
- clustersourcetemplates
- clustersupplychains
- clustertemplates
- deliverables
- runnables
- workloads
verbs: ['get', 'watch', 'list']
- apiGroups: ['source.toolkit.fluxcd.io']
resources:
- gitrepositories
verbs: ['get', 'watch', 'list']
- apiGroups: ['source.apps.tanzu.vmware.com']
resources:
- imagerepositories
- mavenartifacts
verbs: ['get', 'watch', 'list']
- apiGroups: ['conventions.carto.run']
resources:
- podintents
verbs: ['get', 'watch', 'list']
- apiGroups: ['kpack.io']
resources:
- images
- builds
verbs: ['get', 'watch', 'list']
- apiGroups: ['scanning.apps.tanzu.vmware.com']
resources:
- sourcescans
- imagescans
- scanpolicies
verbs: ['get', 'watch', 'list']
- apiGroups: ['tekton.dev']
resources:
- taskruns
- pipelineruns
verbs: ['get', 'watch', 'list']
- apiGroups: ['kappctrl.k14s.io']
resources:
- apps
verbs: ['get', 'watch', 'list']
RUN Cluster
## Switch the context to RUN Cluster

$ kubectl config use-context tap-run-cluster
Switched to context "tap-run-cluster".

## create Namespace, ServiceAccount, ClusterRole, and ClusterRoleBinding by running:

$ kubectl create -f tap-gui-viewer-service-account-rbac.yaml
namespace/tap-gui created
serviceaccount/tap-gui-viewer created
clusterrolebinding.rbac.authorization.k8s.io/tap-gui-read-k8s created
clusterrole.rbac.authorization.k8s.io/k8s-reader created

## Discover the CLUSTER_URL and CLUSTER_TOKEN values:

CLUSTER_URL=$(kubectl config view --minify -o jsonpath='{.clusters[0].cluster.server}')

CLUSTER_TOKEN=$(kubectl -n tap-gui get secret $(kubectl -n tap-gui get sa tap-gui-viewer -o=json \
| jq -r '.secrets[0].name') -o=json \
| jq -r '.data["token"]' \
| base64 --decode)

echo CLUSTER_URL: $CLUSTER_URL
echo CLUSTER_TOKEN: $CLUSTER_TOKEN

Record the Run cluster’s CLUSTER_URL and CLUSTER_TOKEN values
BUILD Cluster
## Switch the context to BUILD Cluster

$ kubectl config use-context tap-build-cluster
Switched to context "tap-build-cluster".

## create Namespace, ServiceAccount, ClusterRole, and ClusterRoleBinding by running:

$ kubectl create -f tap-gui-viewer-service-account-rbac.yaml
namespace/tap-gui created
serviceaccount/tap-gui-viewer created
clusterrolebinding.rbac.authorization.k8s.io/tap-gui-read-k8s created
clusterrole.rbac.authorization.k8s.io/k8s-reader created

## Discover the CLUSTER_URL and CLUSTER_TOKEN values:

CLUSTER_URL=$(kubectl config view --minify -o jsonpath='{.clusters[0].cluster.server}')

CLUSTER_TOKEN=$(kubectl -n tap-gui get secret $(kubectl -n tap-gui get sa tap-gui-viewer -o=json \
| jq -r '.secrets[0].name') -o=json \
| jq -r '.data["token"]' \
| base64 --decode)

echo CLUSTER_URL: $CLUSTER_URL
echo CLUSTER_TOKEN: $CLUSTER_TOKEN

Record the BUILD cluster’s CLUSTER_URL and CLUSTER_TOKEN values
ITERATE Cluster
## Switch the context to ITERATE Cluster

$ kubectl config use-context tap-iterate-cluster
Switched to context "tap-iterate-cluster".

## create Namespace, ServiceAccount, ClusterRole, and ClusterRoleBinding by running:

$ kubectl create -f tap-gui-viewer-service-account-rbac.yaml
namespace/tap-gui created
serviceaccount/tap-gui-viewer created
clusterrolebinding.rbac.authorization.k8s.io/tap-gui-read-k8s created
clusterrole.rbac.authorization.k8s.io/k8s-reader created

## Discover the CLUSTER_URL and CLUSTER_TOKEN values:

CLUSTER_URL=$(kubectl config view --minify -o jsonpath='{.clusters[0].cluster.server}')

CLUSTER_TOKEN=$(kubectl -n tap-gui get secret $(kubectl -n tap-gui get sa tap-gui-viewer -o=json \
| jq -r '.secrets[0].name') -o=json \
| jq -r '.data["token"]' \
| base64 --decode)

echo CLUSTER_URL: $CLUSTER_URL
echo CLUSTER_TOKEN: $CLUSTER_TOKEN

Record the ITERATE cluster’s CLUSTER_URL and CLUSTER_TOKEN values

Update the  kubernetes section in the tap-values-view.yaml file that Tanzu Application Platform used when you installed it. This section must have an entry for each cluster that has resources to view as shown below:


## Update the TAP package using below command:

$ tanzu package installed update tap --values-file tap-values-view.yaml -n tap-install
Updating installed package 'tap'
Getting package install for 'tap'
Getting package metadata for 'tap.tanzu.vmware.com'
Updating secret 'tap-tap-install-values'
Updating package install for 'tap'
Waiting for 'PackageInstall' reconciliation for 'tap'
'PackageInstall' resource install status: ReconcileSucceeded
'PackageInstall' resource successfully reconciled
Updated installed package 'tap' in namespace 'tap-install'