Accès aux registres de conteneurs

Les images utilisées par IBM Cloud® Code Engine sont généralement stockées dans un registre qui peut être accessible au public (registre public) ou configuré de sorte à limiter l'accès à un petit groupe d'utilisateurs (registre privé).

Un registre de conteneur, ou registre, est un service qui stocke les images de conteneur. Par exemple, IBM Cloud Container Registry et Docker Hub sont des registres de conteneurs. Un registre de conteneurs peut être public ou privé. Un registre de conteneurs public ne requiert pas de données d'identification pour y accéder. En revanche, l'accès à un registre privé requiert des données d'identification.

Code Engine requiert l'accès aux registres de conteneurs pour effectuer les actions suivantes :

  • Pour extraire (ou "tirer") une image de conteneur afin d'exécuter une application ou un travail
  • Pour stocker une image de conteneur nouvellement créée en tant que sortie d'une génération d'image
  • Pour stocker et extraire des fichiers locaux lorsqu'une génération est exécutée à partir de la source locale

Code Engine gère un grand nombre des détails sous-jacents des interactions entre le système et votre registre.

Pour extraire des images d'un registre, Code Engine utilise un type spécial de secret Kubernetes appelé imagePullSecret. Ce secret d'extraction d'image stocke les données d'identification permettant d'accéder à un registre de conteneur. Lorsque vous ajoutez l'accès à un registre de conteneurs avec Code Engine pour extraire des images, vous créez un secret d'extraction d'image. Pour plus d'informations sur les secrets d'extraction d'images, voir la documentation de Kubernetes.

Types de registres d'images

Les images sont généralement stockées dans un registre qui peut être accessible au public (registre public) ou configuré de sorte à limiter l'accès à un petit groupe d'utilisateurs (registre privé).

Vous pouvez utiliser des registres publics tels qu'un registre Docker Hub public pour vous lancer sur Docker et Code Engine en vue de créer votre première application ou votre premier travail. Toutefois, lorsqu'il s'agit de charges de travail d'entreprise, utilisez un registre privé, tel que celui fourni dans IBM Cloud Container Registry pour protéger vos images d'être utilisées par des utilisateurs non autorisés. Pour les registres privés, utilisez des secrets de registre pour vous assurer que les informations d'identification sont disponibles pour accéder au registre privé.

Types de registres d'images publics et privés
Registry Description
IBM Cloud Container Registry

Avec ce type de registre, vous pouvez créer votre propre dépôt d'images sécurisé sur IBM Cloud Container Registry, où vous pouvez stocker et partager des images en toute sécurité entre les utilisateurs.
Avec IBM Cloud Container Registry, vous pouvez

  • Gérer l'accès aux images de votre compte.
  • Utiliser les images fournies par IBM et les exemples d'applications, tels que IBM Liberty, comme image de base et y ajouter votre propre code d'application.
Tout autre registre privé

Permet de connecter n'importe quel registre privé existant à Code Engine en ajoutant un accès. L'ajout d'un accès permet de sauvegarder en toute sécurité votre URL de registre et vos données d'identification dans un secret Kubernetes.
Avec les registres privés, vous pouvez

  • Utiliser des registres privés existants indépendamment de leur source ( Docker Hub, registres appartenant à l'organisation ou autres registres privés du cloud).
Public Docker Hub

Utilisez ce type de registre pour extraire des images publiques existantes de Docker Hub directement dans vos applications ou travaux Code Engine

Important :

  • Ce type de registre peut ne pas répondre aux exigences de sécurité de votre organisation, telles que la gestion de l'accès, l'analyse de la vulnérabilité ou la confidentialité des applications.
  • Lorsque vous extrayez une image de Docker Hub pour l'utiliser avec des applications ou des travaux dans Code Engine, tenez compte des limites tarifaires de Docker pour les utilisateurs du plan gratuit (non authentifiés). Vous pouvez être confronté à des limites de tirage si vous recevez une erreur 429 qui indique que vous avez atteint votre limite de tirage. Pour augmenter les limites tarifaires, vous pouvez passer à un abonnement Docker Pro ou Team.

Avec public Docker Hub, vous pouvez :

  • Ces images peuvent être référencées directement lorsque vous créez une application ou un travail, aucune configuration supplémentaire n'est nécessaire.
  • Inclure diverses applications open source.

Types de secrets de registre

Pour accéder aux images d'un registre, Code Engine utilise l'un des types de secrets de registre suivants.

  • Code Engine secret géré - Si votre registre utilise un espace de noms IBM Cloud Container Registry qui se trouve dans votre compte, vous pouvez laisser Code Engine créer et gérer le secret du registre pour vous. Dans la console, ce secret de registre créé automatiquement est appelé Code Engine managed secret. Dans l'interface de gestion, le nom d'un secret de registre créé automatiquement est du format ce-auto-icr-private-<region>.
  • Secret géré par l'utilisateur - Il s'agit d'un secret que vous créez et gérez. Vous pouvez accéder aux images à partir de votre compte à l'aide d'une clé d'API ou utiliser un jeton d'accès pour le registre de conteneur de votre choix ; par exemple, Docker Hub. Dans ce cas, le secret de registre répertorié dans la console est le nom de votre secret de registre.

Si votre registre est public et ne nécessite pas d'informations d'identification; par exemple, Code Engine images échantillons dans icr.io/codeengine ou Docker Hub public, vous n'avez pas besoin d'un secret de registre. Dans ce cas, le secret de registre répertorié dans la console est None.

Configuration de droits d'accès aux registres d'images

Si votre registre est public, vous n'avez pas à configurer d'autorités pour extraire les images. Notez qu'extraire des images d'un registre public pendant que vous êtes en cours de démarrage avec Code Engine est acceptable. Utilisez un registre privé pour quand il s'agit de vos charges de travail d'entreprise.

De quelles autorités ai-je besoin?

Pour déterminer les autorités dont vous avez besoin, examinez les cas suivants :

  • Lorsque vous déployez des applications ou exécutez des travaux, Code Engine peut accéder automatiquement aux images qui se trouvent dans votre propre compte.

  • Si vous souhaitez accéder à des images à partir d'un compte partagé, d'autres comptes IBM Cloud ou d'un compte Docker privé, des droits d'accès appropriés doivent vous être attribués.

  • Lorsque vous déployez des applications ou exécutez des travaux et que votre registre utilise un espace de noms IBM Cloud Container Registry qui se trouve dans votre compte, vous pouvez laisser Code Engine créer et gérer automatiquement le secret du registre pour vous, à condition que votre compte dispose des autorisations requises, comme décrit dans le tableau suivant.

    • Dans la console, ce secret de registre est appelé Code Engine managed secret. Cette option est disponible lorsque vous utilisez les flux de travaux de configuration de l'image ou de la spécification des détails de la génération pour créer une image avec Code Engine.
    • Dans l'interface de gestion, ce secret de registre se présente sous la forme suivante : ce-auto-icr-private-<region>. Ce secret de registre est automatiquement créé lorsque vous spécifiez l'option --build-source mais que vous ne fournissez pas l'option --registry-secret avec les commandes app create, app update, job create ou job update.
Autorités d'accès au registre des images
Action Accès au service IAM Description
Extraction d'images Reader accès au service Lorsque vous déployez une image en tant qu'application ou travail, vous devez extraire l'image d'un registre. Pour extraire des images, vous avez besoin d'un accès en lecture. Si le registre est public, vous avez déjà un accès en lecture aux images. Si le registre est privé, un secret de registre est nécessaire.
Envoi d'images Accès au serviceReader etWriter Lorsque vous générez du code source, vous devez envoyer l'image vers un registre. Pour transférer des images dans votre registre, vous devez disposer d'un accès en lecture et en écriture, ainsi que d'un secret de registre.
Création d'un espace de nom Accès au service Reader, WriteretManager Cette action n'est prise en charge que pour IBM Cloud Container Registry.
Code Engine a créé automatiquement un secret de registre Administratoraccès à la plateforme
Reader, Writer, et Manager accès au service
Cette action n'est prise en charge que pour IBM Cloud Container Registry.

Puis-je utiliser un identifiant de service?

Oui, vous pouvez créer un ID de service et lui attribuer des droits. Notez que les ID de service sont également créés automatiquement par l'interface utilisateur de Code Engine lorsque vous créez automatiquement l'accès à IBM Cloud Container Registry. NE supprimez PAS cet ID de service car vous perdrez l'accès aux images dans le registre.

Puis-je accéder à des images dans un autre registre?

Oui. Voici la procédure à suivre.

Puis-je restreindre l'accès à l'extraction à un certain registre régional ou même à un seul espace de noms?

Oui, vous pouvez éditer la règle IAM existante de l'ID de service qui limite le rôle d'accès au service Lecteur à ce registre régional ou à une ressource de registre telle qu'un espace de nom. Avant de personnaliser des règles IAM de registre, vous devez activer les règles IBM Cloud IAM pour IBM Cloud Container Registry.

Accès à des images à partir d'un compte public

Si votre image est stockée dans un référentiel public, tel qu'un référentiel Docker Hub public, il vous suffit de faire directement référence à l'image lorsque vous déployez votre application ou que vous exécutez votre travail. Bien qu'il soit possible de stocker des images dans un registre public lorsque vous commencez à utiliser des applications et des travaux, vous devez stocker vos images d'entreprise dans un registre privé.

Accès à des images de votre compte privé à partir de la console

Si vous accédez à Code Engine à partir d'un compte dont vous êtes propriétaire ou administrateur, Code Engine peut automatiquement appuyer et extraire des images vers et depuis un espace nom IBM Cloud Container Registry dans votre compte lorsque vous créez ou mettez à jour des applications, des travaux ou des générations à partir de la console. Code Engine peut même créer un espace de nom pour vous lorsque vous appuyez sur une image. Pour plus d'informations, reportez-vous aux rubriques suivantes.

Accès à des images à partir de votre compte avec une clé d'API

Si vous accédez à Code Engine avec l'interface de ligne de commande, vous devez d'abord créer une clé d'API IAM, puis sauvegarder cette clé d'API IAM comme accès au registre dans Code Engine.

La procédure suivante permet de créer une clé d'API qui stocke les données d'identification d'un ID utilisateur. Au lieu d'utiliser un ID utilisateur, vous envisagerez peut-être de créer une clé d'API pour un ID de service disposant d'une règle d'accès au service IBM Cloud IAM pour IBM Cloud Container Registry. Si vous choisissez un ID utilisateur pour l'authentification, assurez-vous que l'utilisateur correspond à un ID fonctionnel ou dispose d'un plan au cas où il partirait afin que Code Engine puisse toujours accéder au registre.

Création d'une clé d'API à partir de la console

Pour créer une clé d'API IAM IBM Cloud à partir de la console :

  1. Lancez IAM.

  2. Sélectionnez Clés d'API.

  3. Cliquez sur Créer une clé d'API IBM Cloud.

  4. Entrez un nom et une description facultative pour votre clé d'API, puis cliquez sur Créer.

  5. Copiez la clé d'API ou cliquez sur Télécharger pour la sauvegarder.

    Vous ne pourrez plus réafficher cette clé d'API, par conséquent, prenez soin de l'enregistrer dans un endroit sûr.

Maintenant que vous avez créé votre clé d'API, enregistrez-la comme accès au registre.

Création d'une clé d'API via l'interface de ligne de commande

Pour créer une clé d'API IAM IBM Cloud via l'interface de ligne de commande, exécutez la commande iam api-key-create. Par exemple, pour créer une clé API appelée cliapikey avec une description de My CLI API key et l'enregistrer dans un fichier appelé key_file, exécutez la commande suivante :

ibmcloud iam api-key-create cliapikey -d "My CLI API key" --file key_file

Si vous choisissez de ne pas sauvegarder votre clé dans un fichier, vous devez enregistrer la clé d'API qui s'affiche lors de sa création. Vous ne pourrez pas la récupérer ultérieurement.

Maintenant que vous avez créé votre clé d'API, enregistrez-la comme accès au registre.

Accès à des images dans un compte partagé

Pour accéder aux images à partir de IBM Cloud Container Registry dans un compte partagé, vous devez posséder l'affectation d'uneautorité appropriée.

Si vous prévoyez de déployer des applications et d'exécuter des travaux à partir du compte partagé, Code Engine peut extraire ou envoyer des images pour vous lorsque vous déployez votre application ou créez votre travail.

Si vous souhaitez extraire des images du compte partagé vers votre compte privé, vous devez être autorisé à accéder à IBM Cloud Container Registry.

Accès à des images dans un autre compte

Vous pouvez affecter des règles d'accès IAM IBM Cloud à des utilisateurs ou à un ID de service pour limiter les droits à des espaces de nom d'images de registre ou des actions (telles que push ou pull) spécifiques. Ensuite, créez une clé d'API et stockez ces données d'identification de registre dans Code Engine.

Par exemple, pour accéder à des images dans d'autres comptes IBM Cloud, créez une clé d'API qui stocke les données d'identification IBM Cloud Container Registry d'un utilisateur ou d'un ID de service dans ce compte. Ensuite, dans Code Engine, utilisez cette clé pour créer un accès dans votre compte.

Accès à des images dans un compte Docker Hub privé

Pour accéder à des images dans un compte Docker Hub privé, créez un accès au registre en fournissant votre mot de passe ou un jeton d'accès. En utilisant un jeton d'accès, vous pourrez plus facilement octroyer et révoquer un accès à votre compte Docker Hub sans requérir un changement de mot de passe. Pour plus d'informations sur les jetons d'accès et Docker Hub, voir Créer et gérer des jetons d'accès.

Après avoir choisi d'utiliser votre mot de passe directement ou de créer un jeton d'accès, créez votre accès au registre.

Ajout d'un accès au registre à Code Engine

Aux fins de configurer l'accès à IBM Cloud Container Registry dans un autre compte IBM Cloud, d'extraire des images d'un compte Docker Hub privé ou d'extraire ou d'envoyer des images à l'aide de l'interface de ligne de commande Code Engine, vous pouvez utiliser la clé d'API IBM ou le mot de passe ou jeton d'accès Docker Hub en vue de créer un accès au registre via Code Engine de sorte qu'il stocke votre clé d'authentification ou votre jeton pour vous.

Ajout d'un accès au registre à partir de la console

Avant de commencer, créez un projet.

  1. Une fois que votre projet est en statut actif, cliquez sur le nom de votre projet sur la page Code Engine Projects.
  2. Sur la page Composants, cliquez sur Secrets et mappes de configuration.
  3. Sur la page Secrets et mappes de configuration, cliquez sur Créer pour créer votre secret.
  4. Dans la page Créer un secret ou une mappe de configuration, procédez comme suit:
    1. Sélectionnez Registry secret et cliquez sur Next.
    2. Indiquez un nom; par exemple, mysecret-registry.
    3. Indiquez le registre cible de ce secret, tel que IBM Cloud Container Registry ou Docker Hub.
    4. Indiquez l'emplacement du registre.
    5. Indiquez un nom d'utilisateur. Si ce secret concerne IBM Cloud Container Registry, le nom d'utilisateur est iamapikey. Si ce secret est destiné à Docker Hub, il s'agit de votre ID Docker.
    6. Entrez les données d'identification pour le nom d'utilisateur. Pour IBM Cloud Container Registry, utilisez votre clé d'API IAM. Pour Docker Hub, vous pouvez utiliser votre mot de passe Docker Hub ou un jeton d'accès. Pour les autres registres cible, indiquez le mot de passe ou la clé d'API pour le nom d'utilisateur.
    7. Cliquez sur Créer pour créer le secret.

Maintenant que votre secret est créé à partir de la console, allez à la page Secrets et cartes de configuration pour voir la liste des secrets et cartes de configuration définis. Vous pouvez appliquer des filtres pour personnaliser la liste en fonction de vos besoins.

Vous pouvez ajouter un accès à un registre de conteneur lorsque vous créez une application ou un travail ou lorsque vous générez une image. Cliquez sur Configurer l'image et indiquez l'image du conteneur à exécuter, y compris le registre dans lequel l'image est stockée et l'accès au registre à utiliser pour extraire l'image.

Ajout d'un accès au registre via l'interface de ligne de commande

À partir de la version de l'interface de programmation 1.42.0, la définition et l'utilisation des secrets dans l'interface de programmation sont unifiées sous le groupe de commandes secret sous le groupe de commandes Voir les commandes ibmcloud ce secret. Utilisez l'option --format pour spécifier la catégorie du secret, par exemple basic_auth, generic, hmac, ssh, tls, ou registry. Bien que vous puissiez continuer à utiliser le groupe de commande registry vous pouvez continuer à utiliser le groupe de commande, mais vous pouvez aussi tirer parti du groupe de commande unifié secret unifié. Pour créer un secret permettant d'accéder au registre d'un conteneur, utilisez la commande ibmcloud ce secret create --format registry pour créer un secret d'accès à un registre de conteneurs. Pour en savoir plus sur le travail avec les secrets dans Code Engine, voir Travailler avec des secrets.

Pour ajouter l'accès au Hub IBM Cloud Container Registry ou Docker à l'aide de la CLI, utilisez la commande secret create --format registry commande. Cette commande requiert le nom du secret du registre, le site URL du serveur de registre, ainsi que le nom d'utilisateur et le mot de passe permettant d'accéder au serveur de registre, et autorise également d'autres arguments facultatifs. Pour une liste complète des options, voir la commande ibmcloud ce secret create pour obtenir la liste complète des options.

Par exemple, la commande suivante crée un accès de registre à une instance IBM Cloud Container Registry appelée myregistry qui se trouve sur le serveur de registre us.icr.io:

ibmcloud ce secret create --format registry --name myregistry --server us.icr.io --username iamapikey --password API_KEY

Exemple de sortie

Creating registry secret 'myregistry'...
OK

Le tableau suivant résume les options utilisées avec la commande secret create --format registry dans cet exemple. Pour plus d'informations sur la commande et ses options, voir la commande ibmcloud ce secret create pour plus d'informations.

Description de la commande
Option Description
--name

Nom du secret de registre. Utilisez un nom unique dans le projet. Cette valeur est requise.
-Le nom doit commencer et se terminer par un caractère alphanumérique en minuscules.

  • Le nom doit comporter 253 caractères ou moins et peut contenir des lettres minuscules, des nombres, des points (.) et des traits d'union (-).
--server Entrez l'URL du serveur de registre. Pour Container Registry, le nom du serveur est <region>.icr.io. Par exemple, us.icr.io. Pour Docker Hub, la valeur est https://index.docker.io/v1/.
--username Entrez le nom d'utilisateur permettant d'accéder au serveur de registre. Pour Container Registry, il s'agit de iamapikey. Pour Docker Hub, il s'agit de votre ID Docker.
--password Entrez le mot de passe . Pour Container Registry, il s'agit de votre clé d'API. Pour Docker Hub, vous pouvez utiliser votre mot de passe Docker Hub ou un jeton d'accès.

Autorisation de l'accès à Container Registry à l'aide d'un ID de service

Avant de pouvoir ajouter un accès à un ID de service dans un autre compte, vous devez d'abord autoriser l'accès à l'ID de service.

Lorsque vous créez un ID de service, vous pouvez restreindre l'accès à un registre régional IBM Cloud Container Registry ou même à un espace de nom spécifique sur ce compte IBM Cloud Container Registry.

Autorisation de l'accès à Container Registry à l'aide d'un ID de service à partir de la console

Pour extraire ou insérer des images depuis ou vers IBM Cloud Container Registry, vous devez créer une ID de service, créer une règle d'accès pour l'ID de service, puis créer une clé d'API pour stocker les données d'identification.

Etape 1 Créer ou identifier un ID de service et l'autoriser à accéder au service IBM Cloud Container Registry

  1. Lancez IAM.
  2. Sélectionnez ID de service.
  3. Si vous souhaitez utiliser un ID de service dont vous disposez, sélectionnez-le. Sinon, sélectionnez Créer, entrez un nom et une description, puis cliquez sur Créer.
  4. Dans la page ID de service, dans la section Règles d'accès, sélectionnez Affecter un accès.
  5. Dans la section Affecter un ID de service supplémentaire à l'ID de service :
    1. Sélectionnez Registre de conteneur comme type d'accès. Cliquez sur Suivant.
    2. Sélectionnez le type d'accès: Toutes les ressources ou Ressources spécifiques. Si vous spécifiez Ressources spécifiques, vous pouvez ajouter des attributs en fonction du groupe de ressources, de la zone géographique, de la région, du type de ressource, de l'ID de ressource ou du nom de ressource pour restreindre davantage l'accès. Si vous sélectionnez un certain groupe de ressources, veillez à sélectionner l'accès Afficheur pour l'accès Groupe de ressources. Cliquez sur Next.
    3. Dans la section Rôles et actions, sélectionnez le type d'accès que vous souhaitez accorder. Si vous prévoyez d'utiliser uniquement des images pour vos applications et vos travaux, sélectionnez Lecteur. Si vous souhaitez envoyer le code source et les images à Container Registry, sélectionnez également Writer. Cliquez sur Examiner.
    4. Cliquez sur Ajouter, puis sur Affecter.

Etape 2 Activation de la reconnaissance Container Registry

Pour permettre à la console Code Engine de reconnaître automatiquement le registre de conteneur, vous devez authentifier l'ID de service auprès du IAM Identity Service.

  1. Dans la page ID de service, dans la section Règles d'accès, sélectionnez Affecter un accès.
  2. Dans la section Affecter un ID de service supplémentaire à l'ID de service :
    1. Sélectionnez IAM Identity Service pour le type d'accès. Cliquez sur Suivant.
    2. Sélectionnez Ressources spécifiques pour la portée de la ressource. Sélectionnez Type de ressource comme type d'attribut, conservez string equals comme opérateur et entrez serviceid comme valeur. Cliquez sur Ajouter une condition.
    3. Sélectionnez ID ressource comme type d'attribut, conservez string equals comme opérateur et placez l'identificateur de votre ID de service. Vous trouverez votre identifiant de service sur la page Détails de l'identifiant de service ou dans le navigateur URL lors de la configuration. Cliquez sur Suivant.
    4. Dans la section Rôles et actions, sélectionnez l'accès Opérateur de plateforme. Cliquez sur la revue
    5. Cliquez sur Ajouter, puis sur Affecter.

Etape 3 : Créer une clé d'API pour un ID de service

Créez une clé d'API pour un ID de service.

  1. Sur la page ID de service, sélectionnez Clés d'API, puis Créer.

  2. Entrez un nom et une description facultative pour votre clé d'API, puis cliquez sur Créer.

  3. Copiez la clé d'API ou cliquez sur Télécharger pour la sauvegarder.

    Vous ne pourrez plus réafficher cette clé d'API, par conséquent, prenez soin de l'enregistrer dans un endroit sûr.

Maintenant que vos règles d'accès sont en place pour votre ID de service et votre clé d'API créée, vous pouvez Ajouter un accès à Code Engine pour extraire des images de votre registre de conteneurs.

Autorisation d'accès à Container Registry via l'interface de ligne de commande

Pour extraire des images de IBM Cloud Container Registry dans un autre compte, vous devez créer un ID de service, créer des règles d'accès pour l'ID de service, puis créer une clé d'API pour stocker vos données d'identification.

  1. Créez un ID de service IBM Cloud IAM pour votre projet qui sera utilisé pour les règles IAM et les données d'identification de clé d'API dans le secret d'extraction d'image à l'aide de la commande iam service-id-create. Veillez à indiquer une description pour l'ID de service, qui vous aidera à retrouver cet ID par la suite, par exemple en y incluant le nom du projet. Pour obtenir la liste complète de la commande iam service-id-create et de ses options, voir la commande ibmcloud iam service-id-create.

    Par exemple, la commande suivante crée un ID de service appelé codeengine-myproject-id avec la description Service ID for IBM Cloud Container Registry in Code Engine project myproject :

    ibmcloud iam service-id-create codeengine-myproject-id --description "Service ID for IBM Cloud Container Registry in Code Engine project my proj"
    
  2. Créez une règle IBM Cloud personnalisée pour votre ID de service qui octroie un accès à IBM Cloud Container Registry à l'aide de la commande iam service-policy-create. Pour obtenir la liste complète de la commande iam service-policy-create et de ses options, voir la commande ibmcloud iam service-policy-create.

    Par exemple, la commande suivante crée une règle pour l'ID de service codeengine-myproject-id avec le rôle Reader :

    ibmcloud iam service-policy-create codeengine-myproject-id --roles Reader --service-name container-registry
    

    Le tableau suivant résume les options utilisées avec la commande iam service-policy-create dans cet exemple. Pour plus d'informations sur la commande et ses options, voir la commande ibmcloud iam service-policy-create pour plus d'informations.

    composants de la commande iam service-policy-create
    Option Description
    <service_ID> Obligatoire. Remplacez par l'ID service codeengine-<project_name>-id que vous avez créé précédemment.
    --roles <service_access_role> Obligatoire. Entrez le rôle d'accès au service pour IBM Cloud Container Registry auquel vous voulez définir la portée d'accès de l'ID de service. Les valeurs possibles sont Reader, Writer et Manager. Si vous extrayez des images, l'accès Reader est suffisant. Pour plus d'informations, voir Configuration de droits d'accès aux registres d'images.
    --service-name <container-registry> Obligatoire. Entrez container-registry afin de créer une règle IAM pour IBM Cloud Container Registry.
  3. Créez une règle de service personnalisée pour autoriser l'accès au service iam-identity de sorte que Code Engine puisse extraire la clé d'API pour votre ID de service à l'aide de la commande iam service-policy-create.

    Par exemple, créez une règle pour l'ID de service codeengine-myproject-id avec le rôle Operator :

    ibmcloud iam service-policy-create codeengine-myproject-id --roles Operator --service-name iam-identity
    

    Le tableau suivant résume les options utilisées avec la commande iam service-policy-create dans cet exemple. Pour plus d'informations sur la commande et ses options, voir la commande ibmcloud iam service-policy-create pour plus d'informations.

    composants de la commande iam service-policy-create
    Option Description
    <service_ID> Obligatoire. Remplacez par l'ID service codeengine-<project_name>-id que vous avez créé précédemment.
    --roles <platform_access_role> Obligatoire. Entrez le rôle d'accès à la plateforme auquel vous voulez définir la portée d'accès de l'ID de service. Les valeurs possibles sont Administrator, Editor, Operator et Viewer. Votre ID de service nécessite Operator ou un niveau d'accès plus élevé.
    --service-name <iam-identity> Obligatoire. Entrez iam-identity afin de créer une règle IAM pour les services d'identité IAM.
  4. Créez une clé d'API pour l'ID de service à l'aide de la commande iam service-api-key-create. Pour obtenir la liste complète de la commande iam service-api-key-create et de ses options, voir la commande ibmcloud iam service-api-key-create. Nommez la clé de l'API avec un nom similaire à votre ID de service et incluez l'ID de service que vous avez créé précédemment, codeengine-<project_name>-id. Veillez à indiquer une description pour la clé d'API pour vous aider à la retrouver par la suite.

    Par exemple, la commande suivante crée une clé appelée codeengine-myproject-key pour l'ID de service codeengine-myproject-id avec une description de API key for service ID codeengine-myproject-id for Code Engine myproject:

    ibmcloud iam service-api-key-create codeengine-myproject-key codeengine-myproject-id --description "API key for service ID codeengine-myproject-id for Code Engine myproject"
    

    Exemple de sortie

    Please preserve the API key! It cannot be retrieved after it's created.
    
    Name          codeengine-myproject-key
    Description   API key for service ID codeengine-myproject-id for Code Engine myproject
    Bound To      crn:v1:bluemix:public:iam-identity::a/1bb222bb2b33333ddd3d3333ee4ee444::serviceid:ServiceId-ff55555f-5fff-6666-g6g6-777777h7h7hh
    Created At    2019-02-01T19:06+0000
    API Key       i-8i88ii8jjjj9jjj99kkkkkkkkk_k9-llllll11mmm1
    Locked        false
    UUID          ApiKey-222nn2n2-o3o3-3o3o-4p44-oo444o44o4o4
    

    Vous ne pourrez plus réafficher cette clé d'API, par conséquent, prenez soin de l'enregistrer dans un endroit sûr.

    Maintenant que vous avez mis en place vos règles d'accès pour votre ID de service et que votre clé d'API est créée, vous pouvez Ajouter un accès à Code Engine pour extraire des images de votre registre de conteneurs.

Contrôle de l'accès à Container Registry pour les charges de travail Code Engine

Supposons que vous souhaitiez contrôler l'accès à IBM Cloud Container Registry lorsque Code Engine extrait des images. Par exemple, vous souhaitez contrôler l'accès à Container Registry à des adresses IP spécifiques. Tenez compte des approches suivantes.

  • Utilisez une restriction basée sur le contexte. En utilisant une restriction basée sur le contexte, si les adresses IP de votre projet Code Engine changent, vous n'avez pas besoin de modifier votre accès. Vous pouvez restreindre l'accès à Container Registry à une zone réseau, où votre zone réseau inclut Code Engine et tout élément nécessitant un accès au registre.

  • Désactivez l'accès public à IBM Cloud Container Registry et assurez-vous que Code Engine utilise les noeuds finaux privés à la place des noeuds finaux publics. Voir Sécurisation de votre connexion à Container Registry.

  • Pour contrôler l'accès par une plage d'adresses IP spécifique, utilisez un noeud final d'API pour extraire les adresses IP de votre projet Code Engine particulier. Il est important de noter que ces adresses IP sont susceptibles d'être modifiées et que vous devez prendre les mesures appropriées lorsque cela se produit. Voir Code Engine adresses IP publiques et privées et Comment puis-je ajouter mon application Code Engine à une liste autorisée?

Remarques sur les images de votre registre

Le nom de votre image utilisée pour votre application ou votre travail doit être dans l'un des formats suivants.

  • REGISTRY/NAMESPACEorDOCKERUSERorDOCKERORG/REPOSITORY:TAGREGISTRY et TAG sont facultatifs. Si REGISTRY n'est pas spécifié, la valeur par défaut est docker.io. Si TAG n'est pas spécifié, n'incluez pas le signe deux-points (:). La valeur par défaut pour TAG est latest.
  • REGISTRY/NAMESPACEorDOCKERUSERorDOCKERORG/REPOSITORY@IMAGEIDREGISTRY est facultatif. Si REGISTRY n'est pas spécifié, la valeur par défaut est docker.io et ibm en tant qu'organisation Docker.
Règles pour le nom de l'image
Composant Caractères autorisés Longueur Règles supplémentaires
REGISTRY a-zA-Z0-9 -_. --__ 1-253 (0-127Periods)(label:1-63,noDashOnEnd)
NAMESPACE a-z 0-9 -_ --__ 4-30 (start/end with letterOrNumber)
DOCKERUSERorDOCKERORG a-z 0-9 4-30
REPOSITORY a-z 0-9 -_. / 2-255 (start/end with letterOrNumber)
TAG a-zA-Z0-9 -_. --__.. 0-128 (NOT start with periodOrDash)
IMAGEID a-z 0-9 : (startwith sha256: noOtherColon)

Les parties du nom de l'image doivent répondre aux critères suivants.

  • REGISTRY doit comporter 253 caractères ou moins et peut contenir des lettres minuscules ou majuscules, des chiffres, des points (.), des traits d'union (-) et des traits de soulignement (_). N'utilisez pas de tiret (.) comme dernier caractère. N'utilisez pas plus de 127 points (.) et les libellés entre eux peuvent comporter entre 1 et 63 caractères.
  • NAMESPACE doit comporter entre 4 et 30 caractères et doit commencer et se terminer par une lettre minuscule ou un nombre. NAMESPACE peut contenir des caractères alphanumériques en minuscules, des traits d'union (-) et des traits de soulignement (_).
  • DOCKERUSERorDOCKERORG peut être utilisé pour les registres Docker à la place de NAMESPACE. Indiquez votre nom d'utilisateur Docker ou votre organisation Docker. Votre nom d'utilisateur et votre organisation Docker doivent comporter entre 4 et 30 caractères et contenir uniquement des caractères alphanumériques en minuscules ou des chiffres.
  • REPOSITORY doit comporter entre 2 et 255 caractères et doit commencer et se terminer par une lettre minuscule ou un nombre. REPOSITORY peut contenir des caractères alphanumériques en minuscules, des barres obliques (/), des points (.), des traits d'union (-) et des traits de soulignement (_).
  • TAG doit comporter entre 0 et 128 caractères et peut contenir des lettres minuscules ou majuscules, des chiffres, des points (.), des traits d'union (-) et des traits de soulignement (_). Le TAG ne doit pas commencer par un point ou un tiret. Si vous n'incluez pas de TAG, n'incluez pas non plus le signe deux-points.
  • IMAGEID est préfixé avec sha256: et peut contenir des lettres minuscules et des chiffres.