Ce document a été traduit à l'aide d'une technologie de traduction automatique. Bien que nous nous efforcions de fournir des traductions exactes, nous ne fournissons aucune garantie quant à l'exhaustivité, l'exactitude ou la fiabilité du contenu traduit. En cas de divergence, la version originale anglaise prévaut et fait foi.

Registre Kubernetes et registre d’images de conteneur

Les registres sont des secrets Kubernetes contenant des identifiants utilisés pour s’authentifier auprès des registres de conteneurs privés.

Le mot "registre" peut signifier deux choses, selon qu’il est utilisé pour désigner un registre de conteneurs ou un registre Kubernetes :

  • Un registre d’images de conteneur (anciennement "registre Docker") contient des images de conteneur que vous pouvez récupérer et déployer. Le registre est une application côté serveur sans état et évolutive qui stocke et vous permet de distribuer des images de conteneurs.

  • Le registre Kubernetes est un secret d’extraction d’images que votre déploiement utilise pour s’authentifier auprès d’un registre d’images.

Les déploiements utilisent le secret de registre Kubernetes pour s’authentifier auprès d’un registre d’images privé et ensuite récupérer une image de conteneur hébergée dessus.

Actuellement, les déploiements récupèrent automatiquement les identifiants du registre privé uniquement si la charge de travail est créée dans l’interface utilisateur de Rancher et non lorsqu’elle est créée via kubectl.

Créer un registre dans des espaces de noms

Condition préalable :

Vous devez avoir un registre privé disponible déjà déployé.

Si vous devez créer un registre privé, consultez les pages de documentation pour votre composant d’exécution respectif :

  1. Dans le coin supérieur gauche, cliquez sur ☰ > Gestion des clusters.

  2. Allez dans le cluster où vous souhaitez ajouter un registre et cliquez sur Explorer.

  3. Dans la navigation à gauche, cliquez soit sur Stockage  Secrets soit sur Autres ressources  Noyau  Secrets.

  4. Cliquez sur Create.

  5. Cliquez sur Registre.

  6. Entrez un Nom pour le registre.

    Kubernetes classe les secrets, certificats et registres tous comme secrets, et aucun secret dans un projet ou un espace de noms ne peut avoir un nom dupliqué. Par conséquent, pour éviter les conflits, votre registre doit avoir un nom unique parmi tous les secrets de votre espace de travail.

  7. Sélectionnez un espace de noms pour le registre.

  8. Sélectionnez le site web qui héberge votre registre privé. Ensuite, entrez les identifiants qui s’authentifient auprès du registre. Par exemple, si vous utilisez Docker Hub, fournissez votre nom d’utilisateur et votre mot de passe Docker Hub.

  9. Cliquez sur Enregistrer.

Résultat :

  • Votre secret est ajouté à l’espace de noms que vous avez choisi.

  • Vous pouvez voir le secret dans l’interface utilisateur de Rancher en cliquant soit sur Stockage  Secrets soit sur Plus de ressources  Noyau  Secrets.

  • Toute charge de travail que vous créez dans l’interface utilisateur de Rancher aura les identifiants pour accéder au registre si la charge de travail est dans le champ d’application du registre.

Créer un registre dans les projets

Conditions préalables :

Vous devez avoir un registre privé disponible déjà déployé.

Si vous devez créer un registre privé, consultez les pages de documentation pour votre composant d’exécution respectif :

Avant la version 2.6, les secrets devaient être dans un champ d’application de projet. Les projets ne sont plus requis, et vous pouvez utiliser l’espace de noms à la place. En conséquence, l’interface utilisateur de Rancher a été mise à jour pour refléter cette nouvelle fonctionnalité. Cependant, vous pouvez toujours créer un registre à portée de projet si vous le souhaitez. Utilisez les étapes suivantes pour ce faire :

  1. Dans le coin supérieur gauche, cliquez sur ☰ > Paramètres globaux dans le menu déroulant.

  2. Cliquez sur Drapeaux de fonctionnalités.

  3. Allez à l’option de fonctionnalité legacy et cliquez sur Activer.

  4. Dans le coin supérieur gauche, cliquez sur ☰ > Gestion des clusters.

  5. Allez dans le cluster où vous souhaitez ajouter un registre et cliquez sur Explorer.

  6. Dans la navigation à gauche, cliquez soit sur Stockage  Secrets soit sur Autres ressources  Noyau  Secrets.

  7. Cliquez sur Create.

  8. Cliquez sur Registre.

  9. Dans la barre de navigation supérieure, filtrez pour voir un seul projet.

  10. Entrez un Nom pour le registre.

    Kubernetes classe les secrets, certificats et registres tous comme secrets, et aucun secret dans un projet ou un espace de noms ne peut avoir un nom dupliqué. Par conséquent, pour éviter les conflits, votre registre doit avoir un nom unique parmi tous les secrets de votre espace de travail.

  11. Sélectionnez un espace de noms pour le registre.

  12. Sélectionnez le site web qui héberge votre registre privé. Ensuite, entrez les identifiants qui s’authentifient auprès du registre. Par exemple, si vous utilisez Docker Hub, fournissez votre nom d’utilisateur et votre mot de passe Docker Hub.

  13. Cliquez sur Enregistrer.

Résultat :

  • Votre secret est ajouté au projet individuel que vous avez choisi.

  • Vous pouvez voir le secret dans l’interface utilisateur de Rancher en cliquant soit sur Stockage  Secrets soit sur Plus de ressources  Noyau  Secrets.

  • Toute charge de travail que vous créez dans l’interface utilisateur de Rancher aura les identifiants pour accéder au registre si la charge de travail est dans le champ d’application du registre.

Les registres à portée de projet sur le cluster local ne sont visibles que lorsqu’un seul projet est sélectionné.

Utiliser un registre privé

Vous pouvez déployer une charge de travail avec une image provenant d’un registre privé via l’interface utilisateur de Rancher, ou avec kubectl.

Utilisation du registre privé avec l’interface utilisateur Rancher

Pour déployer une charge de travail avec une image de votre registre privé,

  1. Dans le coin supérieur gauche, cliquez sur ☰ > Gestion des clusters.

  2. Allez dans le cluster où vous souhaitez déployer une charge de travail et cliquez sur Explorer.

  3. Cliquez sur Charge de travail.

  4. Cliquez sur Create.

  5. Sélectionnez le type de charge de travail que vous souhaitez créer.

  6. Entrez un nom unique pour la charge de travail et choisissez un espace de noms.

  7. Dans le champ Image du conteneur, entrez l’URL du chemin vers l’image dans votre registre privé. Par exemple, si votre registre privé est sur Quay.io, vous pourriez utiliser quay.io/<Quay profile name>/<Image name>.

  8. Cliquez sur Create.

Résultat : Votre déploiement devrait se lancer, s’authentifier en utilisant les identifiants du registre privé que vous avez ajoutés dans l’interface utilisateur Rancher, et récupérer l’image du conteneur que vous avez spécifiée.

Utilisation du registre privé avec kubectl

Lorsque vous créez la charge de travail en utilisant kubectl, vous devez configurer le pod afin que son YAML contienne le chemin vers l’image dans le registre privé. Vous devez également créer et référencer le secret du registre car le pod n’a accès automatiquement aux identifiants du registre privé que s’il est créé dans l’interface utilisateur Rancher.

Le secret doit être créé dans le même espace de noms où la charge de travail est déployée.

Voici un exemple pod.yml pour une charge de travail qui utilise une image d’un registre privé. Dans cet exemple, le pod utilise une image de Quay.io, et le .yml spécifie le chemin vers l’image. Le pod s’authentifie auprès du registre en utilisant des identifiants stockés dans un secret Kubernetes appelé testquay, qui est spécifié dans spec.imagePullSecrets dans le champ name :

apiVersion: v1
kind: Pod
metadata:
  name: private-reg
spec:
  containers:
  - name: private-reg-container
    image: quay.io/<Quay profile name>/<image name>
  imagePullSecrets:
  - name: testquay

Dans cet exemple, le secret nommé testquay se trouve dans l’espace de noms par défaut.

Vous pouvez utiliser kubectl pour créer le secret avec les identifiants du registre privé. Cette commande crée le secret nommé testquay :

kubectl create secret docker-registry testquay \
    --docker-server=quay.io \
    --docker-username=<Profile name> \
    --docker-password=<password>

Pour voir comment le secret est stocké dans Kubernetes, vous pouvez utiliser cette commande :

kubectl get secret testquay --output="jsonpath={.data.\.dockerconfigjson}" | base64 --decode

Le résultat ressemble à ceci :

{"auths":{"quay.io":{"username":"<Profile name>","password":"<password>","auth":"c291bXlhbGo6dGVzdGFiYzEyMw=="}}}

Après le déploiement de la charge de travail, vous pouvez vérifier si l’image a été récupérée avec succès :

kubectl get events

Le résultat doit se présenter comme suit :

14s         Normal    Scheduled          Pod    Successfully assigned default/private-reg2 to minikube
11s         Normal    Pulling            Pod    pulling image "quay.io/<Profile name>/<image name>"
10s         Normal    Pulled             Pod    Successfully pulled image "quay.io/<Profile name>/<image name>"

Pour plus d’informations, consultez la documentation Kubernetes sur la création d’un pod qui utilise votre secret.