Déployer des images de conteneurs

Cette page explique comment déployer de nouveaux services et de nouvelles révisions dans Cloud Run for Anthos.

Avant de commencer

Pour utiliser Google Cloud CLI, vous devez d'abord installer et configurer les outils de ligne de commande.

Se connecter aux clusters GKE

Avant de pouvoir déployer des services sur Cloud Run for Anthos, vous devez vous connecter à votre cluster GKE.

Bouton "Connexion"

Pour en savoir plus sur la connexion à vos clusters GKE, y compris sur les options supplémentaires, consultez les pages suivantes:

Autorisations requises pour déployer

Vous devez disposer des autorisations nécessaires pour créer, mettre à jour et supprimer le groupe d'API serving.knative.dev et le genre Service. En outre, vous devez posséder UN des rôles IAM suivants :

Images que vous pouvez déployer

La taille applicable à l'image de conteneur que vous pouvez déployer est illimitée.

Vous pouvez utiliser des conteneurs de n'importe quel registre de conteneurs, tel que Docker Hub. Pour en savoir plus sur le déploiement d'images privées à partir de registres différents de Container Registry ou Artifact Registry, consultez la page Déployer des images de conteneurs privées à partir d'autres registres de conteneurs.

Déployer un nouveau service

Vous pouvez spécifier une image de conteneur avec un tag (par exemple, gcr.io/my-project/my-image:latest) ou avec un condensé exact (par exemple, gcr.io/my-project/my-image@sha256:41f34ab970ee...).

Le déploiement d'un service pour la première fois crée sa première révision. Notez que les révisions sont immuables. Si vous déployez à partir d'un tag d'image de conteneur, il sera transformé en condensé et la révision desservira toujours ce condensé.

Vous pouvez déployer un conteneur à l'aide de la console Google Cloud, de Google Cloud CLI ou d'un fichier de configuration YAML.

Cliquez sur l'onglet pour obtenir des instructions concernant l'utilisation de l'outil de votre choix.

Configuration de l'emplacement par défaut de gcloud

Si vous avez déjà configuré un emplacement dans la configuration default de Google Cloud CLI, vos commandes gcloud utilisent ces valeurs par défaut, y compris :

  • compute/region
  • compute/zone
  • run/cluster
  • run/cluster_location
  • run/platform
  • run/region

Exécutez la commande gcloud config suivante pour afficher vos paramètres pour la configuration default :

gcloud config configurations describe default

Console

Pour déployer une image de conteneur, procédez comme suit :

  1. Accédez à Cloud Run for Anthos dans la console Google Cloud :

    Accéder à Cloud Run pour Anthos

  2. Cliquez sur Create service (Créer un service) pour afficher la page Créer un service.

    Dans le formulaire :

    1. Dans le menu déroulant, sélectionnez l'un des clusters GKE disponibles pour votre service.

    2. Saisissez le nom de service souhaité. Les noms de service doivent être uniques par région et par projet ou par cluster. Vous ne pourrez pas les modifier par la suite.

    3. Sous Connectivité :

      • Sélectionnez Interne si vous souhaitez limiter l'accès aux autres services Cloud Run pour Anthos ou aux services de votre cluster qui utilisent Istio.
      • Sélectionnez Externe pour autoriser l'accès externe à votre service.

      Sachez que vous pouvez modifier l'option de connectivité à tout moment, comme décrit sur la page Modifier les paramètres de connectivité du service.

    4. Cliquez sur Next (Suivant) pour passer à la deuxième page du formulaire de création de service :

      Image

      Dans le formulaire :

      1. Dans la zone de texte URL de l'image du conteneur, indiquez l'URL d'une image d'un registre compatible, par exemple : us-docker.pkg.dev/cloudrun/container/hello:latest

      2. Vous pouvez également cliquer sur Show Advanced Settings (Afficher les paramètres avancés) et sur les onglets suivants pour définir les éléments suivants :

      3. Cliquez sur Create (Créer) pour déployer l'image sur Cloud Run pour Anthos et attendez la fin du déploiement.

    Vous venez de déployer un service sur un cluster compatible avec Cloud Run pour Anthos.

Ligne de commande

Pour déployer une image de conteneur, procédez comme suit :

  1. Exécutez la commande gcloud run deploy :

    gcloud run deploy SERVICE --image IMAGE_URL

    • Remplacez SERVICE par le nom du service sur lequel effectuer le déploiement. Si le service spécifié n'existe pas, un nouveau service est créé.

    • Remplacez IMAGE_URL par une référence à l'image de conteneur, par exemple gcr.io/cloudrun/hello.

    • Options de déploiement supplémentaires :

      • Pour effectuer un déploiement dans un espace de noms autre que celui par défaut, vous devez spécifier cet espace de noms à l'aide du paramètre --namespace.

      • Pour effectuer un déploiement sur un emplacement autre que la configuration par défaut, vous devez spécifier les éléments name et location du cluster avec les paramètres --cluster et --cluster-location :

        gcloud run deploy SERVICE --cluster CLUSTER-NAME --cluster-location CLUSTER-LOCATION
      • Vous pouvez définir les options de connectivité à l'aide de l'option --connectivity, comme décrit dans la section Modifier les paramètres de connectivité du service afin de spécifier un accès interne ou externe.

      • Pour Cloud Run for Anthos sur VMware, vous devez inclure le paramètre --kubeconfig et spécifier votre fichier de configuration :

        gcloud run deploy SERVICE --image IMAGE_URL --kubeconfig KUBECONFIG-FILE

  2. Patientez jusqu'à la fin du déploiement. Une fois l'opération achevée, un message de réussite indiquant l'URL du service déployé s'affiche.

YAML

Vous pouvez stocker votre spécification de service dans un fichier YAML, puis la déployer à l'aide de Google Cloud CLI.

  1. Créez un fichier service.yaml avec le contenu suivant :

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
    spec:
      template:
        spec:
          containers:
          - image: IMAGE

    Remplacer

    • SERVICE par le nom de votre service Cloud Run pour Anthos ;
    • IMAGE par l'URL de votre image de conteneur

    Vous pouvez également spécifier d'autres éléments de configuration, tels que des variables d'environnement ou des limites de mémoire.

  2. Déployez le nouveau service à l'aide de la commande suivante :

    gcloud run services replace service.yaml

Déployer une nouvelle révision d'un service existant

Vous pouvez déployer une nouvelle révision à l'aide de Google Cloud Console, de la ligne de commande gcloud ou d'un fichier de configuration YAML.

Notez que la modification des paramètres de configuration entraîne la création d'une révision, même si l'image du conteneur ne change pas. Chaque révision créée est immuable.

Cliquez sur l'onglet pour obtenir des instructions concernant l'utilisation de l'outil de votre choix.

Console

Pour déployer une nouvelle révision d'un service existant, procédez comme suit :

  1. Accédez à Cloud Run for Anthos dans la console Google Cloud :

    Accéder à Cloud Run pour Anthos

  2. Recherchez le service que vous souhaitez mettre à jour dans la liste des services, puis cliquez dessus pour en afficher les détails.

  3. Cliquez sur MODIFIER ET DÉPLOYER LA NOUVELLE RÉVISION. Le formulaire de déploiement de la révision s'affiche :

    Image

  4. Si nécessaire, fournissez l'URL de la nouvelle image de conteneur que vous souhaitez déployer.

  5. Vous pouvez également définir les éléments suivants :

  6. Pour envoyer l'ensemble du trafic vers la nouvelle révision, cochez la case intitulée Diffuser immédiatement la révision. Pour déployer progressivement une nouvelle révision, décochez cette case : le trafic ne sera pas envoyé à la nouvelle révision. Suivez les instructions pour les déploiements progressifs à l'issue du déploiement.

  7. Cliquez sur DÉPLOYER et attendez la fin du déploiement.

Ligne de commande

Pour déployer une image de conteneur, procédez comme suit :

  1. Exécutez la commande gcloud run services update :

    gcloud run services update SERVICE --image IMAGE_URL
    • Un suffixe de révision est automatiquement attribué à chaque révision. Si vous souhaitez spécifier votre propre suffixe de révision, ajoutez le paramètre --revision-suffix.

    • Remplacez SERVICE par le nom du service sur lequel effectuer le déploiement. Si le service spécifié n'existe pas, un nouveau service est créé.

    • Remplacez IMAGE_URL par une référence à l'image de conteneur, par exemple gcr.io/cloudrun/hello.

    • Options de déploiement supplémentaires :

      • Pour effectuer un déploiement dans un espace de noms autre que celui par défaut, vous devez spécifier cet espace de noms à l'aide du paramètre --namespace.

      • Pour effectuer un déploiement sur un emplacement autre que la configuration par défaut, vous devez spécifier les éléments name et location du cluster avec les paramètres --cluster et --cluster-location :

        gcloud run deploy SERVICE --cluster CLUSTER-NAME --cluster-location CLUSTER-LOCATION
      • Vous pouvez définir les options de connectivité à l'aide de l'option --connectivity, comme décrit dans la section Modifier les paramètres de connectivité du service afin de spécifier un accès interne ou externe.

      • Pour Cloud Run for Anthos sur VMware, vous devez inclure le paramètre --kubeconfig et spécifier votre fichier de configuration :

        gcloud run deploy SERVICE --image IMAGE_URL --kubeconfig KUBECONFIG-FILE

  2. Patientez jusqu'à la fin du déploiement. Une fois l'opération achevée, un message de réussite indiquant l'URL du service déployé s'affiche.

YAML

Vous pouvez télécharger la configuration d'un service existant dans un fichier YAML avec la commande gcloud run services describe à l'aide de l'option --format=export. Vous pouvez ensuite modifier ce fichier YAML et déployer ces modifications à l'aide de la commande gcloud run services replace. Veillez à ne modifier que les attributs spécifiés.

  1. Téléchargez la configuration de votre service dans un fichier nommé service.yaml sur l'espace de travail local :

    gcloud run services describe SERVICE --format export > service.yaml

    Remplacez SERVICE par le nom de votre service Cloud Run pour Anthos.

    1. Dans votre fichier local, mettez à jour les paramètres de révision dans n'importe quel attribut enfant de spec.template.

    2. Déployez la nouvelle révision :

      gcloud run services replace service.yaml

Déployer des images à partir d'autres projets Google Cloud

Vous pouvez déployer des images de conteneurs à partir d'autres projets Google Cloud si vous définissez les autorisations IAM appropriées :

  1. Dans la console Google Cloud, ouvrez le projet de votre service Cloud Run for Anthos.

  2. Accéder à la page IAM

  3. Obtenez les informations de votre compte de service :

  4. Ouvrez le projet qui contient le registre de conteneurs que vous souhaitez utiliser.

  5. Accéder à la page IAM

  6. Cliquez sur Ajouter pour ajouter une entité principale.

  7. Dans la zone de texte Nouvelles entités principales, collez l'adresse e-mail du compte de service que vous avez copié précédemment.

  8. Dans la liste déroulante Sélectionnez un rôle, sélectionnez le rôle à lire dans le registre:

    • Artifact Registry, y compris les dépôts gcr.io dans Artifact Registry : Artifact Registry -> Lecteur Artifact Registry
    • Container Registry: Stockage > Lecteur des objets de l'espace de stockage
  9. Déployez l'image de conteneur sur le projet contenant votre service Cloud Run pour Anthos.

Pour renforcer la sécurité, vous pouvez limiter les autorisations d'accès:

  • Artifact Registry: accordez le rôle dans le dépôt qui stocke vos images de conteneurs.
  • Container Registry: accordez le rôle sur le bucket Cloud Storage qui stocke vos images de conteneurs.

Déployer des images de conteneurs privées à partir d'autres registres de conteneurs

Cette section décrit la configuration des autorisations appropriées pour déployer des images de conteneurs depuis un registre privé arbitraire vers Cloud Run pour Anthos. Un registre de conteneurs privé nécessite des identifiants pour accéder à l'image de conteneur. Notez que vous n'avez pas besoin de suivre ces étapes pour déployer des images de conteneurs privées à partir de Container Registry (obsolète) ou d'Artifact Registry dans le même projet que votre cluster.

Pour déployer une image de conteneur privée, vous devez créer un secret Kubernetes de type imagePullSecret et l'associer à un compte de service :

  1. Créez un secret imagePullSecret appelé container-registry :

    kubectl create secret docker-registry container-registry \
      --docker-server=DOCKER_REGISTRY_SERVER \
      --docker-email=REGISTRY_EMAIL \
      --docker-username=REGISTRY_USER \
      --docker-password=REGISTRY_PASSWORD
    • Remplacez DOCKER_REGISTRY_SERVER par le nom de domaine complet de votre registre privé (par exemple, https://gcr.io/ pour Container Registry ou https://hub.docker.com pour DockerHub).
    • Remplacez REGISTRY_EMAIL par votre adresse e-mail.
    • Remplacez REGISTRY_USER par votre nom d'utilisateur du registre de conteneurs.

      Si vous utilisez Container Registry ou Artifact Registry et que vous souhaitez stocker et extraire des identifiants de longue durée au lieu de transmettre des jetons d'accès de courte durée, consultez la section Méthodes d'authentification : fichier de clé JSON.

    • Remplacez REGISTRY_PASSWORD par votre mot de passe du registre de conteneurs.

  2. Ouvrez votre compte de service par défaut :

    kubectl edit serviceaccount default --namespace default

    Chaque espace de noms de votre cluster Kubernetes possède un compte de service par défaut appelé default. Ce compte de service par défaut est utilisé, sauf indication contraire, pour extraire votre image de conteneur lorsque vous deploy votre service Cloud Run pour Anthos.

  3. Ajoutez le secret nouvellement créé imagePullSecret à votre compte de service par défaut :

    imagePullSecrets:
    - name: container-registry
    

    Votre compte de service doit maintenant se présenter comme suit :

    apiVersion: v1
    kind: ServiceAccount
    metadata:
      name: default
      namespace: default
      ...
    secrets:
    - name: default-token-zd84v
    # The secret we just created:
    imagePullSecrets:
    - name: container-registry
    

Désormais, tout pod créé dans l'espace de noms default actuel sera associé au secret imagePullSecret.

Déployer avec l'injection side-car automatique activée

Pour déployer votre service avec l'injection side-car Istio activée, consultez la section concernant l'injection side-car automatique activée dans la documentation d'Anthos Service Mesh.

Déployer des services sur un réseau interne

Pour déployer des services sur un réseau interne, vous devez configurer un réseau interne privé.

Étapes suivantes

Après avoir déployé un nouveau service, vous pouvez effectuer les opérations suivantes :

Vous pouvez automatiser la création et le déploiement de vos services Cloud Run pour Anthos avec les déclencheurs Cloud Build :