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


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

Accéder à la page Apps

Cliquer sur Launch pour déployer une nouvelle application

Maintenant, il faut chercher pour Docker registry

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

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

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,

Cliquer Sur Volumes

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

Aller dans Storage -> Persistent Volumes

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

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

É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.

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

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

Puis cliquez Save pour appliquer les changements
Dans le prochain chapitre, nous allons voir comment push des images sur le registre.