Checkout how to install and configure Harbor as a Supervisor Service. You can then use Harbor as a registry for workloads running on Tanzu Kubernetes Grid clusters and vSphere Pods. Harbor requires Contour as ingress controller, therefore you first install the Contour Supervisor Service then you install Harbor.
Install Harbor as a Supervisor Service
You install Harbor as a Supervisor Service trough the Workload Managementt option in the vSphere Client.
Prerequisites
- Verify that you have upgraded to vCenter Server 8.0a or higher. Contour and Harbor Supervisor Services are supported with vCenter Server 8.0a and higher.
- Verify that you have the Manage Supervisor Services privilege on the vCenter Server system where you add the services.
- Install Contour as a Supervisor Service on the same Supervisor where you want to install Harbor. See Install Contour as a Supervisor Service in vSphere with Tanzu.
- Designate and FQDN for accessing the Harbor admin UI.
Procedure
Results

Map the Harbor FQDN to the Envoy Ingress IP Address
After Harbor is installed successfully, include a record of the Harbor FQDN mapping to the Envoy ingress IP address in an external DNS server that is configured with the Supervisor.
Tanzu Kubernetes Grid clusters, vSphere Pods, and the Supervisor must be able to resolve the Harbor FQDN to be able to pull images from the registry.

Establishing Trust with the Harbor Supervisor Service
Once Harbor is installed, you must configure trust between the Supervisor and Harbor to use it as registry for vSphere Pods. Tanzu Kubernetes Grid clusters that are on the same Supervisor as Harbor have trust established with Harbor automatically. To use Harbor as a registry for Tanzu Kubernetes Grid clusters that run on different Supervisors, you must configure trust between Harbor and these Tanzu Kubernetes Grid clusters.
Establish Trust Between Harbor and Supervisor
- Extract the Harbor CA from the Harbor UI or by using the TLS secret on the Supervisor control plane. You can get the Harbor ca.cert in the Harbor admin UI at .
- Add the Harbor CA to the image-fetcher-ca-bundle ConfigMap in the kube-system namespace. You must be logged in with a vCenter Single Sign-on administrative account and have permission to edit the image-fetcher-ca-bundle.
- Configure the KUBE_EDITOR environment variable as described here:
- Edit the ConfigMap using the following command:
kubectl edit configmap image-fetcher-ca-bundle -n kube-system
- Append the contents of the Harbor ca.cert file to the ConfigMap beneath the existing Supervisor certificate. Make sure not to change the Supervisor certificate.
apiVersion: v1 data: ca-bundle: |- -----BEGIN CERTIFICATE----- MIIC/jCCAeagAwIBAgIBADANBgkqhkiG9w0BAQsFADAVMRMwEQYDVQQDEwprdWJl ... qB72tWi8M5++h2RGcVash0P1CUZOHkpHxGdUGYv1Z97Wl89dT2OTn3iXqn8d1JAK aF8= -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- MIIDKDCCAhCgAwIBAgIQBbUsj7mqXXC5XRhqqU3GiDANBgkqhkiG9w0BAQsFADAU ... 5q7y87vOLTr7+0MG4O01zK0dJYx2jVhZlsuduMYpfqRLLewVl0eGu/6vr2M= -----END CERTIFICATE----- kind: ConfigMap metadata: creationTimestamp: "2023-03-15T14:28:34Z" name: image-fetcher-ca-bundle namespace: kube-system resourceVersion: "713" uid: 6b7611a0-25fa-40f7-b4f5-e2a13bd0afe3
- Save the edits made to the file. As a result kubectl reports:
configmap/image-fetcher-ca-bundle edited
Establishing Trust Between Harbor and Tanzu Kubernetes Grid Cluster Running on Different Supervisors than Harbor
Tanzu Kubernetes Grid clusters running on Supervisors different than the one where Harbor is installed must have network connectivity with Harbor. These Tanzu Kubernetes Grid clusters must be able to resolve the Harbor FQDN.
To establish trust between Harbor and the Tanzu Kubernetes Grid clusters, extract the Harbor CA from the Harbor UI or by using the TLS secret on the Supervisor control plane, then follow the steps listed at Integrate a TKG 2 Cluster with a Private Container Registry.