For AI agents: the complete documentation index is available at https://docs.ovhcloud.com/fr/llms.txt, the full documentation bundle is available at https://docs.ovhcloud.com/fr/llms-full.txt, and this page is available as Markdown at https://docs.ovhcloud.com/fr/guides/public-cloud/containers-orchestration/managed-private-registry/kubernetes.md.

Utiliser Private Registry avec OVHcloud Managed Kubernetes

Voir en Markdown

Découvrez comment utiliser les images du service OVHcloud Managed Private Registry sur des clusters OVHcloud Managed Kubernetes

Ce tutoriel vous guide dans l'utilisation des images du service OVHcloud Managed Private Registry sur des clusters OVHcloud Managed Kubernetes.

Avant de commencer

Ce tutoriel suppose que vous disposez déjà d'un cluster OVHcloud Managed Kubernetes opérationnel et que vous savez l'administrer. Pour en savoir plus sur ces sujets, consultez la documentation Deploying a Hello World application.

Vous devez également disposer d'un OVHcloud Managed Private Registry opérationnel et avoir suivi les guides Creating a private registry, Connecting to the UI, Managing users and projects et Creating and using private images.

Nous supposons plus précisément que vous avez suivi le dernier guide et que vous disposez d'une image hello-ovh dans votre registre privé.

Créer un secret Kubernetes

Kubernetes doit pouvoir accéder au registre privé pour y faire un pull des images : vous devez donc stocker les identifiants du registre privé dans un secret Kubernetes. Il existe 2 façons de créer le secret contenant les identifiants du registre. Choisissez celle que vous préférez.

1. Créer un secret à partir d'identifiants Docker existants

Se connecter à votre OVHcloud Managed Private Registry

Pour faire un pull d'une image privée depuis votre registre privé, vous devez vous y authentifier avec docker login.

docker login [YOUR_PRIVATE_REGISTRY_URL]

Pour notre registre privé :

  $ docker login 8093ff7x.gra5.container-registry.ovh.net
  Username: private-user
  Password: 
  Login Succeeded

La connexion crée ou met à jour un fichier config.json qui contient un jeton d'autorisation.

Affichez le fichier config.json :

cat ~/.docker/config.json

Créer le secret

Créez un secret de type docker-registry.

Vous utiliserez ce secret pour vous authentifier auprès de votre registre privé et faire un pull d'une image privée.

Si vous avez déjà exécuté docker login, vous pouvez copier ces identifiants dans Kubernetes :

kubectl create secret generic regcred \
    --from-file=.dockerconfigjson=<path/to/.docker/config.json> \
    --type=kubernetes.io/dockerconfigjson

Pour notre registre privé :

$ kubectl create secret generic regcred \
  --from-file=.dockerconfigjson=/Users/avache/.docker/config.json \
  --type=kubernetes.io/dockerconfigjson

  secret/regcred created

Vous pouvez vérifier que le secret a bien été déployé dans votre cluster Kubernetes :

$ kubectl get secret regcred -o jsonpath="{.data.\.dockerconfigjson}"

ewogICAgICAgICJhdXRocyI6IHsKCQkiaHR0cHM6Ly9pbmRleC5kb2NrZXIuaW8vdjEvIjogewogICAgICAgICAgICAgICAgICAgICAgICAiYXV0aCI6ICJjMk55WVd4NU9qaDBhM00wWm01aiIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAiY3g2ZHMzMGQuZ3JhNy5jb250YWluZXItcmVnaXN0cnkub3ZoLm5ldCI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgImF1dGgiOiAiY0hKcGRtRjBaUzExYzJWeU9sQnlhWFpoZEdWVmMyVnlNUT09IgogICAgICAgICAgICAgICAgfQogICAgICAgIH0KfQo=
Info

Les secrets sont encodés en base64 et automatiquement décodés lorsqu'ils sont attachés à un pod.

2. Créer un secret en fournissant les identifiants en ligne de commande

Créez un secret de type docker-registry.

Vous utiliserez ce secret pour vous authentifier auprès de votre registre privé et faire un pull d'une image privée :

kubectl create secret docker-registry regcred \
    --docker-server=`<your-registry-server>` \
    --docker-username=`<your-username>` \
    --docker-password=`<your-password>`

Pour notre registre privé :

$ kubectl create secret docker-registry regcred \
    --docker-server=cx6ds30d.gra7.container-registry.ovh.net \
    --docker-username=private-user \
    --docker-password=PrivateUser1

  secret/regcred created

Vous pouvez vérifier que le secret a bien été déployé dans votre cluster Kubernetes :

$ kubectl get secret regcred -o jsonpath="{.data.\.dockerconfigjson}"

eyJhdXRocyI6eyJjeDZkczMwZC5ncmE3LmNvbnRhaW5lci1yZWdpc3RyeS5vdmgubmV0Ijp7InVzZXJuYW1lIjoicHJpdmF0ZS11c2VyIiwicGFzc3dvcmQiOiJQcml2YXRlVXNlcjEiLCJhdXRoIjoiY0hKcGRtRjBaUzExYzJWeU9sQnlhWFpoZEdWVmMyVnlNUT09In19fQ==
Info

Les secrets sont encodés en base64 et automatiquement décodés lorsqu'ils sont attachés à un pod.

Déployer une image

La première étape pour déployer une image Docker dans un cluster Kubernetes consiste à écrire un manifeste YAML. Nommez-le hello-ovh.yaml :

apiVersion: v1
kind: Service
metadata:
  name: hello-ovh
  labels:
    app: hello-ovh
spec:
  type: LoadBalancer
  ports:
  - port: 80
    targetPort: 80
    protocol: TCP
    name: http
  selector:
    app: hello-ovh
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: hello-ovh-deployment
  labels:
    app: hello-ovh
spec:
  replicas: 1
  selector:
    matchLabels:
      app: hello-ovh
  template:
    metadata:
      labels:
        app: hello-ovh
    spec:
      containers:
      - name: hello-ovh
        image: [YOUR_PRIVATE_REGISTRY_URL]/[YOUR_PROJECT]/hello-ovh:1.0.0
        ports:
        - containerPort: 80
      imagePullSecrets:
      - name: regcred
Info

Remplacez [YOUR_PRIVATE_REGISTRY_URL] et [YOUR_PROJECT] par l'URL de votre registre privé et le nom de votre projet. Par exemple, pour notre registre privé : cx6ds30d.gra7.container-registry.ovh.net/private/hello-ovh:1.0.0

Vous pouvez ensuite appliquer le fichier :

kubectl apply -f hello-ovh.yaml

Après application du fichier YAML, un nouveau service hello-world et le déploiement hello-world-deployment correspondant sont créés :

$ kubectl apply -f hello-ovh.yaml

service/hello-ovh created
deployment.apps/hello-ovh-deployment created

$ kubectl get po -l app=hello-ovh
NAME                                    READY   STATUS    RESTARTS   AGE
hello-ovh-deployment-6df76cb7b8-vbk2b   1/1     Running   0          66s

Le pod fonctionne correctement : Kubernetes a donc bien effectué le pull de l'image depuis votre registre privé.

Aller plus loin

Pour une vue d'ensemble du service OVHcloud Managed Private Registry, consultez le site OVHcloud Managed Private Registry.

Cette page vous a-t-elle aidé ?