Déployer des conteneurs dans Cloud Run

Si vous utilisez le gestionnaire de services Linux amélioré proposé par défaut pour migrer vos charges de travail de conteneur, vous pouvez déployer le conteneur sur Cloud Run sans avoir à apporter de modifications supplémentaires au conteneur.

Pour déployer votre conteneur sur Cloud Run, procédez comme suit :

  1. Installez Migrate to Containers 1.15.0.

  2. Ajoutez une source de migration, puis créez une migration comme vous le faites aujourd'hui avec l'environnement d'exécution existant.

  3. Personnalisez votre plan de migration si nécessaire.

    1. Téléchargez le plan de migration. Le plan de migration est représenté par un objet AppXGenerateArtifactsFlow.

      Par exemple, pour une migration nommée "my-migration" :

      migctl migration get my-migration
    2. Ouvrez le plan de migration téléchargé, my-migration.yaml, dans un éditeur de texte.

    3. Vérifier le gestionnaire de services Linux amélioré L'option v2kServiceManager est définie sur true par défaut. Cependant, si Migrate to Containers détecte un service système non compatible avec le gestionnaire de services, vous êtes averti et l'option v2kServiceManager est définie sur false. Lorsque l'option est false, la migration utilise un ancien environnement d'exécution compatible avec votre service.

      L'alerte suivante est fournie avec le service non compatible :

      Service is not supported by v2k service manager, therefore legacy runtime
      will be used instead of v2k service manager, and migrated workload would
      not fit running on Autopilot clusters of Cloudrun.

      Lorsqu'un service non compatible est détecté, vous pouvez également définir manuellement l'option sur true. Dans cette instance, vous pouvez choisir de conserver le service non compatible sur l'image générée où il ne s'exécutera pas, ou d'exclure le service en le supprimant du plan de migration.

      Pour activer le nouveau gestionnaire de services, définissez l'option sur true :

      v2kServiceManager: true
      
    4. Effectuez toutes les autres personnalisations nécessaires à votre migration, comme décrit dans la section Personnaliser le plan de migration.

    5. Une fois les modifications terminées, enregistrez le fichier modifié.

    6. Importez le plan de migration modifié :

      migctl migration update my-migration --main-config my-migration.yaml
  4. Générez et examinez les artefacts de migration comme vous le faites actuellement avec l'environnement d'exécution existant.

  5. Modifiez le nouveau fichier services-config.yaml pour configurer les propriétés d'initialisation du conteneur. Enregistrez le fichier et recréez votre image de conteneur pour appliquer les modifications.

    Pour plus d'informations sur la modification de fichier services.yaml, consultez la page Utiliser services-config.yaml.

  6. Après avoir généré les artefacts de migration, ouvrez le fichier deployment_spec.yaml dans un éditeur pour déterminer l'emplacement de l'image de conteneur. Par exemple, vous devriez voir s'afficher un résultat semblable au suivant :

    spec:
      containers:
      - image: gcr.io/PROJECT_NAME/IMAGE_NAME:LABEL

    gcr.io/PROJECT_NAME/IMAGE_NAME:LABEL spécifie l'emplacement de l'image de conteneur.

  7. Utilisez la commande suivante pour déployer le conteneur sur Cloud Run :

    gcloud run deploy my-runtime
        --image gcr.io/PROJECT_NAME/IMAGE_NAME:LABEL
        --region REGION --platform managed
        --set-env-vars=HC_V2K_SERVICE_MANAGER=true --port PORT 

    La propriété --set-env-vars définit la variable d'environnement HC_V2K_SERVICE_MANAGER sur true pour activer le gestionnaire de services Linux amélioré.

    La propriété --port spécifie le port d'envoi des requêtes au conteneur. Le port par défaut est 8080.

Exemple : Déploiement du conteneur de démarrage rapide sur Cloud Run

Utilisez le guide de démarrage rapide actuel pour migrer un conteneur contenant un serveur Web simple, puis le déployer sur Cloud Run. Les seules modifications que vous devez apporter au processus de démarrage rapide sont les suivantes :

  1. À l'étape 3 de la migration de la VM, où vous examinez le plan de migration, définissez v2kServiceManager sur true dans le plan de migration, puis enregistrez le plan :

    v2kServiceManager: true
    
  2. Une fois la migration terminée, ouvrez le fichier deployment_spec.yaml dans un éditeur pour déterminer l'emplacement du conteneur. Par exemple, vous devriez voir s'afficher un résultat semblable au suivant :

    spec:
      containers:
      - image: gcr.io/PROJECT_NAME/quickstart-instance:LABEL
  3. Dans la section Déployer la charge de travail migrée, déployez l'image de conteneur dans Cloud Run à l'aide de la commande suivante :

    gcloud run deploy my-runtime
        --image gcr.io/PROJECT_NAME/quickstart-instance:LABEL
        --region REGION --platform managed
        --set-env-vars=HC_V2K_SERVICE_MANAGER=true --port 80 

    Le serveur Web du conteneur migré écoute les requêtes sur le port 80. Assurez-vous donc de spécifier ce port lors du déploiement du conteneur.

    Vous devriez voir la réponse suivante, qui inclut l'URL du service Cloud Run :

    Allow unauthenticated invocations to [my-runtime] (y/N)?  y
    
    Deploying container to Cloud Run service [my-runtime] in project [PROJECT_NAME] region [REGION]
    Deploying new service... Done.
      ✓ Creating Revision…
      ✓ Routing traffic…
        Setting IAM Policy…
    Done.
    Service [my-runtime] revision [my-runtime-00001-sas] has been deployed and is serving 100 percent of traffic.
    Service URL: https://my-runtime-s5ahdq-uc.a.run.app
  4. Depuis Cloud Shell, envoyez une requête au conteneur en utilisant son URL de service, en transmettant vos identifiants :

    curl -H "Authorization: Bearer $(gcloud auth print-identity-token)" https://my-runtime-s5ahdq-uc.a.run.app

    La page "Hello World!" doit s'afficher.

Étapes suivantes