Ubuntu 18.02 et Rancher (rke) – Déploiement de Docker Registry – Partie 2

https://rancher.com/img/brand-guidelines/assets/logos/png/color/rancher-logo-horiz-color.png

Introduction

Pour faciliter le déploiement des applications (nodeJS, VueJS, et autres) nous allons avoir besoin d'un docker registry pour accéder aux images Docker plus facilement et directement à partir du Kubernetes.

Étape 1 - S'assurer que les catalogues sont disponibles

Accéder à Tools -> Catalogues

Page clusters de rancher
Page Catalogue de rancher

Assurer vous que les deux catalogues activés par défaut soient actifs

C'est catalogue contiennent plusieurs applications et stack que l'on peut déployer rapidement et facilement sur Kubernetes.

Étape 2 - Déploiement de Docker Registry dans le projet Default

Accéder à Global -> Local -> Default

La page du projet Default

Accéder à la page Apps

Page Apps dans un projet

Cliquer sur Launch pour déployer une nouvelle application

Les applications disponibles avec les catalogues par défaut

Maintenant, il faut chercher pour Docker registry

Docker registry avec Rancher

Ensuite, il faut configurer le registre,

Générer le mot de passe

Source: https://docs.docker.com/registry/deploying/#native-basic-auth

docker run \
  --entrypoint htpasswd \
  registry:2 -Bbn testuser testpassword

Copier le output testuser:$2y$05$YDtdi/LbIBPV/e9nVsWyy.uZxWZqHkwOgFpN3JXq5ZtimAUDp26T6

Les options de Docker Registry

Il est recommandé de choisir un port static tel que 30000 par exemple.

Suite Options du Docker registry

Puis cliquer sur Launch

Le déploiement va avoir besoin d'un storage persistent,

Accéder à Resources -> Workload

Vous allez voir que le déploiement est arrêté a UPDATING,

Déploiement du Docker Registry

Cliquer Sur Volumes

Le volume en attente

Maintenant, il faut créer un volume pour qu'il soit disponible au conteneur.

Dans la première partie du tutoriel, nous avons ajouter deux disques, nous pouvons maintenant initialiser le deuxième disque.

lsblk

Les disques disponibles


NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
loop0    7:0    0   91M  1 loop /snap/core/6350
sda      8:0    0   20G  0 disk 
├─sda1   8:1    0    1M  0 part 
└─sda2   8:2    0   20G  0 part /
sdb      8:16   0   40G  0 disk 
sr0     11:0    1 1024M  0 rom  

Création d'une nouvelle partition

fdisk /dev/sdb

Voici les réponses

Welcome to fdisk (util-linux 2.31.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Device does not contain a recognized partition table.
Created a new DOS disklabel with disk identifier 0x10356e4d.

Command (m for help): n
Partition type
   p   primary (0 primary, 0 extended, 4 free)
   e   extended (container for logical partitions)
Select (default p): 

Using default response p.
Partition number (1-4, default 1): 
First sector (2048-83886079, default 2048): 
Last sector, +sectors or +size{K,M,G,T,P} (2048-83886079, default 83886079): 

Created a new partition 1 of type 'Linux' and of size 40 GiB.

Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.

Création du filesystem

mkfs.xfs /dev/sdb1

Le output:

meta-data=/dev/sdb1              isize=512    agcount=4, agsize=2621376 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=1, sparse=0, rmapbt=0, reflink=0
data     =                       bsize=4096   blocks=10485504, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=5119, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

Ajout de la nouvelle partition dans fstab

nano /etc/fstab

Ajouter cette ligne:

/dev/sdb1       /srv    xfs     defaults        0       0

Puis monter la partition

mount -a

Valider que le tout a fonctionné

lsblk
sdb      8:16   0   40G  0 disk 
└─sdb1   8:17   0   40G  0 part /srv

Création du répertoire pour le registry

mkdir /srv/registry

Changer les permissions du répertoire

chmod -R 770 /srv/registry

De retour dans rancher UI

Cliquer sur Local

Dashboard du cluster

Aller dans Storage -> Persistent Volumes

Les volumes persistants

Cliquer Add volume

Remplissez les champs selon ce que vous avez configurer précédemment.

Volume pour le docker registry

Le volume est local et est un répertoire sur la machine, nous pouvons nous permettre d'utiliser cette méthode car nous avons qu'un seul noeud dans notre infrastructure. Pour un environnement redondant. il est préférable d'utiliser une autre méthode pour assurer que le data reste disponible tout le temps.

Cliquer sur Save

Après quelques secondes il va être automatiquement associé à notre conteneur Docker-registry

Volume attaché au docker registry

Étape 3 - Accéder au catalogue de notre registre

Selon votre adresse IP / Nom de domaine, vous pouvez accéder au registre comme suit:

http://192.168.2.252:30000/v2/_catalog

le mot de passe nécessaire est celui copié précédemment.

Dans le cas où vous n'avez pas pris le mot de passe,

Dans le projet Default accéder à Resources -> Secrets -> docker-registry-secret vous pouvez cliquer sur les ******** pour voir le mot de passe.

Mot de passe dans les secrets

Si les credentials sont bons, vous devriez avoir un JSON vide avec ceci:

repositories:	[]

La prochaine partie est de pousser des images dans ce registre.

Augmenter la limite du upload et ajouter un load balancer de niveau 7

Retourner dans Apps, cliquer les ... vertical de l'application de Docker-registry puis choisissez Upgrade

Load balancer niveau 7 avec docker registry

Cliquer sur True pour le Load balancer et configurez le DNS si vous en avez un sinon xip.io va faire le travail.

Cliquer sur Upgrade pour appliquer la modification.

Pour augmenter la limite du Proxy,

Retourner dans Resources -> Workloads -> Load Balancing

Puis cliquer Edit sur le nouveau load balancer

Puis ajoutez cette annotation en bas de la page:

nginx.ingress.kubernetes.io/proxy-body-size=5G
Augmenter la limite du proxy

Puis cliquez Save pour appliquer les changements

Dans le prochain chapitre, nous allons voir comment push des images sur le registre.

Laisser un commentaire