Seguire queste istruzioni per installare Harbor in un cluster TKG sottoposto a provisioning con TKr per vSphere 7.x.
Prerequisiti
Vedere Workflow per l'installazione di pacchetti standard in una TKr per vSphere 7.x.
- Se si utilizza la rete NSX per il Supervisore, creare un servizio Envoy di tipo LoadBalancer.
- Se si utilizza la rete vDS vSphere per il l'Supervisore, creare un servizio Envoy di tipo LoadBalancer o di tipo NodePort, in base all'ambiente e ai requisiti.
In produzione Harbor richiede una zona DNS su un server DNS locale, come BIND, o su un cloud pubblico, come AWS Route53 o Azure DNS. Una volta impostato DNS, per registrare automaticamente i nomi di dominio completo di Harbor con un server DNS, installare l'estensione ExternalDNS. Vedere Installazione di ExternalDNS in TKr per vSphere 7.x.
Installazione di Harbor
Per installare il registro Harbor utilizzando il pacchetto standard, completare i passaggi seguenti.
- Visualizzare l'elenco delle versioni di Harbor disponibili nel repository.
kubectl get packages -n tkg-system | grep harbor
- Creare la specifica
harbor.yaml
.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"]
- Personalizzare il segreto
harbor-data-values
nella specificaharbor.yaml
con i valori appropriati per l'ambiente, inclusi nome host, password, segreti e classe di storage.Per istruzioni, fare riferimento alla Informazioni di riferimento sul pacchetto Harbor.
- Installare Harbor.
kubectl apply -f harbor.yaml
- Verificare l'installazione di Harbor.
kubectl get all -n harbor-registry
Configurazione di DNS per Harbor tramite un LoadBalancer di Envoy (rete NSX)
- Ottenere l'indirizzo
External-IP
per il servizio Envoy di tipo LoadBalancer.kubectl get service envoy -n tanzu-system-ingress
Dovrebbe essere visualizzato l'indirizzoExternal-IP
restituito, ad esempio: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
In alternativa, è possibile ottenere l'indirizzoExternal-IP
utilizzando il comando seguente.kubectl get svc envoy -n tanzu-system-ingress -o jsonpath='{.status.loadBalancer.ingress[0]}'
- Per verificare l'installazione dell'estensione Harbor, aggiornare il file
/etc/hosts
locale con i FQDN Harbor e Notary mappati all'indirizzoExternal-IP
del bilanciamento del carico, ad esempio: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
- Per verificare l'installazione dell'estensione Harbor, accedere a Harbor.
- Creare due record CNAME su un server DNS che mappa l'indirizzo
External-IP
del bilanciamento del carico del servizio Envoy al FQDN Harbor e Notary. - Installare l'estensione DNS esterno.
Configurazione di DNS per Harbor tramite un NodePort di Envoy (rete vDS)
port.https
corretto nel file
harbor-data-values.yaml
.
- Passare al contesto dello Spazio dei nomi vSphere in cui viene eseguito il provisioning del cluster.
kubectl config use-context VSPHERE-NAMESPACE
- Elencare i nodi nel cluster.
kubectl get virtualmachines
- Scegliere uno dei nodi di lavoro e descriverlo utilizzando il comando seguente.
kubectl describe virtualmachines tkg2-cluster-X-workers-9twdr-59bc54dc97-kt4cm
- Individuare l'indirizzo IP della macchina virtuale, ad esempio
Vm Ip: 10.115.22.43
. - Per verificare l'installazione dell'estensione Harbor, aggiornare il file
/etc/hosts
locale con i FQDN Harbor e Notary mappati all'indirizzo IP del nodo di lavoro, ad esempio: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
- Per verificare l'installazione dell'estensione Harbor, accedere a Harbor.
- Creare due record CNAME su un server DNS che mappano l'indirizzo IP del nodo di lavoro ai FQDN Harbor e Notary.
- Installare l'estensione DNS esterno.
Accedere all'interfaccia Web di Harbor
- Accedere all'interfaccia web del registro Harbor a
https://core.harbor.domain
o al nome host usato. - Acceda a Harbor con il nome utente admin e la password generata che è stata inserita nel file del
harbor-data-values.yaml
. - Assicurarsi di poter accedere all'interfaccia utente di Harbor.
- Ottenere il certificato CA di Harbor.
Nell'interfaccia di Harbor, selezionare Nuovo progetto.
oppure creare unFare clic su Certificato di registro e scaricare il certificato CA di Harbor (ca.crt).
- Aggiungere il certificato CA di Harbor nel trust store del client Docker così da poter inviare ed estrarre immagini del contenitore verso e dal registro Harbor. Vedere Utilizzo di registri privati con cluster Servizio TKG.
- Fai riferimento alla documentazione di Harbor per i dettagli su come utilizzare Harbor.