Déployer une instance de service avec App Lifecycle Manager

Découvrez comment déployer une instance de service à l'aide d'App Lifecycle Manager. Dans cet exemple de démarrage rapide, votre instance de service est une VM.

Avant de commencer

  1. Connectez-vous à votre compte Google.

    Si vous n'en possédez pas déjà un, vous devez en créer un.

  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. Enable the App Lifecycle Manager, Artifact Registry, Infrastructure Manager, Developer Connect, Cloud Build, and Cloud Storage APIs.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

  5. Create a service account:

    1. Ensure that you have the Create Service Accounts IAM role (roles/iam.serviceAccountCreator) and the Project IAM Admin role (roles/resourcemanager.projectIamAdmin). Learn how to grant roles.
    2. In the Google Cloud console, go to the Create service account page.

      Go to Create service account
    3. Select your project.
    4. In the Service account name field, enter a name. The Google Cloud console fills in the Service account ID field based on this name.

      In the Service account description field, enter a description. For example, Service account for quickstart.

    5. Click Create and continue.
    6. Grant the Project > Owner role to the service account.

      To grant the role, find the Select a role list, then select Project > Owner.

    7. Click Continue.
    8. Click Done to finish creating the service account.

  6. Installez la Google Cloud CLI.

  7. Si vous utilisez un fournisseur d'identité (IdP) externe, vous devez d'abord vous connecter à la gcloud CLI avec votre identité fédérée.

  8. Pour initialiser la gcloud CLI, exécutez la commande suivante :

    gcloud init
  9. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  10. Verify that billing is enabled for your Google Cloud project.

  11. Enable the App Lifecycle Manager, Artifact Registry, Infrastructure Manager, Developer Connect, Cloud Build, and Cloud Storage APIs.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

  12. Create a service account:

    1. Ensure that you have the Create Service Accounts IAM role (roles/iam.serviceAccountCreator) and the Project IAM Admin role (roles/resourcemanager.projectIamAdmin). Learn how to grant roles.
    2. In the Google Cloud console, go to the Create service account page.

      Go to Create service account
    3. Select your project.
    4. In the Service account name field, enter a name. The Google Cloud console fills in the Service account ID field based on this name.

      In the Service account description field, enter a description. For example, Service account for quickstart.

    5. Click Create and continue.
    6. Grant the Project > Owner role to the service account.

      To grant the role, find the Select a role list, then select Project > Owner.

    7. Click Continue.
    8. Click Done to finish creating the service account.

  13. Installez la Google Cloud CLI.

  14. Si vous utilisez un fournisseur d'identité (IdP) externe, vous devez d'abord vous connecter à la gcloud CLI avec votre identité fédérée.

  15. Pour initialiser la gcloud CLI, exécutez la commande suivante :

    gcloud init

Accorder des autorisations au compte de service de l'exécuteur SaaS

App Lifecycle Manager utilise plusieurs comptes de service. Vous avez créé un compte de service dans la section précédente. Lorsque vous activez l'API App Lifecycle Manager, App Lifecycle Manager crée un autre compte de service.

Le compte de service créé par App Lifecycle Manager est appelé service-PROJECT-NUMBER@gcp-sa-saasservicemgmt.iam.gserviceaccount.com, où PROJECT-NUMBER est le numéro de votre projet.

Accordez les autorisations requises à ce compte de service en procédant comme suit :

  1. Ouvrez la page Gestionnaire du cycle de vie des applications > Présentation > Commencer.

    Accéder à "Premiers pas avec App Lifecycle Manager"

  2. Dans la bannière contenant le message Les autorisations requises pour le compte App Lifecycle Manager n'ont pas été accordées, cliquez sur Accorder les autorisations.

Définir l'instance de service à l'aide d'une configuration Terraform

Vous devez utiliser une configuration Terraform pour définir l'infrastructure à déployer pour l'instance de service. Dans ce guide de démarrage rapide, vous allez déployer une VM.

Pour créer une configuration Terraform qui définit une VM :

  1. Créez un répertoire nommé terraform-vm sur votre machine locale.

  2. Dans terraform-vm, créez les quatre fichiers Terraform suivants :

    1. Un fichier nommé versions.tf avec le contenu suivant :

      terraform {
        required_version = "1.5.7"
        required_providers {
          google = {
            source  = "hashicorp/google"
            version = "~> 4.0"
          }
        }
      }
      
    2. Un fichier nommé outputs.tf avec le contenu suivant :

      output "instance_name" {
        description = "Name of the instance"
        value       = google_compute_instance.vm_instance.name
      }
      
      output "instance_external_ip" {
        description = "External IP of the instance"
        value       = google_compute_instance.vm_instance.network_interface[0].access_config[0].nat_ip
      }
      
      output "instance_self_link" {
        description = "Self-link of the instance"
        value       = google_compute_instance.vm_instance.self_link
      }
      
    3. Un fichier nommé variables.tf avec le contenu suivant :

      variable "region" {
        description = "The Google Cloud region"
        type        = string
        default     = "us-central1"
      }
      
      variable "zone" {
        description = "The Google Cloud zone"
        type        = string
        default     = "us-central1-a"
      }
      
      variable "instance_name" {
        description = "Name for the Compute Engine instance"
        type        = string
        default = "saas-runtime-vm-instance"
      }
      
      variable "machine_type" {
        description = "Machine type for the Compute Engine instance"
        type        = string
        default = "e2-medium"
      }
      
      variable "disk_size" {
        description = "Boot disk size in GB"
        type        = number
        default = 10
      }
      
      variable "actuation_sa" {
        description = "The email of the Actuation Service Account"
        type        = string
      }
      
      variable "tenant_project_id" {
        description = "The project ID of the tenant project"
        type        = string
      }
      
      variable "tenant_project_number" {
        description = "The project number of the tenant project"
        type        = number
      }
      
    4. Un fichier nommé main.tf avec le contenu suivant :

      resource "google_compute_instance" "vm_instance" {
        project      = var.tenant_project_id
        name         = var.instance_name
        machine_type = var.machine_type
        zone         = var.zone
      
        boot_disk {
          initialize_params {
            image = "debian-cloud/debian-11"
            size  = var.disk_size
          }
        }
      
        network_interface {
          network = "default"
          access_config {
            # Ephemeral public IP - empty block is okay here
          }
        }
      
        tags = ["allow-ssh"]
      }
      
  3. Pour créer une archive ZIP contenant ces quatre fichiers de configuration Terraform, accédez au répertoire terraform-vm dans votre terminal et exécutez la commande suivante :

    zip terraform-files.zip main.tf outputs.tf variables.tf versions.tf
    

    Vous disposez désormais d'une archive ZIP nommée terraform-files.zip qui contient les quatre fichiers de configuration Terraform.

Créer un dépôt dans Artifact Registry

Pour utiliser App Lifecycle Manager, vous avez besoin d'un dépôt dans Artifact Registry. Pour créer ce dépôt, procédez comme suit :

  1. Dans la console, accédez à Artifact Registry.

    Accéder à Artifact Registry

  2. Cliquez sur Créer un dépôt.

  3. Dans le champ Name (Nom), saisissez vm-quickstart-repo.

  4. Laissez le format sélectionné sur Docker.

  5. Dans le champ Région, choisissez us-central1 (Iowa).

  6. Cliquez sur Créer.

Créer une offre SaaS

Vous disposez de la configuration Terraform qui définit la VM que vous souhaitez déployer et d'un dépôt. Vous pouvez désormais utiliser App Lifecycle Manager pour modéliser les unités de déploiement et déployer la VM.

Créer une ressource d'offre SaaS

  1. Dans la console, accédez à App Lifecycle Manager > Offre SaaS.

    Accéder à l'offre SaaS

  2. Cliquez sur Créer.

  3. Dans le champ Nom de l'offre SaaS, saisissez vm-quickstart-saas-offering.

  4. Dans le champ Région, sélectionnez la région us-central1, puis cliquez sur OK.

  5. Cliquez sur Créer.

Les régions que vous avez sélectionnées pour l'offre SaaS sont celles où sont hébergés les déploiements de votre offre SaaS. Dans l'exemple de ce guide de démarrage rapide, l'offre SaaS est une seule VM. Ces régions sont donc celles où la VM est provisionnée et hébergée.

Si des utilisateurs finaux accèdent à ces VM, ils accéderont à celles déployées dans les régions que vous spécifiez ici.

Modéliser les unités de déploiement

Pour modéliser l'offre SaaS, vous créez des composants appelés genres d'unité. Un genre d'unité définit un composant de votre service à déployer et à gérer. Par exemple, vous pouvez avoir un type d'unité pour une VM et un deuxième type d'unité pour l'application exécutée sur cette VM.

Dans ce guide de démarrage rapide, vous allez créer un type d'unité pour la VM.

Pour créer le genre d'unité :

  1. Dans la console, accédez à App Lifecycle Manager > Unit Kinds.

    Accéder à "Types d'unités"

  2. Sélectionnez Créer.

  3. Sur la page Créer des plans :

    1. Sélectionnez Importer.
    2. Pour importer la configuration Terraform qui définit la VM, procédez comme suit :
      1. Dans le champ Sélecteur de fichier, sélectionnez Parcourir.
      2. Accédez à terraform-files.zip, qui est le fichier d'archive ZIP que vous avez créé précédemment, et sélectionnez-le.
      3. Sélectionnez Ouvrir.
    3. Cliquez sur Suivant : Configurer le plan.
  4. Sur la page Plan du magasin :

    1. Sélectionnez Artifact Registry :
      1. Dans le champ Sélectionner un dépôt dans Artifact Registry, sélectionnez Parcourir.
      2. Sélectionnez vm-quickstart-repo, le dépôt que vous avez créé précédemment.
      3. Cliquez sur Sélectionner.
    2. Dans le champ Nom de l'image de l'artefact, saisissez vm-quickstart-blueprint.
    3. Dans Version Terraform d'Infrastructure Manager, sélectionnez 1.5.7.
    4. Pour le compte de service Cloud Build, sélectionnez le compte de service que vous avez créé dans la section Avant de commencer.
    5. Cliquez sur Suivant : Détails du genre d'unité.
  5. Sur la page Configurer les propriétés du genre d'unité, procédez comme suit :

    1. Dans le champ Nom du type d'unité, saisissez vm-quickstart-unit-kind.
    2. Pour Offre SaaS, sélectionnez vm-quickstart-saas-offering, qui correspond à la ressource d'offre SaaS que vous avez créée précédemment.
    3. Cliquez sur Suivant : Configuration de la version.
  6. Dans le champ Nom de la version, saisissez vm-quickstart-first-release.

  7. Cliquez sur Créer.

Provisionner l'instance de service

Pour provisionner les ressources qui font partie d'un genre d'unité, vous devez créer des unités. Lorsque vous créez une unité, App Lifecycle Manager provisionne les ressources définies dans la configuration Terraform associée au type d'unité. Les ressources sont provisionnées dans chaque région faisant partie de l'offre SaaS.

Dans l'exemple de ce guide de démarrage rapide, la VM est provisionnée dans la région us-central1.

  1. Créez une unité :

    1. Dans la console, accédez à App Lifecycle Manager > Unités.

      Accéder aux unités

    2. Sélectionnez Créer.

    3. Sur la page Créer une unité :

      1. Dans le champ Nom de l'unité, saisissez vm-quickstart-unit.
      2. Sous Offre SaaS, sélectionnez la ressource d'offre SaaS que vous avez créée précédemment : vm-quickstart-saas-offering.
      3. Sous Région, sélectionnez us-central1.
      4. Sous Type d'unité, sélectionnez le type d'unité que vous avez créé précédemment : vm-quickstart-unit-kind.
      5. Sélectionnez Créer.
  2. Pour provisionner la VM :

    1. Sur la page Détails de l'unité, sélectionnez Provisionner.
    2. Dans le champ Version, sélectionnez vm-quickstart-first-release.
    3. Pour le compte de service, sélectionnez celui que vous avez créé dans la section Avant de commencer.
    4. Ajoutez un projet locataire :

      1. Sélectionnez Ajouter des variables de projet locataire.
      2. Sélectionnez le projet Google Cloud que vous utilisez pour ce guide de démarrage rapide. Lorsque App Lifecycle Manager déploie la VM, il la déploie dans ce projet.
    5. Sélectionnez Provision (Provisionner).

App Lifecycle Manager provisionne une VM dans la région que vous avez spécifiée dans l'offre SaaS. Vous pouvez créer des unités dans l'une des régions que vous avez spécifiées dans l'unité. Dans ce guide de démarrage rapide, vous avez spécifié une région (us-central1), dans laquelle la VM est provisionnée.

Afficher la VM déployée

Vous avez maintenant utilisé App Lifecycle Manager pour déployer la VM.

Pour afficher la VM que vous avez déployée dans ce guide de démarrage rapide :

  1. Dans la console Google Cloud , accédez à la page App Lifecycle Manager > Unités > Détails de l'unité.

    Accéder aux unités

  2. Cliquez sur le nom de votre unité : vm-quickstart-unit.

  3. Sur la page Détails de l'unité :

    1. Vérifiez que l'état est le suivant :

      • Ready si la VM est provisionnée.
      • Provisionnement si l'opération est toujours en cours.
    2. Développez la section Variables.

    3. Dans Variables de sortie, vous pouvez voir l'adresse IP externe que vous pouvez utiliser pour accéder à l'instance.

  4. Vous pouvez également afficher la VM dans Compute Engine :

    1. Dans la console, accédez à la page Compute Engine > Instances de VM.

      Accéder à la page Instances de VM

    2. Recherchez la VM dans la liste Instances de VM.

Effectuer un nettoyage

Pour éviter que les ressources utilisées dans cette démonstration soient facturées sur votre compte Google Cloud , procédez comme suit :

Supprimer le projet

Si vous avez déployé la solution dans un nouveau projet Google Cloud et que vous n'en avez plus besoin, supprimez-le en procédant comme suit :

  1. Dans la console Google Cloud , accédez à la page Gérer les ressources.

    Accéder à la page "Gérer les ressources"

  2. Dans la liste des projets, sélectionnez le projet que vous souhaitez supprimer, puis cliquez sur Supprimer.
  3. Lorsque vous y êtes invité, saisissez l'ID du projet, puis cliquez sur Arrêter.

Étapes suivantes