Par défaut, en usage avec Docker, Kubernetes exploite le hub officiel de « Docker Inc » comme registry d’image. C’est une énorme source de contenu, mais dans un usage en entreprise, il est souvent conseillé d’avoir sa propre registry via une solution dédiée.
Il en existe de très nombreuses avec plus ou moins de fonctionnalités, parfois payantes.
À chacun de choisir ce qui lui semble opportun par rapport à ses besoins et ses moyens.
Personnellement j’utilise l’offre gitlab en version SaaS et gratuite. Je vais donc me baser sur celle-ci pour donner un exemple de configuration d’une registry dite privée dans K8S.
Je commence simplement par créer un token d’accès à mon compte gitlab
Puis dans kubernetes, je génère un objet secret « gitlab-registry » qui va me permettre de stocker mon login et token d’accès à mon compte gitlab.
kubectl create secret docker-registry gitlab-registry --docker-server=registry.gitlab.com --docker-username=mon_user_gitlab --docker-password=mon_token --namespace=prd-lan-coolcorp
(Je précise ici un namespace car j’utilise mes ressources K8S dans un namespace spécifique.)
Je peux ensuite aller chercher une image sur ma registry via sa déclaration dans un pod
apiVersion: v1
kind: Pod
metadata:
name: diagnostic
namespace: prd-lan-coolcorp
labels:
role: diagnostic
spec:
containers:
- name : diagnostic
image: registry.gitlab.com/coolcorp_docker/diag:1.1
nodeSelector:
kubernetes.io/hostname: k8swok001
imagePullSecrets:
- name: gitlab-registry
registry.gitlab.com/coolcorp_docker/ est l’adresse qui contient mes images diag:1.1 est l’image associée à son tag 1.1
Il me faut préciser le secret qui contient mes logins d’accès à la registry via l’option "imagePullSecrets":
Mon image est maintenant déployable sur mon cluster Kubernetes.