Installer le Registre Harbor
Introduction
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
- Déployez un Ingress Controller afin de pouvoir accéder à l’interface de Harbor.
- 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ètres | Description | Exemple |
---|---|---|
hostname | Nom 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.crt | Ces 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 | |
enableContourHttpProxy | Si 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 |
harborAdminPassword | Mot de passe Admin par défaut | |
persistence.persistentVolumeClaim.registry.storageClass | Nom 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.size | Taille du volume persistant | 10Gi |
persistence.persistentVolumeClaim.database.storageClass | Nom 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.size | Taille du volume persistant | |
persistence.persistentVolumeClaim.redis.storageClass | Nom 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.size | Taille du volume persistant | |
persistence.persistentVolumeClaim.trivy.storageClass | Nom 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.size | Taille du volume persistant | |
secretKey database.password core.secret core.xsrfKey jobservice.secret registry.secret | Les 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