Utiliser Container Registry avec Google Cloud

Pour simplifier vos workflows de compilation et de déploiement, certains comptes de service et environnements d'exécution Google Cloud sont préconfigurés avec des autorisations d'accès aux conteneurs stockés dans le même projet.

Cette page récapitule les intégrations courantes avec les produits Google Cloud et les conditions requises pour accéder aux conteneurs.

Conditions générales d'accès

Par défaut, les comptes de service pour certaines intégrations courantes sont configurés avec les autorisations Cloud Storage pour accéder à Container Registry au sein du même projet.

Pour le compte de service utilisé par les VM Compute Engine, y compris les VM des clusters Google Kubernetes Engine, l'accès est basé sur les autorisations IAM et les niveaux d'accès à l'espace de stockage.

Vous devez configurer ou modifier vous-même les autorisations dans les cas suivants :

  • Vous utilisez un compte de service dans un projet pour accéder à Container Registry dans un autre projet.
  • Vous utilisez un compte de service par défaut avec un accès en lecture seule au stockage, mais vous souhaitez extraire et stocker des images.
  • Vous utilisez un compte de service personnalisé pour interagir avec Container Registry.

Pour en savoir plus, consultez les sections spécifiques aux produits.

Cloud Build

Par défaut, le compte de service Cloud Build est autorisé à stocker et à extraire des images lorsque Container Registry se trouve dans le même projet.

Vous devez configurer vous-même les autorisations appropriées dans les cas suivants :

  • Cloud Build se trouve dans un projet différent de celui des dépôts auxquels vous souhaitez que les compilations accèdent.
  • Vos compilations utilisent un compte de service autre que le compte de service Cloud Build par défaut. Dans ce cas, vous devez autoriser le compte de service à accéder à Container Registry.

Compute Engine

Vous pouvez créer des instances de VM à l'aide d'images stockées dans Container Registry.

Autorisations requises

Si l'instance de VM et Container Registry se trouvent dans le même projet Google Cloud, le compte de service par défaut Compute Engine est configuré avec des autorisations pour extraire des images.

Si l'instance de VM se trouve dans un projet différent ou si elle utilise un autre compte de service, vous devez accorder au compte de service les autorisations appropriées pour accéder au bucket de stockage utilisé par Container Registry.

Par défaut, le niveau d'accès read-only est configuré sur une VM Compute Engine pour les buckets de stockage. Pour stocker des images Docker privées, l'instance de VM doit disposer du niveau d'accès à l'espace de stockage read-write.

Pour en savoir plus sur les autorisations et les champs d'application des accès, consultez la section Intégration aux services Google Cloud.

Déployer des images

Lorsque vous créez une VM, vous pouvez y déployer une image. Pour en savoir plus, consultez la documentation Compute Engine sur le déploiement de conteneurs et la création de modèles d'instances de VM.

Instances Compute Engine optimisées pour les conteneurs

Pour découvrir comment démarrer une instance Compute Engine optimisée pour les conteneurs à l'aide d'une image de votre registre, consultez la section Démarrer un conteneur Docker via cloud-config.

Pour en savoir plus, consultez également la page Créer et configurer des instances.

Google Kubernetes Engine

Google Kubernetes Engine utilise le compte de service configuré sur les instances de VM des nœuds de cluster pour stocker et extraire des images.

Autorisations requises

Si le cluster Google Kubernetes Engine et le bucket de stockage Container Registry se trouvent dans le même projet Google Cloud, le compte de service par défaut Compute Engine est configuré avec les autorisations appropriées pour stocker ou extraire des images.

Si le cluster se trouve dans un projet différent ou si les VM du cluster utilisent un autre compte de service, vous devez accorder au compte de service les autorisations appropriées pour accéder au bucket de stockage utilisé par Container Registry

Par défaut, le niveau d'accès read-only est configuré sur une VM Compute Engine pour les buckets de stockage. Pour stocker des images Docker privées, l'instance de VM doit disposer du niveau d'accès à l'espace de stockage read-write.

Pour en savoir plus sur les autorisations et les champs d'application des accès, consultez la section Intégration aux services Google Cloud.

Exécuter une image

Vous pouvez exécuter une image Container Registry sur un cluster Google Kubernetes Engine à l'aide de la commande suivante :

kubectl run [NAME] --image=[HOSTNAME]/[PROJECT-ID]/[IMAGE]:[TAG]

où :

  • [NAME] est le nom de la ressource.
  • [HOSTNAME] est répertorié sous Location dans la console. Il s'agit de l'une des quatre options suivantes : gcr.io, us.gcr.io, eu.gcr.io ou asia.gcr.io.
  • [PROJECT-ID] est l'ID du projet dans la console Google Cloud. Si l'ID du projet contient le signe deux-points (:), consultez la section Projets à l'échelle du domaine.
  • [IMAGE] est le nom de l'image dans Container Registry.
  • [TAG] est le tag qui identifie la version de l'image dans Container Registry. Si vous ne spécifiez pas de tag, Container Registry utilise la valeur du tag par défaut, latest.

Pour en savoir plus sur les commandes Kubernetes, consultez la présentation de kubectl.

Cloud Run

Vous pouvez déployer des images stockées dans Container Registry dans Cloud Run.

Autorisations requises

Pour effectuer un déploiement dans Cloud Run, vous devez disposer du rôle "Propriétaire" ou "Éditeur", ou des rôles "Administrateur Cloud Run" et "Utilisateur du compte de service", ou un autre rôle personnalisé incluant cette liste spécifique d'autorisations.

Déployer des images

Pour en savoir plus sur le déploiement d'une image sur Cloud Run, consultez la documentation de Cloud Run.

Environnement flexible App Engine

Vous pouvez utiliser l'environnement flexible App Engine afin de personnaliser un environnement d'exécution existant (par exemple Java 8) ou de fournir votre propre environnement d'exécution en utilisant une image Docker ou un fichier Dockerfile personnalisés.

Cloud Build vous permet d'automatiser la création de vos conteneurs, de les transférer vers Container Registry et de les déployer sur App Engine.

Autorisations requises

Par défaut, le compte de service par défaut App Engine est autorisé à extraire depuis des dépôts et à transférer vers des dépôts dans le même projet.

Si App Engine se trouve dans un projet différent, vous devez accorder au compte de service App Engine des autorisations pour accéder au dépôt Container Registry.

Déployer sur App Engine

Vous pouvez déployer une image hébergée par Container Registry sur App Engine à l'aide de la Google Cloud CLI.

  1. Créez le fichier de configuration App Engine de votre application.
  2. Créez une image Docker et transférez-la vers votre dépôt. Vous pouvez utiliser Cloud Build pour créer et transférer votre conteneur vers le dépôt.
  3. Déployez votre image sur App Engine en exécutant la commande suivante :

    gcloud app deploy --image-url=[HOSTNAME]/[PROJECT-ID]/[IMAGE]:[TAG]
    

où :

  • [HOSTNAME] est répertorié sous Location dans la console. Il s'agit de l'une des quatre options suivantes : gcr.io, us.gcr.io, eu.gcr.io ou asia.gcr.io.
  • [PROJECT-ID] est l'ID du projet dans la console Google Cloud. Si l'ID du projet contient le signe deux-points (:), consultez la section Projets à l'échelle du domaine.
  • [IMAGE] est le nom de l'image dans Container Registry.
  • [TAG] est le tag qui identifie la version de l'image dans Container Registry. Si vous ne spécifiez pas de tag, Container Registry utilise la valeur du tag par défaut, latest.