Extraction d'images du registre de conteneurs lors du déploiement de Kubernetes

Découvrez comment créer une clé secrète de registre Docker. Découvrez également comment spécifier l'image à extraire du registre de conteneurs (ainsi que la clé secrète Docker à utiliser) lors du déploiement d'une application vers une grappe.

Lors du déploiement d'une application vers une grappe Kubernetes, vous voudrez généralement qu'une ou plusieurs images soient extraites d'un registre Docker. Dans le fichier manifeste de l'application, vous spécifiez les images à extraire, le registre à partir duquel les extraire et les données d'identification à utiliser lors de l'extraction des images. Le fichier manifeste est également appelé spécification de pod ou fichier deployment.yaml (même si d'autres noms de fichier sont autorisés).

Si vous voulez que l'application récupère des images qui résident dans Oracle Cloud Infrastructure Registry (également connu sous le nom de Container Registry), vous devez effectuer deux étapes :

  • Vous devez utiliser kubectl pour créer une clé secrète de registre Docker. La clé secrète contient les données d'identification Oracle Cloud Infrastructure à utiliser lors de l'extraction de l'image. Lors de la création de clés secrètes, Oracle recommande vivement d'utiliser la dernière version de kubectl (voir la documentation sur kubectl).
  • Vous devez spécifier l'image à extraire du registre de conteneurs, y compris l'emplacement du référentiel et la clé secrète du registre Docker à utiliser, dans le fichier manifeste de l'application.
Note

Le registre de conteneurs est un registre conforme à la norme Open Container Initiative. Par conséquent, vous pouvez stocker tous les artefacts conformes aux spécifications Open Container Initiative, tels que les images Docker, les listes de manifestes (parfois appelées images multi-architecture) et les graphiques Helm. Les instructions de cette rubrique supposent que vous stockez des images Docker et que vous utilisez l'interface de ligne de commande Docker.

Pour créer une clé secrète de registre Docker :

  1. Si vous ne l'avez pas encore fait, effectuez les étapes pour définir le fichier de configuration kubeconfig de la grappe et (si nécessaire) définissez la variable d'environnement KUBECONFIG pour qu'elle pointe vers le fichier. Notez que vous devez configurer votre propre fichier kubeconfig. Vous ne pouvez pas accéder à une grappe à l'aide d'un fichier kubeconfig configuré par un autre utilisateur. Voir Configuration de l'accès à la grappe.
  2. Dans une fenêtre de terminal, entrez :

    kubectl create secret docker-registry <secret-name> --docker-server=<registry-domain> --docker-username=<tenancy-namespace>/<oci-username> --docker-password='<oci-auth-token>' --docker-email=<email-address>

    où :

    • <secret-name> est un nom de votre choix, que vous utiliserez dans le fichier manifeste pour référencer la clé secrète. Par exemple, ocirsecret
    • <registry-domain> inclut une clé de région ou un identificateur de région pour la région de registre de conteneurs que vous utilisez. Par exemple : ocir.us-ashburn-1.oci.oraclecloud.com. Voir Domaine de registre.
    • <tenancy-namespace> est la chaîne d'espace de noms du service Stockage d'objets générée automatiquement pour la location contenant le référentiel dont l'application doit extraire l'image (figurant dans la page Informations sur la location). Par exemple, l'espace de noms de la location acme-dev pourrait être ansh81vru1zp. Notez que, pour certaines locations plus anciennes, la chaîne d'espace de noms peut être identique au nom de la location, tout en minuscules (par exemple, acme-dev).
    • <oci-username> est le nom d'utilisateur à utiliser lors de l'extraction de l'image. Le nom d'utilisateur doit avoir accès à la location spécifiée par <tenancy-namespace>. Par exemple : jdoe@acme.com

      Si votre location est fédérée avec Oracle Identity Cloud Service, utilisez le format <domain-name>/<oci-username>. Pour les utilisateurs fédérés, <domain-name>/<oci-username> s'affiche dans le menu Profil Icône du menu Profil de la console. Par exemple, si votre location est fédérée avec Oracle Identity Cloud Service et que votre nom d'utilisateur est jdoe@acme.com, entrez oracleidentitycloudservice/jdoe@acme.com

    • '<oci-auth-token>' est le jeton d'authentification de l'utilisateur spécifié par <oci-username>. Par exemple, k]j64r{1sJSSF-;)K8 . Si le jeton d'authentification contient des caractères spéciaux (tels que les parenthèses dans cet exemple), ce qui est souvent le cas, entourez le jeton d'authentification de guillemets simples. Sinon, les apostrophes ne sont pas requises.
    • <email-address> est une adresse de courriel. Une adresse de courriel est requise, mais vous pouvez indiquer celle de votre choix. Par exemple, jdoe@acme.com

    Notez que les chaînes contenant des caractères spéciaux (entre parenthèses, par exemple) doivent être encadrées par des apostrophes.

    Par exemple, en combinant les exemples précédents, vous pourriez entrer :

    kubectl create secret docker-registry ocirsecret --docker-server=ocir.us-ashburn-1.oci.oraclecloud.com --docker-username=ansh81vru1zp/jdoe@acme.com --docker-password='k]j64r{1sJSSF-;)K8' --docker-email=jdoe@acme.com

    Après avoir créé la clé secrète Docker, vous pouvez y faire référence dans le fichier manifeste de l'application.

Pour spécifier l'image à extraire du registre de conteneurs, ainsi que la clé secrète Docker à utiliser lors du déploiement d'une application vers une grappe :

  1. Ouvrez le fichier manifeste de l'application dans un éditeur de texte.
  2. Ajoutez les sections suivantes au fichier manifeste :

    1. Ajoutez une section containers qui spécifie le nom et l'emplacement du conteneur à extraire du registre de conteneurs, ainsi que d'autres détails de déploiement.
    2. Ajoutez une section imagePullSecrets au fichier manifeste qui indique le nom de la clé secrète Docker que vous avez créée pour accéder au registre de conteneurs.

    Voici un exemple illustrant à quoi le manifeste peut ressembler lorsque vous avez ajouté les sections containers et imagePullSecrets :

    
    apiVersion: v1
    kind: Pod
    metadata:
      name: ngnix-image
    spec:
      containers:
        - name: ngnix
          image: ocir.us-ashburn-1.oci.oraclecloud.com/ansh81vru1zp/project01/ngnix-lb:latest
          imagePullPolicy: Always
          ports:
          - name: nginx
            containerPort: 8080
            protocol: TCP
      imagePullSecrets:
        - name: ocirsecret
  3. Enregistrez et fermez le fichier manifeste.