Configuration du registre des conteneurs Gitlab

Configuration du registre des conteneurs Gitlab
Dans notre dernier article, nous vous avons montré comment vous pouvez créer une instance GitLab pour gérer votre organisation ou vos projets personnels. Nous vous avons recommandé d'utiliser un FQDN et d'avoir l'instance GitLab disponible sur HTTPS. Étant donné que la plupart des applications sont emballées sous forme de conteneurs, il est raisonnable de configurer un registre de conteneurs où différentes versions de votre application, ainsi que des composants différents peuvent être stockées sous forme d'images Docker.

Si vous ne savez pas ce qu'est un registre des conteneurs, ne vous inquiétez pas. Il deviendra clair une fois que vous poussera réellement votre première image de conteneur dans une instance Gitlab. Pour l'instant, considérez-les comme des référentiels pour vos images de conteneurs. Ce ne sont pas en cours d'exécution de conteneurs mais juste des images (données simples) assises dans l'instance gitlab à distance.

Pourquoi voudriez-vous un registre de conteneurs Gitlab?

Il y a de fortes chances que votre application soit emballée soit comme une seule image Docker, soit comme une collection de ces images. Cela signifie que différentes versions seront associées à différentes images et le registre des conteneurs vous aidera à les garder individuellement et à voir lesquelles doivent être regroupées dans une version particulière.

Le registre est aux conteneurs, quel référentiel est le code source et Gitlab est un endroit pour les gérer tous.

Conditions préalables

  1. Une instance GitLab fonctionnelle sur HTTPS
  2. Accès racine à l'instance
  3. Accès pour modifier les enregistrements DNS de votre nom de domaine

Nous allons supposer que notre gitlab fonctionne sur gitlab.exemple.com .

CERTIFICATIONS DNS ET TLS RÉGICTURE

Vous devez être l'utilisateur root pour activer la fonction de registre des conteneurs à travers l'instance Gitlab. Les utilisateurs individuels peuvent ensuite choisir d'utiliser cette fonctionnalité dans leurs projets respectifs, s'ils le souhaitent. Il y a deux façons de le faire:

  1. Réutilisez le nom de domaine existant et les certificats TLS pour gitlab.exemple.com et exécutez le registre sur un port différent.
  2. Pointer un autre nom de domaine, disons, enregistrement.gitlab.exemple.com à la même adresse IP où GitLab s'exécute et configurez le registre là-bas.

Allons avec la deuxième option car c'est beaucoup plus professionnel.

Étape 1: Ajouter un record pour enregistrement.gitlab.exemple.com Pointer vers la même propriété IP où votre instance GitLab est en cours d'exécution.

Étape 2: Arrêtez les services GitLab en cours d'exécution dans votre serveur.

$ sudo gitlab-cctl stop

Étape 3: Ajouter le client ACME Certbot PPA à votre système et installer un certificat.

$ sudo add-att-repository ppa: Certbot / Certbot
$ sudo apt mise à jour
$ sudo apt install certbot

Étape 4: Obtenir des certificats de Let's Encrypt.

$ Certbot Certonly

Vous verrez un message comme:
""
Comment aimeriez-vous vous authentifier avec l'ACME CA?
--
1: Tournez un serveur Web temporaire (autonome)
2: Placer les fichiers dans le répertoire WebRoot (webroot)
--
Sélectionnez le numéro approprié [1-2] puis [ENTER] (appuyez sur «C» pour annuler): 1
""

Cela vous demandera ensuite votre e-mail, vous demandera d'accepter ses conditions de service et, surtout, vous demander votre nom de domaine qui serait enregistrement.gitlab.exemple.com Dans notre exemple de cas. Vous recevrez un message disant si les certificats ont été obtenus ou non. S'ils l'étaient, passez à l'étape 5

Étape 5: Maintenant que nous avons nos certificats, il est temps de les placer sous les répertoires liés à Gitlab.

$ cp / etc / lesencrypt / live / registre.gitlab.exemple.com / fullchain.pem
/ etc / gitlab / ssl / registre.gitlab.exemple.CRT
$ cp / etc / lesencrypt / live / registre.gitlab.exemple.com / privkey.pem
/ etc / gitlab / ssl / registre.gitlab.exemple.clé

Sécuriser les autorisations sur eux:

$ chmod 600 / etc / gitlab / ssl / registre.gitlab.exemple.com.*

Comme le reste du tutoriel, assurez-vous de remplacer l'exemple.com avec votre nom de domaine existant. Puisque c'est ce que sera le nom du répertoire, où CERTBOT a stocké le certificat.

Étape 6: Modifier la configuration de GitLab. Ouvrez le fichier / etc / gitlab / gitlab.RB et ajoutez les lignes suivantes au bas de celui-ci:

registry_external_url 'https: // registre.gitlab.exemple.com '

Si vous avez tout fait avec soin, la partie la plus compliquée de la configuration est terminée! Vous aurez maintenant un registre de conteneurs opérationnel, il suffit d'exécuter:

$ sudo gitlab-cctl reconfigurer
$ sudo gitlab-cctl start

Activer le registre et pousser des images

Maintenant que nous devons nous-mêmes un registre des conteneurs, créons un nouveau projet à l'aide de l'interface utilisateur de Gitlab et vérifions que cela fonctionne.

Sur la colonne de gauche, vous pouvez voir une section de registre. Vous pouvez cliquer dessus pour voir des instructions détaillées sur la façon de vous connecter et de pousser des images dedans. Revenons à notre bureau local, qui devrait faire installer Docker dessus.

Nous pouvons l'utiliser pour construire un simple conteneur Hello-World et le pousser vers ce registre. Dans votre système local, créez un nouveau dossier:

$ CD ~
$ MKDIR Sample_Container

À l'intérieur, créons un fichier nommé Dockerfile et ajoutez-y le contenu suivant:

De Ubuntu: Dernière
## Vos commandes personnalisées ici

Vous pouvez garder votre dockerfile avec juste la première ligne. Ce sera un conteneur Ubuntu ordinaire. Maintenant, vous le construisez avec une balise significative (nous utiliserons la balise mon projet Ce qui est le même que notre nom de projet Gitlab, c'est important). Dans le même répertoire:

$ docker build -t registre.gitlab.exemple.com //mon projet .

N'oubliez pas de remplacer votre nom d'utilisateur GitLab au lieu de l'espace réservé utilisé dans la commande ci-dessus.

Il crée juste un conteneur Ubuntu avec la récupération de l'image. Cette image est ce qui est poussé. Si vous modifiez le conteneur et créez une nouvelle image avec lui (en utilisant Docker s'engage commander ce sera une nouvelle image). Poussons l'image Vanilla Ubuntu à notre registre.

Nous devons d'abord nous connecter en utilisant notre nom d'utilisateur et notre mot de passe GitLab:

$ docker de connexion.gitlab.exemple.com

Puis courez:

$ docker build -t registre.gitlab.exemple.com / root / my-project .
$ docker push registre.gitlab.exemple.com / root / my-project

Si vous ne savez pas quelle devrait être la balise de votre conteneur, visitez la page de registre de votre projet et il y aura des instructions claires pour cela. Si la commande docker push a fonctionné correctement, vous pouvez voir une nouvelle image Docker se télécharger (ou pousser) dans votre instance gitlab. Comme si cela avait été montré dans mon cas:

Conclusion

Le contrôle de la version est bien plus que la simple gestion du code source. Il s'améliore constamment pour répondre à un éventail polyvalent de demandes que tout projet logiciel peut avoir besoin de façon inattendue. Le registre des conteneurs n'est que la pointe de l'iceberg. Vous pouvez avoir des pipelines CD / CI, une gestion avancée de la configuration, une autorisation via des jetons et une multitude d'autres fonctionnalités activées dans GitLab. J'espère que vous avez appris quelque chose de nouveau sur cette merveilleuse technologie dans ce tutoriel.

Faites-nous savoir s'il y a quelque chose que vous voulez que nous couvrions!