Déclaration d'un registry privée dans kubernetes

Introduction aux registry d'images docker

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.

 

Liste non exhaustive de registry issue de la cncf

 

À chacun de choisir ce qui lui semble opportun par rapport à ses besoins et ses moyens.

 

Exemple de registery privée avec gitlab

 

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.

 

Création d'un token d'accès

Je commence simplement par créer un token d’accès à mon compte gitlab

 

Token dans GITLAB

 

Création de l'objet secret dans Kubernetes

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

 

Usage d'une image issue de la registery privée depuis un pod

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.