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

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 que vous puissiez stocker des images Docker privées, l'instance de VM doit disposer du niveau d'accès de stockage read-write.

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 que vous puissiez stocker des images Docker privées, l'instance de VM doit disposer du niveau d'accès de stockage read-write.

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 Google Cloud Console. 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.

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.

L'environnement flexible crée automatiquement vos images de conteneurs à l'aide de Cloud Build et les stocke dans Container Registry.

Autorisations requises

Si l'instance de VM que vous utilisez pour stocker ou extraire des images 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 les VM se trouvent dans un projet différent ou si elles utilisent un autre compte de service, vous devez accorder le compte de service approprié 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 que vous puissiez stocker des images Docker privées, l'instance de VM doit disposer du niveau d'accès de stockage read-write.

Déployer sur App Engine

Vous pouvez déployer une image hébergée par Container Registry sur App Engine à l'aide de l'outil de ligne de commande gcloud.

Vous pouvez exécuter la commande gcloud beta app gen-config dans le répertoire racine de votre image pour créer automatiquement le fichier app.yaml nécessaire au déploiement dans App Engine. Vous pouvez également écrire le fichier vous-même.

Une fois que vous avez créé le fichier de configuration App Engine, créé votre image Docker et stocké votre image dans Container Registry, vous pouvez la déployer dans 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 Google Cloud Console. 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.