Installer le Registre Harbor

Harbor est un registre open source qui sécurise les artefacts avec des politiques et un contrôle d’accès basé sur les rôles, garantit que les images sont numérisées et exemptes de vulnérabilités, et signe les images comme fiables. Harbor, un projet gradué CNCF, offre conformité, performances et interopérabilité pour vous aider à gérer de manière cohérente et sécurisée les artefacts sur les plates-formes de calcul cloud natives telles que Kubernetes et Docker.

Prérequis

Avant de commencer à déployer Harbir sur un de vos clusters de travail certains prérequis doivent être installés sur votre machine d’administration, mais aussi sur le cluster de travail de destination.

Sur la machine d’administration

Installez le gestionnaire de package de Tanzu en suivant les étapes de la page ci-dessous :

Sur le cluster de destination

  1. Déployez un Ingress Controller afin de pouvoir accéder à l’interface de Harbor.
  2. Créer une classe de stockage par défaut afin de pouvoir stocker les données de Harbor.

Installation

Récupérez la version d’harbor a installer.


Pour cela utilisez la colonne VERSION. Notez cette information car celle-ci sera utile dans les étapes suivantes

Générez le fichier de configuration

Avant de commencer l’installation, il est nécessaire de remplir un fichier de configuration. Les paramètres peuvent différer d’une version à l’autre.

C’est pourquoi nous allons récupérer le modèle de ce fichier de configuration pour la version que vous avez choisie.


Pour récupérer le bon modèle, utilisez la commande fournie dans la colonne de droite en remplaçant PACKAGE-VERSION par la version que vous avez choisie.

Exemple :

Harbor utilise plusieurs mots de passe pour sa base de données et ses différents composants. Il est possible de configurer chaque mot de passe manuellement dans le fichier de configuration ou bien il est possible d’utiliser un script pour générer des mots de passe aléatoire et les renseigner automatiquement dans le fichier de configuration.


Si vous souhaitez utiliser le script pour générer les mots de passe, utilisez la commande fournie dans la colonne de droite. Si vous souhaitez renseigner les mots de passe manuellement vous pouvez passer à l’étape suivante.

Remplacez PACKAGE-VERSION par la version d’Harbor choisie

Exemple :

Remplissez le fichier harbor-data-values

ParamètresDescriptionExemple
hostnameNom DNS complet pour ce service. Ce nom sera utilisé pour accéder au registre. Une résolution DNS de ce nom doit être possible par vos clusters A des fins de test, vous pouvez utiliser nip.io pour simplifier les tests.harbor.100.10000.10.4.nip.io or registry.mydomain.com
tlsCertificate.tls.crt tlsCertificate.tls.key tlsCertificate.ca.crtCes trois paramètres sont utilisés pour fournir les certificats utilisés pour ce service. Si aucun certificat n’est fourni, le processus d’installation en génèrera automatique. Cependant, ces certificats ne seront validés par aucune autorité de certification, ce qui impliquera une configuration supplémentaire sur vos clusters de travail pour qu’ils aient connaissance de ce certificat et l’autorise.
Pour cela : vous pouvez suivre le paragraphe : Ajouter un certificat personnalisé sur un cluster sur cette page
enableContourHttpProxySi Contour est utilisé en tant qu’Ingress Controller mettez ce paramètre à true afin d’utiliser le nouvel objet httpProxy fourni par Controur au lieu d’un Ingress. Si vous utilisez un autre Ingress Controller mettez ce paramètre à false.true or false
harborAdminPasswordMot de passe Admin par défaut
persistence.persistentVolumeClaim.registry.storageClassNom de la classe de stockage à utiliser pour y stocker tous les fichiers du registre. Cette classe de stockage doit être créée sur le cluster avant l’installation d’Harbor.
Si ce paramètre n’est pas renseigné, la classe de stockage par défaut sera utilisée.
silver
persistence.persistentVolumeClaim.registry.sizeTaille du volume persistant10Gi
persistence.persistentVolumeClaim.database.storageClassNom de la classe de stockage à utiliser pour y stocker la base de données du registre. Cette classe de stockage doit être créée sur le cluster avant l’installation d’Harbor.
Si ce paramètre n’est pas renseigné, la classe de stockage par défaut sera utilisée.
persistence.persistentVolumeClaim.registry.sizeTaille du volume persistant
persistence.persistentVolumeClaim.redis.storageClassNom de la classe de stockage à utiliser pour y stocker redis. Cette classe de stockage doit être créée sur le cluster avant l’installation d’Harbor.
Si ce paramètre n’est pas renseigné, la classe de stockage par défaut sera utilisée.
persistence.persistentVolumeClaim.redis.sizeTaille du volume persistant
persistence.persistentVolumeClaim.trivy.storageClassNom de la classe de stockage à utiliser pour y stocker tous les fichiers de trivy. Cette classe de stockage doit être créée sur le cluster avant l’installation d’Harbor.
Si ce paramètre n’est pas renseigné, la classe de stockage par défaut sera utilisée.
persistence.persistentVolumeClaim.trive.sizeTaille du volume persistant
secretKey database.password core.secret core.xsrfKey jobservice.secret registry.secretLes mots de passe à renseigner manuellement ou via le script (voir ci-dessus)

Installer Harbor


Utilisez la commande ci-contre en remplaçant VERSION et NAMESPACE.

Exemple :

Annexe : Ajouter un certificat personnalisé sur un cluster

Le certificat utilisé par le registre doit être validé par une autorité de certification de confiance, sans cela les clusters de travail ne pourront pas télécharger les images de conteneur sur le registre pour des raisons de sécurités.


Si le registre utilise des certificats personnalisés via une autorité non connue, il est nécessaire de l’ajouter sur vos différents clusters de travail pour qu’ils en aient connaissance et qu’ils l’acceptent.

Pour les futurs clusters

Si vous utilisez l’outil ytt et les modèles fournis via KaaS Standard – Déployer un cluster de travail

Si vous utilisez les modèles de fichiers, il vous suffit de créer un fichier tkg-custom-ca.pem dans le répertoire de modèles puis de continuer normalement comme décrit dans la page KaaS Standard – Déployer un cluster de travail.


Si vous utilisez les fichiers yaml de CAPVCD de base

  • Ajoutez le certificat et la section preKubeadmCommands au niveau de l’objet KubeadmControlPlane dans votre définition yaml. Cela ajoutera le certificat sur vos noeuds de controlplane (master) au moment du déploiement.
  • Ajoutez le certificat et la section preKubeadmCommands au niveau de l’objet KubeAdmConfigTemplate dans votre définition yaml. Cela ajoutera le certificat sur vos noeuds de travail au moment du déploiement

Pour les clusters existants

  • Editez l’objet Cluster API kubeadmconfigtemplate correspondant au cluster à modifier.
  • Changez le paramètre spec.template.spec.files pour y ajouter le certificat comme ci-dessous:
  • Tout en bas du fichier, ajouter une section preKubeadmCommands comme ci-dessous :
  • Enregistrez le fichier avec vos changements.
  • Patchez l’objet machinedeployments correspondant au cluster à modifier. Cela forcera une mise à jour des noeuds.
    • Remplacez [MACHINEDEPLOYMENT_NAME] par le nom de votre machinedeployment