Suivez ces instructions pour installer Harbor sur un cluster TKG provisionné avec une TKr pour vSphere 7.x.
Conditions requises
Reportez-vous à la section Workflow d'installation de modules standard sur TKr pour vSphere 7.x.
- Si vous utilisez la mise en réseau NSX pour le Superviseur, créez un service Envoy de type LoadBalancer.
- Si vous utilisez la mise en réseau vSphere vDS pour le Superviseur, créez un service Envoy de type LoadBalancer ou NodePort, selon votre environnement et vos exigences.
En production, Harbor nécessite une zone DNS sur un serveur DNS local, tel que BIND, ou sur un cloud public, tel qu'AWS Route 53 ou Azure DNS. Après avoir configuré DNS, pour enregistrer automatiquement les noms de domaine complets Harbor avec un serveur DNS, installez l'extension DNS externe. Reportez-vous à la section Installer ExternalDNS sur TKr pour vSphere 7.x.
Installer Harbor
Pour installer le registre Harbor à l'aide du module standard, procédez comme suit.
- Répertoriez les versions de Harbor disponibles dans le référentiel.
kubectl get packages -n tkg-system | grep harbor
- Créez la spécification
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"]
- Personnalisez le secret
harbor-data-values
dans la spécification deharbor.yaml
avec les valeurs appropriées pour votre environnement, notamment le nom d'hôte, les mots de passe, les secrets et la classe de stockage.Pour obtenir des conseils, reportez-vous à la section Référence du module Harbor.
- Installez Harbor.
kubectl apply -f harbor.yaml
- Vérifiez l'installation de Harbor.
kubectl get all -n harbor-registry
Configurer DNS pour Harbor à l'aide d'un service Envoy LoadBalancer (mise en réseau NSX)
- Obtenez l'adresse
External-IP
pour le service Envoy de type LoadBalancer.kubectl get service envoy -n tanzu-system-ingress
Vous devez voir l'adresseExternal-IP
renvoyée, par exemple :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
Vous pouvez également obtenir l'adresseExternal-IP
à l'aide de la commande suivante.kubectl get svc envoy -n tanzu-system-ingress -o jsonpath='{.status.loadBalancer.ingress[0]}'
- Pour vérifier l'installation de l'extension Harbor, mettez à jour votre fichier
/etc/hosts
local avec les noms de domaine complets Harbor et Notary mappés à l'adresseExternal-IP
de l'équilibrage de charge, par exemple :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
- Pour vérifier l'installation de l'extension Harbor, connectez-vous à Harbor.
- Créez deux enregistrements CNAME sur un serveur DNS qui mappent l'adresse
External-IP
de l'équilibrage de charge du service Envoy aux noms de domaine complets Harbor et Notary. - Installez l'extension DNS externe.
Configurer DNS pour Harbor à l'aide d'un service Envoy NodePort (mise en réseau vDS)
port.https
correcte dans le fichier
harbor-data-values.yaml
.
- Changez de contexte pour utiliser l'Espace de noms vSphere où le cluster est provisionné.
kubectl config use-context VSPHERE-NAMESPACE
- Répertoriez les nœuds du cluster.
kubectl get virtualmachines
- Choisissez l'un des nœuds worker et décrivez-le à l'aide de la commande suivante.
kubectl describe virtualmachines tkg2-cluster-X-workers-9twdr-59bc54dc97-kt4cm
- Localisez l'adresse IP de la machine virtuelle, par exemple
Vm Ip: 10.115.22.43
. - Pour vérifier l'installation de l'extension Harbor, mettez à jour votre fichier
/etc/hosts
local avec les noms de domaine complets Harbor et Notary mappés à l'adresse IP du nœud worker, par exemple :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
- Pour vérifier l'installation de l'extension Harbor, connectez-vous à Harbor.
- Créez deux enregistrements CNAME sur un serveur DNS qui mappent l'adresse IP du nœud worker aux noms de domaine complets Harbor et Notary.
- Installez l'extension DNS externe.
Se connecter à l'interface Web de Harbor
- Accédez à l'interface Web du registre Harbor à l'adresse
https://core.harbor.domain
ou au nom d'hôte que vous avez utilisé. - Connectez-vous à Harbor avec le nom d'utilisateur admin et le mot de passe généré que vous avez placé dans le fichier
harbor-data-values.yaml
. - Vérifiez que vous pouvez accéder à l'interface utilisateur de Harbor.
- Obtenez le certificat d'autorité de certification Harbor.
Dans l'interface de Harbor, sélectionnez Nouveau projet.
ou créez unCliquez sur Certificat de registre et téléchargez le certificat d'autorité de certification Harbor (ca.crt).
- Ajoutez le certificat d'autorité de certification Harbor dans le magasin d'approbations du client Docker afin de pouvoir transférer et extraire des images de conteneur vers et depuis le registre Harbor. Reportez-vous à la section Utilisation de registres privés avec des clusters Service TKG.
- Pour plus d'informations sur l'utilisation de Harbor, reportez-vous à la documentation de Harbor.