Implantar uma instância de serviço com o ambiente de execução de SaaS

Aprenda a implantar uma instância de serviço usando o ambiente de execução de SaaS. Neste guia de início rápido, a instância de serviço é uma VM.

Antes de começar

  1. Faça login na sua Conta do Google.

    Se você ainda não tiver uma, inscreva-se agora.

  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. Instale a Google Cloud CLI.

  7. Ao usar um provedor de identidade (IdP) externo, primeiro faça login na gcloud CLI com sua identidade federada.

  8. Para inicializar a CLI gcloud, execute o seguinte 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. Instale a Google Cloud CLI.

  14. Ao usar um provedor de identidade (IdP) externo, primeiro faça login na gcloud CLI com sua identidade federada.

  15. Para inicializar a CLI gcloud, execute o seguinte comando:

    gcloud init

Conceder permissões à conta de serviço do SaaS Runner

O ambiente de execução de SaaS usa mais de uma conta de serviço. Você criou uma conta de serviço na seção anterior e, ao ativar a API do ambiente de execução de SaaS, o ambiente de execução de SaaS cria outra conta de serviço.

A conta de serviço criada pelo ambiente de execução de SaaS é chamada de service-PROJECT-NUMBER@gcp-sa-saasservicemgmt.iam.gserviceaccount.com, em que PROJECT-NUMBER é o número do seu projeto.

Conceda as permissões necessárias a essa conta de serviço fazendo o seguinte:

  1. Abra a página Ambiente de execução de SaaS > Visão geral > Começar.

    Acessar "Aprenda a usar o ambiente de execução do SaaS"

  2. No banner com a mensagem As permissões necessárias para a conta do ambiente de execução de SaaS não foram concedidas, clique em Conceder permissões.

Definir a instância de serviço usando uma configuração do Terraform

É necessário usar uma configuração do Terraform para definir a infraestrutura a ser implantada para a instância de serviço. Neste guia de início rápido, você vai implantar uma VM.

Para criar uma configuração do Terraform que defina uma VM:

  1. Crie um diretório chamado terraform-vm na sua máquina local.

  2. Dentro de terraform-vm, crie os quatro arquivos do Terraform a seguir:

    1. Um arquivo chamado versions.tf com o seguinte conteúdo:

      terraform {
        required_version = "1.5.7"
        required_providers {
          google = {
            source  = "hashicorp/google"
            version = "~> 4.0"
          }
        }
      }
      
    2. Um arquivo chamado outputs.tf com o seguinte conteúdo:

      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. Um arquivo chamado variables.tf com o seguinte conteúdo:

      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. Um arquivo chamado main.tf com o seguinte conteúdo:

      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 criar um arquivo zip que contenha esses quatro arquivos de configuração do Terraform, navegue até o diretório terraform-vm no terminal e execute o seguinte comando:

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

    Agora você tem um arquivo zip chamado terraform-files.zip que contém todos os quatro arquivos de configuração do Terraform.

Criar um repositório no Artifact Registry

Para usar o ambiente de execução de SaaS, você precisa de um repositório no Artifact Registry. Para criar esse repositório, faça o seguinte:

  1. No console, acesse o Artifact Registry.

    Acessar o Artifact Registry

  2. Clique em Criar repositório.

  3. Para Nome, digite vm-quickstart-repo.

  4. Mantenha o Formato selecionado como Docker.

  5. Em Região, escolha us-central1 (Iowa).

  6. Clique em Criar.

Criar uma oferta de SaaS

Você tem a configuração do Terraform que define a VM que você quer implantar e um repositório. Agora você pode usar o ambiente de execução de SaaS para modelar as unidades de implantação e implantar a VM.

Criar um recurso de oferta de SaaS

  1. No console, acesse SaaS Runtime > SaaS Offering.

    Acessar "Oferta de SaaS"

  2. Selecione Criar.

  3. No campo Nome da oferta de SaaS, digite: vm-quickstart-saas-offering.

  4. No campo Região , selecione a região us-central1 e clique em OK.

  5. Selecione Criar.

As regiões selecionadas para a oferta de SaaS são onde as implantações da oferta de SaaS são hospedadas. No exemplo deste guia de início rápido, a oferta de SaaS é uma única VM. Portanto, essas regiões são onde a VM é provisionada e hospedada.

Se você tiver usuários finais acessando essas VMs, eles vão acessar as VMs implantadas nas regiões especificadas aqui.

Modelar as unidades de implantação

Para modelar a oferta de SaaS, crie componentes chamados tipos de unidade. Um tipo de unidade define um componente no serviço para implantação e gerenciamento. Por exemplo, você pode ter um tipo de unidade para uma VM e um segundo tipo de unidade para o aplicativo em execução nessa VM.

Neste guia de início rápido, você cria um tipo de unidade para a VM.

Para criar o tipo de unidade:

  1. No console, acesse SaaS Runtime > Tipos de unidade.

    Acessar "Tipos de unidade"

  2. Selecione Criar.

  3. Na página Criar blueprints:

    1. Selecione Fazer upload.
    2. Para fazer upload da configuração do Terraform que define a VM, faça o seguinte:
      1. No campo Seletor de arquivos, selecione Procurar.
      2. Navegue até terraform-files.zip e selecione esse arquivo, que é o arquivo zip criado anteriormente.
      3. Clique em Abrir.
    3. Clique em Próxima: configurar blueprint.
  4. Na página Armazenar blueprint:

    1. Selecione o Artifact Registry:
      1. No campo Selecionar repositório do Artifact Registry, selecione Procurar.
      2. Selecione vm-quickstart-repo, que é o repositório criado anteriormente.
      3. Clique em Selecionar.
    2. No campo Nome da imagem do artefato, digite vm-quickstart-blueprint.
    3. Em Versão do Terraform do Infrastructure Manager, selecione 1.5.7.
    4. Para a Conta de serviço do Cloud Build, selecione a conta de serviço criada na seção Antes de começar.
    5. Clique em Próxima: detalhes do tipo de unidade.
  5. Na página Configurar propriedades do tipo de unidade, faça o seguinte:

    1. Para Nome do tipo de unidade, digite vm-quickstart-unit-kind.
    2. Para Oferta de SaaS, selecione vm-quickstart-saas-offering, que é o recurso de oferta de SaaS criado anteriormente.
    3. Clique em Próxima: configuração da versão
  6. Para Nome da versão, digite vm-quickstart-first-release.

  7. Selecione Criar.

Provisionar a instância de serviço

Para provisionar os recursos que fazem parte de um tipo de unidade, crie unidades. Ao criar uma unidade, o ambiente de execução de SaaS provisiona os recursos definidos na configuração do Terraform que está conectada ao tipo de unidade. Os recursos são provisionados em cada região que faz parte da oferta de SaaS.

No exemplo deste guia de início rápido, a VM é provisionada na região us-central1.

  1. Criar uma unidade:

    1. No console, acesse SaaS Runtime > Unidades.

      Acessar "Unidades"

    2. Selecione Criar.

    3. Na página Criar uma unidade:

      1. Para Nome da unidade, digite: vm-quickstart-unit.
      2. Em Oferta de SaaS, selecione o recurso de oferta de SaaS que você criou anteriormente: vm-quickstart-saas-offering.
      3. Em Região, selecione us-central1.
      4. Em Tipo de unidade, selecione o tipo de unidade criado anteriormente: vm-quickstart-unit-kind.
      5. Selecione Criar.
  2. Para provisionar a VM:

    1. Na página Detalhes da unidade, selecione Provisionar.
    2. No campo Versão, selecione vm-quickstart-first-release.
    3. Para a Conta de serviço, selecione a conta de serviço criada na seção Antes de começar.
    4. Adicionar um projeto de locatário:

      1. Selecione Adicionar variáveis do projeto de locatário.
      2. Selecione o Google Cloud projeto que você está usando para este guia de início rápido. Quando o ambiente de execução de SaaS implanta a VM, ele a implanta nesse projeto.
    5. Selecione Provisionar.

O ambiente de execução de SaaS provisiona uma VM na região especificada na oferta de SaaS. É possível criar unidades em qualquer uma das regiões especificadas na unidade. Neste guia de início rápido, você especificou uma região (us-central1), e é nessa região que a VM é provisionada.

Conferir a VM implantada

Agora você usou o ambiente de execução de SaaS para implantar a VM.

Para conferir a VM implantada neste guia de início rápido:

  1. No console, acesse a página Ambiente de execução de SaaS > Unidades > Detalhes da unidade.

    Acessar "Unidades"

  2. Clique no nome da unidade: vm-quickstart-unit.

  3. Na página Detalhes da unidade:

    1. Confira se o Estado é:

      • Pronto , se a VM estiver provisionada.
      • Provisionando , se a operação ainda estiver em andamento.
    2. Expanda a seção Variáveis.

    3. Em Variáveis de saída, é possível conferir o IP externo que pode ser usado para acessar a instância.

  4. Também é possível conferir a VM no Compute Engine:

    1. No console, acesse a página Compute Engine > Instâncias de VM.

      Acessar instâncias de VM

    2. Confira a VM listada em Instâncias de VM.

Liberar espaço

Para evitar cobranças na conta do Google Cloud pelos recursos usados nesta página, siga as etapas abaixo.

Excluir o projeto

Se você implantou a solução em um novo Google Cloud projeto e não precisa mais do projeto, exclua-o seguindo estas etapas:

  1. No Google Cloud console, acesse a página Gerenciar recursos.

    Acessar "Gerenciar recursos"

  2. Na lista de projetos, selecione o projeto que você quer excluir e clique em Excluir.
  3. No comando, digite o ID do projeto e clique em desligar.

A seguir