Utilisation d'une référence de registre dynamique

Le site IBM Cloud Hyper Protect Virtual Servers pour VPC est obsolète. À partir du 28 février 2026, vous ne pourrez plus créer de nouvelles instances. Les instances existantes sont prises en charge jusqu'au 20 février 2027. Toutes les instances qui existeront encore à cette date seront supprimées. Vous pouvez redéployer vos charges de travail en utilisant IBM Confidential Computing Container Runtime(anciennement connu sous le nom de Hyper Protect Virtual Servers ) ou IBM Confidential Computing Container Runtime for Red Hat Virtualization Solutions(anciennement connu sous le nom de Hyper Protect Container Runtime for Red Hat Virtualization Solutions). Pour plus d'informations sur la migration des données, voir le guide Migration. Pour plus d'informations, voir l'annonce de dépréciation du service.

Vous pouvez suivre ce tutoriel pour apprendre à utiliser une référence de registre dynamique dans le contrat.

Référence de registre explicite

En règle générale, le registre Docker est référencé par le biais de la version complète de Docker URL dans le fichier de composition. Voir l'exemple suivant :

services:
  helloworld:
    image: docker.io/library/hello-world@sha256:53f1bbee2f52c39e41682ee1d388285290c5c8a76cc92b42687eecf38e0af3f0

Dans l'exemple, docker.io/library/ est le préfixe de registre, hello-world est l'identificateur de l'image OCI dans ce registre et sha256:53f1bbee2f52c39e41682ee1d388285290c5c8a76cc92b42687eecf38e0af3f0 est l'identificateur unique de la version de l'image.

Dans ce cas, le rôle du fournisseur de charge de travail décide du registre (et des informations d'identification associées), car la référence au registre et les informations d'identification font partie de la section « charge de travail » du contrat.

Référence de registre dynamique

Dans certains cas d'utilisation, le registre n' est pas connu lorsque la section de charge de travail est pré-cryptée. Par exemple, lorsque le fournisseur de charge de travail souhaite autoriser le déployeur à utiliser un miroir de registre ou un registre de conteneurs privé.

Dans ce cas, il est possible de remplacer dynamiquement le registre et les informations d'identification de récupération. Cet effort doit être coordonné entre le fournisseur de la charge de travail et le déployeur.

L'approche par modèles ne fonctionne que pour les charges de travail bas ées sur la composition et uniquement pour les images référencées via un condensé. Les charges de travail basées sur DCT ne sont pas prises en charge.

Fournisseur de charge de travail

Le fournisseur de charge de travail marque le registre comme étant dynamique en utilisant une variable de remplacement dans le fichier docker compose:

services:
  helloworld:
    image: ${REGISTRY}/hpse-docker-hello-world-s390x@sha256:43c500c5f85fc450060b804851992314778e35cadff03cb63042f593687b7347

Le résumé de l'image est identique dans tous les registres, ce qui permet au fournisseur de charge de travail de verrouiller une version spécifique de l'image en définissant la clé, indépendamment du registre utilisé. L'utilisation de jetons dans le fichier de composition est une fonction native de la spécification de composition.

Désormais, le fournisseur de charge de travail peut préparer (chiffrer) la section de charge de travail sans spécifier les secrets d'extraction pour ce registre.

Déployeur

Le déployeur saisit les informations manquantes concernant le registre et les secrets de récupération associés.

Le registre est défini en tant que variable d'environnement. Le déployeur et le fournisseur de charge de travail peuvent tous deux fournir des éléments à l'environnement global, et ces éléments sont superposés, la charge de travail ayant la priorité.

Les informations d'identification sont transmises par le biais d'une section auth dans la partie du contrat relative à l'environnement. Tout comme les variables d'environnement, ces auth sections sont superposées, la section de charge de travail ayant la priorité.

---
  ---
  env:
    type: env
    auths:
      de.icr.io:
        username: xxx
        password: yyy
    env:
      REGISTRY: de.icr.io