Como implantar imagens de contêineres

Nesta página, descrevemos como implantar novos serviços e novas revisões no Cloud Run (totalmente gerenciado).

Permissões necessárias para implantar

Você precisa ter um dos seguintes papéis:

  • Proprietário
  • Editor
  • Os papéis Administrador do Cloud Run e Usuário da conta de serviço.
  • Qualquer papel personalizado que inclua esta lista específica de permissões.

Imagens que podem ser implantadas

Não há limite de tamanho que se aplique à imagem do contêiner que é possível implantar.

É possível implantar imagens de contêiner armazenadas no Container Registry ou no Artifact Registry. É possível usar apenas os seguintes tipos de imagens de contêiner:

Como implantar um novo serviço

É possível especificar uma imagem de contêiner com uma tag (por exemplo, gcr.io/my-project/my-image:latest) ou com um resumo exato (por exemplo, gcr.io/my-project/my-image@sha256:41f34ab970ee...).

A implantação de um serviço pela primeira vez cria a primeira revisão dele. Observe que as revisões são imutáveis. Se você implantar a partir de uma tag de imagem de contêiner, ela será resolvida para um resumo, e a revisão sempre exibirá esse resumo específico.

É possível implantar um contêiner usando o Console do Cloud, a linha de comando gcloud ou um arquivo de configuração YAML.

Clique na guia para ver instruções usando a ferramenta de sua preferência.

Console

Para implantar uma imagem de contêiner, realize as etapas a seguir:

  1. Acessar o Cloud Run

  2. Clique em Criar serviço para exibir a página Criar serviço.

    create-service-image

    No formulário, siga estas etapas:

    1. Cloud Run (totalmente gerenciado) para implantar em um ambiente totalmente gerenciado.

    2. Selecione a região em que você quer que o serviço esteja localizado.

    3. Digite o nome do serviço desejado. Os nomes de serviço precisam ser exclusivos por região e projeto ou por cluster. Um nome de serviço não pode ser alterado posteriormente e fica visível publicamente ao usar o Cloud Run (totalmente gerenciado).

    4. Em Autenticação:

      • Se você estiver criando uma API ou um site público, selecione Permitir invocações não autenticadas. A seleção atribui o papel de chamador do IAM ao identificador especial allUser. É possível usar o IAM para editar essa configuração depois de criar o serviço.
      • Se você quiser que um serviço seguro seja protegido por autenticação, selecione Exigir autenticação.
    5. Clique em Avançar para acessar a segunda página do formulário de criação de serviço:

      imagem

      No formulário, siga estas etapas:

      1. Na caixa de texto URL da imagem do contêiner, forneça o URL de uma imagem de um registro compatível, por exemplo: gcr.io/cloudrun/hello

      2. Opcionalmente, clique em Mostrar configurações avançadas e nas guias subsequentes a serem definidas:

      3. Clique em Criar para implantar a imagem no Cloud Run e aguarde a conclusão da implantação.

  3. Clique no link do URL exibido para abrir o endpoint exclusivo e estável do serviço implantado.

Linha de comando

Para implantar uma imagem de contêiner, realize as etapas a seguir:

  1. Execute o comando:

    gcloud run deploy SERVICE --image IMAGE_URL

    • Substitua SERVICE pelo nome do serviço em que você quer implantar. Se o serviço ainda não existir, esse comando criará o serviço durante a implantação. É possível omitir esse parâmetro inteiramente, mas será solicitado o nome do serviço, se você omiti-lo.
    • Substitua IMAGE_URL por uma referência à imagem do contêiner, por exemplo, gcr.io/myproject/my-image:latest.

      Se você estiver criando uma API ou um site públicos, é possível permitir invocações não autenticadas do serviço usando a sinalização --allow-unauthenticated. Isso atribui o papel do IAM de Chamador do Cloud Run a allUsers. Também é possível especificar --no-allow-unauthenticated para não permitir invocações não autenticadas. Se você omitir qualquer uma dessas sinalizações, será solicitado a confirmar quando o comando deploy é executado.

  2. Aguarde a conclusão da implantação. Após a conclusão bem-sucedida, uma mensagem de sucesso é exibida com o URL do serviço implantado.

Para implantar em um local diferente daquele que você definiu por meio das propriedades run/region gcloud, use:

  • gcloud run deploy SERVICE --platform managed --region REGION

YAML

É possível armazenar a especificação do serviço em um arquivo YAML e implantá-la usando a linha de comando gcloud.

  1. Crie um novo arquivo service.yaml com este conteúdo:

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

    Substitua:

    • SERVICE pelo nome do serviço do Cloud Run;
    • IMAGE pelo URL da imagem do contêiner.

    Também é possível especificar mais configurações, como variáveis de ambiente ou limites de memória.

  2. Implante o novo serviço usando o seguinte comando:

    gcloud beta run services replace service.yaml
  3. Como opção, torne seu serviço público se você quiser permitir o acesso não autenticado ao serviço.

Cloud Code

Para implantar com o Cloud Code, leia os guias do IntelliJ e do Visual Studio Code.

Terraform

Se você usar o Terraform, poderá definir seu serviço em uma configuração do Terraform usando o recurso google_cloud_run_service do Provedor do Google Cloud Platform (todos em inglês).

  1. Crie um novo arquivo main.tf com este conteúdo:

    provider "google" {
        project = "PROJECT-ID"
    }
    
    resource "google_cloud_run_service" "default" {
        name     = "SERVICE"
        location = "REGION"
    
        metadata {
          annotations = {
            "run.googleapis.com/client-name" = "terraform"
          }
        }
    
        template {
          spec {
            containers {
              image = "gcr.io/PROJECT-ID/IMAGE"
            }
          }
        }
     }
    
     data "google_iam_policy" "noauth" {
       binding {
         role = "roles/run.invoker"
         members = ["allUsers"]
       }
     }
    
     resource "google_cloud_run_service_iam_policy" "noauth" {
       location    = google_cloud_run_service.default.location
       project     = google_cloud_run_service.default.project
       service     = google_cloud_run_service.default.name
    
       policy_data = data.google_iam_policy.noauth.policy_data
    }
    

    Substitua:

    • PROJECT-ID pelo ID do projeto do Google Cloud.
    • REGION pela região do Google Cloud.
    • SERVICE pelo nome do serviço do Cloud Run.
    • IMAGE pelo nome da imagem do contêiner.

    A configuração acima permite acesso público (o equivalente a --allow-unauthenticated). Para tornar o serviço privado, remova as estrofes google_iam_policy e google_cloud_run_service_iam_policy.

  2. Inicialize o Terraform:

    terraform init
  3. Aplique a configuração do Terraform:

    terraform apply

    Confirme que você quer aplicar as ações descritas digitando yes.

Locais do Cloud Run

O Cloud Run é regional, o que significa que a infraestrutura que executa seus serviços do Cloud Run está localizada em uma região específica e é gerenciada pelo Google para estar disponível de maneira redundante em todas as zonas da região.

Atender aos seus requisitos de latência, disponibilidade ou durabilidade são os principais fatores para selecionar a região em que seus serviços do Cloud Run são executados. Geralmente, é possível selecionar a região mais próxima de seus usuários, mas considere a localização dos outros produtos do Google Cloud usados pelo serviço do Cloud Run. O uso de produtos do Google Cloud em vários locais pode afetar a latência e o custo do serviço.

O Cloud Run está disponível nas regiões a seguir:

Sujeitas aos preços do nível 1

  • asia-east1 (Taiwan)
  • asia-northeast1 (Tóquio)
  • asia-northeast2 (Osaka)
  • europe-north1 (Finlândia)
  • europe-west1 (Bélgica)
  • europe-west4 (Países Baixos)
  • us-central1 (Iowa)
  • us-east1 (Carolina do Sul)
  • us-east4 (Norte da Virgínia)
  • us-west1 (Oregon)

Sujeitas aos preços do nível 2

  • asia-east2 (Hong Kong)
  • asia-northeast3 (Seul, Coreia do Sul)
  • asia-southeast1 (Singapura)
  • asia-southeast2 (Jacarta)
  • asia-south1 (Mumbai, Índia)
  • australia-southeast1 (Sydney)
  • europe-west2 (Londres, Reino Unido)
  • europe-west3 (Frankfurt, Alemanha)
  • europe-west6 (Zurique, Suíça)
  • northamerica-northeast1 (Montreal)
  • southamerica-east1 (São Paulo, Brasil)

Se você já criou um serviço do Cloud Run, poderá ver a região no painel do Cloud Run no Console do Cloud.

Cada serviço tem um URL exclusivo e permanente que não muda ao longo do tempo à medida que você implanta novas revisões nele.

Como implantar uma nova revisão de um serviço atual

É possível implantar uma nova revisão usando o Console do Cloud, a linha de comando gcloud ou um arquivo de configuração YAML.

A alteração de qualquer configuração resulta na criação de uma nova revisão, mesmo que não haja alterações na imagem do contêiner. Cada revisão criada é imutável.

Clique na guia para ver instruções usando a ferramenta de sua preferência.

Console

Para implantar uma nova revisão de um serviço atual, realize as etapas a seguir:

  1. Acessar o Cloud Run

  2. Localize o serviço que você quer atualizar na lista de serviços e clique nele para abrir os detalhes.

  3. Clique em EDITAR E IMPLANTAR NOVA REVISÃO. Isso exibe o formulário de implantação de revisão:

    imagem

  4. Se necessário, forneça o URL para a nova imagem do contêiner que você quer implantar.

  5. Opcionalmente, defina:

  6. Para enviar todo o tráfego para a nova revisão, marque a caixa de seleção identificada como Veicular esta revisão imediatamente. Para lançar uma nova revisão gradualmente, desmarque essa caixa de seleção: isso resultará em uma implantação em que nenhum tráfego será enviado para a nova revisão. Siga as instruções de lançamentos graduais após a implantação.

  7. Clique em IMPLANTAR e aguarde a conclusão da implantação.

Linha de comando

Para usar a linha de comando, você precisa já ter configurado a linha de comando gcloud.

Para implantar uma imagem de contêiner, realize as etapas a seguir:

  1. Execute o comando:

    gcloud run deploy SERVICE --image IMAGE_URL

    • Substitua SERVICE pelo nome do serviço que você está implantando. É possível omitir esse parâmetro inteiramente, mas será solicitado o nome do serviço, se você omiti-lo.
    • Substitua IMAGE_URL por uma referência à imagem do contêiner, por exemplo, gcr.io/myproject/my-image:latest.

      O sufixo de revisão é atribuído automaticamente para novas revisões. Se você quiser fornecer seu próprio sufixo de revisão, use o parâmetro de linha de comando gcloud - revision-sufix.

  2. Aguarde a conclusão da implantação. Após a conclusão bem-sucedida, uma mensagem de sucesso é exibida com o URL do serviço implantado.

YAML

Se você precisar fazer o download ou visualizar a configuração de um serviço existente, use o seguinte comando para salvar os resultados em um arquivo YAML:

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

Em um arquivo YAML de configuração de serviço, modifique qualquer atributo filho spec.template conforme desejado para atualizar as configurações de revisão e implante a nova revisão:

gcloud beta run services replace service.yaml

Cloud Code

Para implantar uma nova revisão de um serviço existente com o Cloud Code, leia os guias do IntelliJ e do Visual Studio Code.

Terraform

Você já precisará configurar o Terraform de acordo com o exemplo Como implantar um novo serviço.

  1. Faça uma alteração no arquivo de configuração.

  2. Aplique a configuração do Terraform:

    terraform apply

    Confirme que você quer aplicar as ações descritas digitando yes.

Locais do Cloud Run

O Cloud Run é regional, o que significa que a infraestrutura que executa seus serviços do Cloud Run está localizada em uma região específica e é gerenciada pelo Google para estar disponível de maneira redundante em todas as zonas da região.

Atender aos seus requisitos de latência, disponibilidade ou durabilidade são os principais fatores para selecionar a região em que seus serviços do Cloud Run são executados. Geralmente, é possível selecionar a região mais próxima de seus usuários, mas considere a localização dos outros produtos do Google Cloud usados pelo serviço do Cloud Run. O uso de produtos do Google Cloud em vários locais pode afetar a latência e o custo do serviço.

O Cloud Run está disponível nas regiões a seguir:

Sujeitas aos preços do nível 1

  • asia-east1 (Taiwan)
  • asia-northeast1 (Tóquio)
  • asia-northeast2 (Osaka)
  • europe-north1 (Finlândia)
  • europe-west1 (Bélgica)
  • europe-west4 (Países Baixos)
  • us-central1 (Iowa)
  • us-east1 (Carolina do Sul)
  • us-east4 (Norte da Virgínia)
  • us-west1 (Oregon)

Sujeitas aos preços do nível 2

  • asia-east2 (Hong Kong)
  • asia-northeast3 (Seul, Coreia do Sul)
  • asia-southeast1 (Singapura)
  • asia-southeast2 (Jacarta)
  • asia-south1 (Mumbai, Índia)
  • australia-southeast1 (Sydney)
  • europe-west2 (Londres, Reino Unido)
  • europe-west3 (Frankfurt, Alemanha)
  • europe-west6 (Zurique, Suíça)
  • northamerica-northeast1 (Montreal)
  • southamerica-east1 (São Paulo, Brasil)

Se você já criou um serviço do Cloud Run, poderá ver a região no painel do Cloud Run no Console do Cloud.

Como implantar imagens de outros projetos do Google Cloud

É possível implantar imagens de contêiner de outros projetos do Google Cloud se você definir as permissões corretas do IAM:

  1. No console do Console do Cloud, abra o projeto do serviço do Cloud Run.

  2. Acessar a página do IAM

  3. Copie o e-mail do agente de serviço do Cloud Run. Ele tem o sufixo @serverless-robot-prod.iam.gserviceaccount.com

  4. Abra o projeto com o registro do contêiner que você quer usar.

  5. Acessar a página do IAM

  6. Clique em Adicionar para adicionar um novo membro.

  7. Na caixa de texto Novos membros, cole o e-mail da conta de serviço que você copiou anteriormente.

  8. Na lista suspensa Selecionar um papel, selecione o papel Armazenamento -> Visualizador de objeto do armazenamento.

  9. Implante a imagem do contêiner no projeto que contém o serviço do Cloud Run.

A seguir

Depois de implantar um novo serviço, é possível realizar estas ações:

Automatize as compilações e as implantações dos serviços do Cloud Run usando os acionadores do Cloud Build: