Como implantar imagens de contêiner

Esta página descreve como implantar novos serviços e novas revisões no Cloud Run.

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

Registros e imagens de contêiner compatíveis

Não há limite de tamanho que se aplique à imagem de 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:

Se você estiver armazenando imagens de contêiner em outro tipo de registro de contêiner, siga as instruções em Como implantar imagens de registros não compatíveis.

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. Selecione a região em que você quer que o serviço esteja localizado. O seletor de região indica o nível de preço, a disponibilidade de mapeamentos de domínio e Eventarc e destaca regiões com o baixo impacto de carbono.

    2. 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.

  3. Clique em Avançar para acessar a página Configurar a primeira revisão do serviço:

    imagem

  4. No formulário, siga estas etapas:

    1. Se você quiser implantar manualmente um contêiner, selecione Implantar uma revisão de uma imagem de contêiner.
    2. Se você quiser automatizar a implantação contínua, selecione Implantar continuamente novas revisões de um repositório de origem e siga as instruções para implantações contínuas.
    3. Opcionalmente, clique em Mostrar configurações avançadas e nas guias subsequentes a serem definidas:
  5. Clique em Próximo para acessar a página Configurar como este serviço é acionado:

    imagem

    1. Defina as configurações de Entrada no formato conforme pretendido.

    2. 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.
  6. Clique em Criar para implantar a imagem no Cloud Run e aguarde a conclusão da implantação.

  7. 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.
    • IMAGE_URL por uma referência à imagem de contêiner, por exemplo, gcr.io/myproject/my-image:latest; Se você não fornecer a sinalização --image, o comando de implantação tentará implantar a partir do código-fonte.

      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 --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 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) Ícone de folha Baixo CO2
  • europe-west1 (Bélgica) Ícone de folha CO baixo 2
  • europe-west4 (Países Baixos)
  • us-central1 (Iowa)Ícone de folha Baixo CO2
  • us-east1 (Carolina do Sul)
  • us-east4 (Norte da Virgínia)
  • us-west1 (Oregon) Ícone de folha Baixo CO2

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)
  • asia-south2 (Déli, Índia)
  • australia-southeast1 (Sydney)
  • australia-southeast2 (Melbourne)
  • europe-central2 (Varsóvia, Polônia)
  • europe-west2 (Londres, Reino Unido)
  • europe-west3 (Frankfurt, Alemanha)
  • europe-west6 (Zurique, Suíça) Ícone de folha Baixo CO2
  • northamerica-northeast1 (Montreal) Ícone de folha Baixo CO2
  • northamerica-northeast2 (Toronto)
  • southamerica-east1 (São Paulo, Brasil) Ícone de folha Baixo CO2
  • us-west2 (Los Angeles)
  • us-west3 (Las Vegas)
  • us-west4 (Salt Lake City)

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

Durante a implantação, o agente de serviço do Cloud Run precisa acessar o contêiner implantado, que é o caso por padrão.

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. Você também pode usar as guias para definir:

  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.
    • IMAGE_URL por uma referência à imagem de 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 preferir para atualizar as configurações de revisão. Em seguida, implante a nova revisão:

gcloud 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) Ícone de folha Baixo CO2
  • europe-west1 (Bélgica) Ícone de folha CO baixo 2
  • europe-west4 (Países Baixos)
  • us-central1 (Iowa)Ícone de folha Baixo CO2
  • us-east1 (Carolina do Sul)
  • us-east4 (Norte da Virgínia)
  • us-west1 (Oregon) Ícone de folha Baixo CO2

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)
  • asia-south2 (Déli, Índia)
  • australia-southeast1 (Sydney)
  • australia-southeast2 (Melbourne)
  • europe-central2 (Varsóvia, Polônia)
  • europe-west2 (Londres, Reino Unido)
  • europe-west3 (Frankfurt, Alemanha)
  • europe-west6 (Zurique, Suíça) Ícone de folha Baixo CO2
  • northamerica-northeast1 (Montreal) Ícone de folha Baixo CO2
  • northamerica-northeast2 (Toronto)
  • southamerica-east1 (São Paulo, Brasil) Ícone de folha Baixo CO2
  • us-west2 (Los Angeles)
  • us-west3 (Las Vegas)
  • us-west4 (Salt Lake City)

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. Marque a caixa de seleção Incluir concessões de papéis fornecidos pelo Google.

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

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

  6. Acessar a página do IAM

  7. Clique em Adicionar para adicionar um novo membro.

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

  9. Na lista suspensa Selecionar um papel, se você estiver usando o Container Registry, selecione o papel Armazenamento -> Visualizador de objeto do armazenamento. Se você estiver usando o Artifact Registry, selecione o papel Artifact Registry -> Artifact Registry Reader.

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

Como implantar imagens de registros não compatíveis

Se você estiver armazenando imagens de contêiner em um registro de contêiner público ou privado não compatível, é possível enviá-las temporariamente para o Artifact Registry usando docker push para implantá-las no Cloud Run. A imagem do contêiner é importada pelo Cloud Run quando implantada, de modo que, depois da implantação, é possível excluir a imagem do Artifact Registry usando docker image rm.

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 gatilhos do Cloud Build: