Befolgen Sie diese Anweisungen zum Installieren von Harbor auf einem TKG-Cluster, der mit einer TKr für vSphere 7.x bereitgestellt wurde.
Voraussetzungen
Weitere Informationen hierzu finden Sie unter Workflow zum Installieren von Standardpaketen auf TKr für vSphere 7.x.
- Wenn Sie ein NSX-Netzwerk für den Supervisor verwenden, erstellen Sie einen Envoy-Dienst vom Typ „LoadBalancer“.
- Wenn Sie ein vSphere vDS-Netzwerk für den Supervisor verwenden, erstellen Sie je nach Umgebung und Anforderungen einen Envoy-Dienst vom Typ „LoadBalancer“ oder „NodePort“.
In der Produktion erfordert Harbor eine DNS-Zone entweder auf einem lokalen DNS-Server, wie z. B. BIND, oder in einer Public Cloud, wie z. B. AWS Route 53 oder Azure DNS. Nachdem Sie DNS eingerichtet haben, installieren Sie die ExternalDNS-Erweiterung, um die Harbor-FQDNs automatisch bei einem DNS-Server zu registrieren. Weitere Informationen finden Sie unter Installieren von ExternalDNS auf TKr für vSphere 7.x.
Installieren von Harbor
Führen Sie die folgenden Schritte aus, um die Harbor-Registrierung mithilfe des Standardpakets zu installieren.
- Listen Sie die verfügbaren Harbor-Versionen im Repository auf.
kubectl get packages -n tkg-system | grep harbor
- Erstellen Sie eine
harbor.yaml
-Spezifikation.apiVersion: v1 kind: ServiceAccount metadata: name: harbor-sa namespace: tkg-system --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: habor-role-binding roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: cluster-admin subjects: - kind: ServiceAccount name: harbor-sa namespace: tkg-system --- apiVersion: packaging.carvel.dev/v1alpha1 kind: PackageInstall metadata: name: harbor namespace: tkg-system spec: serviceAccountName: harbor-sa packageRef: refName: harbor.tanzu.vmware.com versionSelection: constraints: 2.7.1+vmware.1-tkg.1 #PKG-VERSION values: - secretRef: name: harbor-data-values --- apiVersion: v1 kind: Secret metadata: name: harbor-data-values namespace: harbor-registry stringData: values.yml: | namespace: tanzu-system-registry hostname: <ENTER-HARBOR-FQDN> port: https: 443 logLevel: info tlsCertificate: tls.crt: "" tls.key: "" ca.crt: tlsCertificateSecretName: enableContourHttpProxy: true harborAdminPassword: <ENTER-STRONG-PASSWORD-HERE> secretKey: <ENTER-SECRET-KEY> database: password: <ENTER-STRONG-PASSWORD-HERE> shmSizeLimit: maxIdleConns: maxOpenConns: exporter: cacheDuration: core: replicas: 1 secret: <ENTER-SECRET> xsrfKey: <ENTER-XSRF-KEY-WHICH-IS-AN-ALPHANUMERIC-STRING-WITH-32-CHARS> jobservice: replicas: 1 secret: <ENTER-SECRET> registry: replicas: 1 secret: <ENTER-SECRET> trivy: enabled: true replicas: 1 gitHubToken: "" skipUpdate: false persistence: persistentVolumeClaim: registry: existingClaim: "" storageClass: "<ENTER-STORAGE-CLASS>" subPath: "" accessMode: ReadWriteOnce size: 50Gi jobservice: existingClaim: "" storageClass: "<ENTER-STORAGE-CLASS>" subPath: "" accessMode: ReadWriteOnce size: 10Gi database: existingClaim: "" storageClass: "<ENTER-STORAGE-CLASS>" subPath: "" accessMode: ReadWriteOnce size: 10Gi redis: existingClaim: "" storageClass: "<ENTER-STORAGE-CLASS>" subPath: "" accessMode: ReadWriteOnce size: 10Gi trivy: existingClaim: "" storageClass: "<ENTER-STORAGE-CLASS>" subPath: "" accessMode: ReadWriteOnce size: 10Gi proxy: httpProxy: httpsProxy: noProxy: 127.0.0.1,localhost,.local,.internal pspNames: vmware-system-restricted network: ipFamilies: ["IPv4", "IPv6"]
- Passen Sie den geheimen
harbor-data-values
-Schlüssel in derharbor.yaml
-Spezifikation mit entsprechenden Werten für Ihre Umgebung an, einschließlich Hostname, Kennwörter, geheimer Schlüssel und Speicherklasse.Weitere Informationen finden Sie unter Referenz zum Harbor-Paket.
- Installieren Sie Harbor.
kubectl apply -f harbor.yaml
- Überprüfen Sie die Harbor-Installation.
kubectl get all -n harbor-registry
Konfigurieren von DNS für Harbor mithilfe von Envoy LoadBalancer (NSX-Netzwerk)
- Rufen Sie die
External-IP
-Adresse für den Envoy-Dienst vom Typ LoadBalancer ab.kubectl get service envoy -n tanzu-system-ingress
DieExternal-IP
-Adresse sollte angezeigt werden, z. B.:NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE envoy LoadBalancer 10.99.25.220 10.195.141.17 80:30437/TCP,443:30589/TCP 3h27m
Alternativ können Sie dieExternal-IP
-Adresse mit dem folgenden Befehl abrufen.kubectl get svc envoy -n tanzu-system-ingress -o jsonpath='{.status.loadBalancer.ingress[0]}'
- Um die Installation der Harbor-Erweiterung zu überprüfen, aktualisieren Sie Ihre lokale
/etc/hosts
-Datei mit den Harbor- und Notariats-FQDNs, die derExternal-IP
-Adresse des Lastausgleichsdiensts zugeordnet sind. Beispiel:127.0.0.1 localhost 127.0.1.1 ubuntu #TKG Harbor with Envoy Load Balancer IP 10.195.141.17 core.harbor.domain 10.195.141.17 core.notary.harbor.domain
- Um die Installation der Harbor-Erweiterung zu überprüfen, melden Sie sich bei Harbor an.
- Erstellen Sie zwei CNAME-Datensätze auf einem DNS-Server, die die
External-IP
-Adresse des Lastausgleichsdiensts für den Envoy-Dienst dem Harbor-FQDN und dem Notariats-FQDN zuordnen. - Installieren Sie die externe DNS-Erweiterung.
Konfigurieren von DNS für Harbor mithilfe von Envoy NodePort (vDS-Netzwerk)
port.https
-Wert in der
harbor-data-values.yaml
-Datei angegeben haben.
- Wechseln Sie den Kontext zum vSphere-Namespace, in dem der Cluster bereitgestellt wird.
kubectl config use-context VSPHERE-NAMESPACE
- Listet die Knoten im Cluster auf.
kubectl get virtualmachines
- Wählen Sie einen der Worker-Knoten aus und beschreiben Sie ihn mit dem folgenden Befehl.
kubectl describe virtualmachines tkg2-cluster-X-workers-9twdr-59bc54dc97-kt4cm
- Suchen Sie die IP-Adresse der virtuellen Maschine, z. B.
Vm Ip: 10.115.22.43
. - Um die Installation der Harbor-Erweiterung zu überprüfen, aktualisieren Sie Ihre lokale
/etc/hosts
-Datei mit den Harbor- und Notariats-FQDNs, die der IP-Adresse des Worker-Knotens zugeordnet sind. Beispiel:127.0.0.1 localhost 127.0.1.1 ubuntu #TKG Harbor with Envoy NodePort 10.115.22.43 core.harbor.domain 10.115.22.43 core.notary.harbor.domain
- Um die Installation der Harbor-Erweiterung zu überprüfen, melden Sie sich bei Harbor an.
- Erstellen Sie zwei CNAME-Datensätze auf einem DNS-Server, die die IP-Adresse des Worker-Knotens für den Envoy-Dienst dem Harbor-FQDN und dem Notariats-FQDN zuordnen.
- Installieren Sie die externe DNS-Erweiterung.
Anmelden bei der Harbor-Webschnittstelle
- Greifen Sie unter
https://core.harbor.domain
oder dem von Ihnen verwendeten Hostnamen auf die Webschnittstelle der Harbor-Registrierung zu. - Melden Sie sich bei Harbor mit dem Benutzernamen admin und dem generierten Kennwort an, das Sie in die
harbor-data-values.yaml
-Datei eingegeben haben. - Überprüfen Sie, ob Sie über die Harbor-Benutzeroberfläche auf den Host zugreifen können.
- Rufen Sie das Harbor-CA-Zertifikat ab.
Klicken Sie in der Harbor-Benutzeroberfläche auf Neues Projekt.
, oder erstellen Sie einKlicken Sie auf Registrierungszertifikat und laden Sie das Harbor-CA-Zertifikat (ca.crt) herunter.
- Fügen Sie das Harbor-CA-Zertifikat zum Trust Store des Docker-Clients hinzu, damit Sie Container-Images in die Harbor-Registrierung verschieben und von dort abrufen können. Weitere Informationen finden Sie unter Verwenden privater Registrierungen mit TKG-Dienstclustern.
- Weitere Informationen zur Verwendung von Harbor finden Sie in der Harbor-Dokumentation.