Implementa una instancia de servicio con el entorno de ejecución de SaaS

Aprende a implementar una instancia de servicio con el entorno de ejecución de SaaS. En este ejemplo de inicio rápido, tu instancia de servicio es una VM.

Antes de comenzar

  1. Accede a tu Cuenta de Google.

    Si todavía no tienes una cuenta, regístrate para obtener una nueva.

  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 SaaS Runtime, 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. Instala Google Cloud CLI.

  7. Si usas un proveedor de identidad externo (IdP), primero debes acceder a la gcloud CLI con tu identidad federada.

  8. Para inicializar gcloud CLI, ejecuta el siguiente comando:

    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 SaaS Runtime, 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. Instala Google Cloud CLI.

  14. Si usas un proveedor de identidad externo (IdP), primero debes acceder a la gcloud CLI con tu identidad federada.

  15. Para inicializar gcloud CLI, ejecuta el siguiente comando:

    gcloud init

Otorga permisos a la cuenta de servicio del ejecutor de SaaS

El entorno de ejecución de SaaS usa más de una cuenta de servicio. En la sección anterior, creaste una cuenta de servicio y, cuando habilitas la API de SaaS Runtime, SaaS Runtime crea otra cuenta de servicio.

La cuenta de servicio que crea el entorno de ejecución de SaaS se llama service-PROJECT-NUMBER@gcp-sa-saasservicemgmt.iam.gserviceaccount.com, donde PROJECT-NUMBER es tu número de proyecto.

Para otorgar a esta cuenta de servicio los permisos necesarios, haz lo siguiente:

  1. Abre la página SaaS Runtime > Overview > Get Started.

    Ir a Comienza a usar el entorno de ejecución de SaaS

  2. En el banner con el mensaje No se otorgaron los permisos necesarios para la cuenta del entorno de ejecución de SaaS, haz clic en Otorgar permisos.

Define la instancia de servicio con una configuración de Terraform

Debes usar una configuración de Terraform para definir la infraestructura que se implementará para la instancia del servicio. En esta guía de inicio rápido, implementarás una VM.

Para crear una configuración de Terraform que defina una VM, sigue estos pasos:

  1. Crea un directorio llamado terraform-vm en tu máquina local.

  2. Dentro de terraform-vm, crea los siguientes cuatro archivos de Terraform:

    1. Un archivo llamado versions.tf con el siguiente contenido:

      terraform {
        required_version = "1.5.7"
        required_providers {
          google = {
            source  = "hashicorp/google"
            version = "~> 4.0"
          }
        }
      }
      
    2. Un archivo llamado outputs.tf con el siguiente contenido:

      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 archivo llamado variables.tf con el siguiente contenido:

      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 archivo llamado main.tf con el siguiente contenido:

      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. Para crear un archivo zip que contenga estos cuatro archivos de configuración de Terraform, navega al directorio terraform-vm en tu terminal y ejecuta el siguiente comando:

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

    Ahora tienes un archivo comprimido llamado terraform-files.zip que contiene los cuatro archivos de configuración de Terraform.

Crea un repositorio en Artifact Registry

Para usar el entorno de ejecución de SaaS, necesitas un repositorio en Artifact Registry. Para crear este repositorio, haz lo siguiente:

  1. En la consola, ve a Artifact Registry.

    Ir a Artifact Registry

  2. Haz clic en Crear repositorio.

  3. En Nombre (Name), escribe vm-quickstart-repo.

  4. Mantén Docker como el formato seleccionado.

  5. En Región, elige us-central1 (Iowa).

  6. Haz clic en Crear.

Crea una oferta de SaaS

Tienes la configuración de Terraform que define la VM que deseas implementar y un repositorio. Ahora puedes usar el entorno de ejecución de SaaS para modelar las unidades de implementación y, luego, implementar la VM.

Crea un recurso de oferta de SaaS

  1. En la consola, ve a SaaS Runtime > SaaS Offering.

    Ir a Oferta de SaaS

  2. Haz clic en Crear.

  3. En el campo Nombre de la oferta de SaaS, escribe vm-quickstart-saas-offering.

  4. En el campo Región, selecciona la región us-central1 y, luego, haz clic en Aceptar.

  5. Haz clic en Crear.

Las regiones que seleccionaste para la oferta de SaaS son aquellas en las que se alojan las implementaciones de tu oferta de SaaS. En el ejemplo de esta guía de inicio rápido, la oferta de SaaS es una sola VM, por lo que estas regiones son donde se aprovisiona y aloja la VM.

Si los usuarios finales acceden a estas VMs, lo harán a las VMs implementadas en las regiones que especifiques aquí.

Modelar las unidades de implementación

Para modelar la oferta de SaaS, creas componentes llamados tipos de unidades. Un tipo de unidad define un componente dentro de tu servicio para implementar y administrar. Por ejemplo, puedes tener un tipo de unidad para una VM y un segundo tipo de unidad para la aplicación que se ejecuta en esa VM.

En esta guía de inicio rápido, crearás un tipo de unidad para la VM.

Para crear el tipo de unidad, haz lo siguiente:

  1. En la consola, ve a SaaS Runtime > Unit Kinds.

    Ir a Tipos de unidades

  2. Selecciona Crear.

  3. En la página Crear esquemas, haz lo siguiente:

    1. Selecciona Subir.
    2. Para subir la configuración de Terraform que define la VM, haz lo siguiente:
      1. En el campo Selector de archivos, selecciona Explorar.
      2. Navega hasta terraform-files.zip, que es el archivo de archivo zip que creaste antes, y selecciónalo.
      3. Selecciona Abrir.
    3. Haz clic en Siguiente: Configurar el esquema.
  4. En la página Store blueprint, haz lo siguiente:

    1. Selecciona Artifact Registry:
      1. En el campo Seleccionar repositorio de Artifact Registry, selecciona Explorar.
      2. Selecciona vm-quickstart-repo, que es el repositorio que creaste anteriormente.
      3. Haz clic en Seleccionar.
    2. En el campo Nombre de la imagen del artefacto, escribe vm-quickstart-blueprint.
    3. En Versión de Terraform de Infrastructure Manager, selecciona 1.5.7.
    4. Para la cuenta de servicio de Cloud Build, selecciona la cuenta de servicio que creaste en la sección Antes de comenzar.
    5. Haz clic en Siguiente: Detalles del tipo de unidad.
  5. En la página Configurar las propiedades del tipo de unidad, haz lo siguiente:

    1. En Nombre del tipo de unidad, escribe vm-quickstart-unit-kind.
    2. En Oferta de SaaS, selecciona vm-quickstart-saas-offering, que es el recurso de oferta de SaaS que creaste antes.
    3. Haz clic en Siguiente: Configuración de lanzamiento.
  6. En Nombre de la versión, escribe vm-quickstart-first-release.

  7. Haz clic en Crear.

Aprovisiona la instancia de servicio

Para aprovisionar los recursos que forman parte de un tipo de unidad, debes crear unidades. Cuando creas una unidad, SaaS Runtime aprovisiona los recursos definidos en la configuración de Terraform que está conectada al tipo de unidad. Los recursos se aprovisionan en cada región que forma parte de la oferta de SaaS.

En el ejemplo de esta guía de inicio rápido, la VM se aprovisiona en la región us-central1.

  1. Sigue estos pasos para crear una unidad:

    1. En la consola, ve a SaaS Runtime > Units.

      Ir a Unidades

    2. Selecciona Crear.

    3. En la página Crear una unidad, haz lo siguiente:

      1. En Nombre de la unidad, escribe vm-quickstart-unit.
      2. En Oferta de SaaS, selecciona el recurso de oferta de SaaS que creaste antes: vm-quickstart-saas-offering.
      3. En Región, selecciona us-central1.
      4. En Tipo de unidad, selecciona el tipo de unidad que creaste antes: vm-quickstart-unit-kind.
      5. Selecciona Crear.
  2. Para aprovisionar la VM, haz lo siguiente:

    1. En la página Detalles de la unidad, selecciona Aprovisionar.
    2. En el campo Versión, selecciona vm-quickstart-first-release.
    3. En Cuenta de servicio, selecciona la cuenta de servicio que creaste en la sección Antes de comenzar.
    4. Agrega un proyecto de inquilino:

      1. Selecciona Agregar variables del proyecto de usuario.
      2. Selecciona el proyecto Google Cloud que usas para esta guía de inicio rápido. Cuando el entorno de ejecución de SaaS implementa la VM, lo hace en este proyecto.
    5. Selecciona Provision.

SaaS Runtime aprovisiona una VM en la región que especificaste en la oferta de SaaS. Puedes crear unidades en cualquiera de las regiones que especificaste en la unidad. En este inicio rápido, especificaste una región (us-central1), y esta es la región en la que se aprovisiona la VM.

Visualiza la VM implementada

Ya usaste el entorno de ejecución de SaaS para implementar la VM.

Para ver la VM que implementaste en esta guía de inicio rápido, haz lo siguiente:

  1. En la consola, ve a la página SaaS Runtime > Units > Unit details.

    Ir a Unidades

  2. Haz clic en el nombre de tu unidad: vm-quickstart-unit.

  3. En la página Detalles de la unidad, haz lo siguiente:

    1. Comprueba que el estado sea el siguiente:

      • Ready si se aprovisionó la VM.
      • Aprovisionamiento si la operación aún está en curso
    2. Expande la sección Variables.

    3. En las Variables de salida, puedes ver la IP externa que puedes usar para acceder a la instancia.

  4. También puedes ver la VM en Compute Engine:

    1. En la consola, ve a la página Compute Engine > Instancias de VM.

      Ir a Instancias de VM

    2. Verás la VM en Instancias de VM.

Realiza una limpieza

Sigue estos pasos para evitar que se apliquen cargos a tu cuenta de Google Cloud por los recursos que usaste en esta página.

Borra el proyecto

Si implementaste la solución en un proyecto Google Cloud nuevo y ya no lo necesitas, sigue estos pasos para borrarlo:

  1. En la Google Cloud consola, ve a la página Administrar recursos.

    Ir a Administrar recursos

  2. En la lista de proyectos, elige el proyecto que quieres borrar y haz clic en Borrar.
  3. Cuando se te solicite, escribe el ID del proyecto y, luego, haz clic en Cerrar.

¿Qué sigue?