Loading search data...

Kubernetes - Ajouter à kind le certificat de l'autorité de certification de votre registry!

Publié le : 1 décembre 2021 | Mis à jour le : 19 septembre 2022

Voici un petit billet, qui est plus un pense-bête, permettant de régler les problèmes de récupération d’images depuis une registry docker privé dans un cluster kubernetes monté avec kind.

Création du cluster

Avant de lancer la création du cluster il faut créer ce fichier de configuration :

kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
nodes:
  - role: control-plane
    # This option mounts the host docker registry folder into
    # the control-plane node, allowing containerd to access them.
    extraMounts:
      - containerPath: /usr/local/share/ca-certificates/mon-autorite.crt
        hostPath: ./mon-autorite.crt
      - containerPath: /etc/docker/certs.d/artefacts.robert.local/mon-autorite.crt
        hostPath: ./mon-autorite.crt

En clair on copie le certificat de mon autorité de certification dans le répertoire de config de docker et dans celui ou se fait l’ajout des certificats dans une distribution ubuntu. Je n’ai trouvé dans la documentation de kind comment lancer une commande au moment de l’initialisation du cluster.

On peut enfin lancé la création du cluster. Au préalable on installe kind avec arkade :

arkade get kind
kind create cluster --config=cluster.yml

Creating cluster "kind" ...
 ✓ Ensuring node image (kindest/node:v1.21.1) 🖼
 ✓ Preparing nodes 📦
 ✓ Writing configuration 📜
 ✓ Starting control-plane 🕹️
 ✓ Installing CNI 🔌
 ✓ Installing StorageClass 💾
Set kubectl context to "kind-kind"
You can now use your cluster with:

kubectl cluster-info --context kind-kind

Maintenant on doit lancer la mise à jour des certificats. Pour cela on se connecte au conteneur kind :

docker exec -it kind-control-plane bash
root@kind-control-plane:/# update-ca-certificates
Updating certificates in /etc/ssl/certs...
1 added, 0 removed; done.
Running hooks in /etc/ca-certificates/update.d...
done.
root@kind-control-plane:/#
exit

On applique un déploiement utilisant une image présente dans votre registry docker privé :

kubectl apply -f app-deployment.yml

On vérifie que tout se passe bien :

kubectl get events --all-namespaces  --sort-by='.metadata.creationTimestamp'

default              14m         Normal    SuccessfulCreate          replicaset/monimage-app-f9d65c69c                Created pod: monimage-app-f9d65c69c-np8ff
default              14m         Normal    Scheduled                 pod/monimage-app-f9d65c69c-np8ff                 Successfully assigned default/monimage-app-f9d65c69c-np8ff to kind-control-plane
default              14m         Normal    Pulling                   pod/monimage-app-f9d65c69c-np8ff                 Pulling image "artefacts.robert.local/monimage-app:0.1"
default              14m         Normal    Scheduled                 pod/monimage-app-f9d65c69c-7h82p                 Successfully assigned default/monimage-app-f9d65c69c-7h82p to kind-control-plane
default              13m         Normal    Created                   pod/monimage-app-f9d65c69c-7h82p                 Created container monimage-app
default              13m         Normal    Started                   pod/monimage-app-f9d65c69c-7h82p                 Started container monimage-app
default              13m         Normal    Created                   pod/monimage-app-f9d65c69c-np8ff                 Created container monimage-app
default              13m         Normal    Pulled                    pod/monimage-app-f9d65c69c-7h82p                 Successfully pulled image "artefacts.robert.local/monimage-app:0.1" in 26.644923865s
default              13m         Normal    Started                   pod/monimage-app-f9d65c69c-np8ff                 Started container monimage-app
default              13m         Normal    Pulled                    pod/monimage-app-f9d65c69c-np8ff                 Successfully pulled image "artefacts.robert.local/monimage-app:0.1" in 26.204999781s

On installe k9s avec arkade et on vérifie que nos pods sont bien montés :

arkade get k9s

Et voilà plus de soucis avec la registry privé :)


Si vous avez apprécié cet article de blog, vous pouvez m'encourager à produire plus de contenu en m'offrant un café sur   Ko-Fi  . Vous pouvez aussi passer votre prochaine commande sur amazon, sans que cela ne nous coûte plus cher, via   ce lien  . Vous pouvez aussi partager le lien sur twitter ou linkedin via les boutons ci-dessous. Je vous remercie de votre soutien


Mots clés :

devops tutorials kubernetes

Autres Articles


Commentaires: