Saída da VPC direta com uma rede da VPC

Pode ativar o seu serviço, tarefa ou conjunto de trabalhadores do Cloud Run para enviar tráfego para uma rede VPC através da saída da VPC direta sem necessidade de um conetor de acesso à VPC sem servidor.

Antes de começar

Limitações

As seguintes limitações aplicam-se a serviços, tarefas e pools de trabalhadores do Cloud Run:

  • Pode ocorrer um atraso de um minuto ou mais no estabelecimento da ligação no arranque da instância quando usar a saída da VPC direta. Recomendamos que configure uma sondagem de arranque HTTP que testa uma ligação a um destino de saída usado pela aplicação antes de a aplicação aceitar pedidos. Este teste de conetividade de saída deve implementar novas tentativas ou a sondagem de arranque deve ser definida com configurações de período e limite adequadas para atuar como uma nova tentativa.
  • O Cloud Run suporta um débito de até 1 Gbps por instância individual. Exceder este valor resulta na limitação do desempenho.
  • Uma quota de utilização do Cloud Run limita o número máximo de instâncias que pode configurar para usar a saída da VPC direta. O número máximo é configurado por revisão ou execução de tarefas do Cloud Run. Para aumentar os limites predefinidos, veja como aumentar as quotas.

  • Os serviços, as tarefas e os conjuntos de trabalhadores do Cloud Run podem sofrer interrupções de ligação durante eventos de manutenção da infraestrutura de rede. Recomendamos que use bibliotecas de cliente que possam processar reposições de ligação ocasionais.
  • O suporte de saída de VPC direta para tráfego IPv6 interno está disponível apenas na pré-visualização.
  • O NAT privado está disponível apenas na pré-visualização.

Os seguintes itens não são suportados pela saída direta da VPC:

  • Os registos de fluxo da VPC não fornecem o nome do serviço ou da revisão do Cloud Run.
  • Os registos de fluxo de VPC não são comunicados a partir de recursos que não sejam de MV, como o Cloud Run ou máquinas no local.
  • Espelhamento de pacotes
  • Network Intelligence Center, incluindo testes de conetividade
  • Tráfego IPv6 externo através de uma rede de VPC
  • Etiquetas de rede ou identidade do serviço nas regras da firewall de entrada.
  • As regras de firewall não podem usar etiquetas do Resource Manager anexadas a cargas de trabalho do Cloud Run.
  • As tarefas do Cloud Run que são executadas durante mais de 1 hora podem sofrer interrupções de ligação. Estas podem ocorrer durante eventos de manutenção que migram a tarefa de uma máquina para outra. O contentor recebe um sinal SIGTSTP 10 segundos antes do evento e um sinal SIGCONT após o evento. Depois de o contentor receber o sinal SIGCONT, tente estabelecer a ligação novamente.

Atribuição de endereços IP

Para colocar o seu serviço, tarefa ou conjunto de trabalhadores do Cloud Run numa rede VPC, especifique uma rede VPC ou uma sub-rede, ou ambas. Se especificar apenas uma rede, a sub-rede usa o mesmo nome que a rede. O Cloud Run atribui endereços IP da sua sub-rede.

Os endereços IP são efémeros, por isso, não crie políticas com base em IPs individuais. Se precisar de criar uma política baseada em IPs, como nas regras de firewall, tem de usar o intervalo de endereços IP de toda a sub-rede.

Para alterar a rede ou a sub-rede que o seu serviço, trabalho ou conjunto de trabalhadores usa, implemente uma nova revisão ou execute uma nova tarefa de trabalho que use os novos valores de rede e sub-rede.

Aumente e diminua a escala

Para um aumento mais rápido durante um pico de tráfego, o Cloud Run reserva endereços IP em blocos de 16 (máscara de sub-rede 28) de cada vez. Veja que endereços IP o Cloud Run atribuiu. Para garantir que tem endereços IPv4 suficientes disponíveis para utilização no Cloud Run, o intervalo de endereços IPv4 da sua sub-rede tem de ser /26 ou superior.

Para eficiência da atribuição de IPs e facilidade de gestão, coloque vários recursos na mesma sub-rede. Se o seu espaço de endereços IPv4 for limitado, consulte os intervalos IPv4 suportados para ver mais opções.

Para eliminar a sub-rede, primeiro tem de eliminar ou voltar a implementar os seus serviços, tarefas ou conjuntos de trabalhadores do Cloud Run para deixar de usar a sub-rede e, em seguida, aguardar 1 a 2 horas.

Consumo de endereços IP para serviços e pools de trabalhadores

No estado estável, o Cloud Run usa 2 vezes (2X) mais endereços IP do que o número de instâncias. Quando uma revisão é reduzida, o Cloud Run retém os respetivos endereços IP durante um máximo de 20 minutos. No total, reserve, pelo menos, o dobro do número de endereços IP, mais uma margem para ter em conta as atualizações de revisão.

Por exemplo, se atualizar as revisões para que revision 1 seja reduzido de 100 instâncias para zero, enquanto revision 2 é aumentado de zero para 100, o Cloud Run retém os endereços IP revision 1 durante um máximo de 20 minutos após a redução da escala. Durante o período de retenção de 20 minutos, tem de reservar, pelo menos, 400 endereços IP ((100 + 100) * 2).

Consumo de IP para empregos

Para tarefas do Cloud Run, cada tarefa consome 1 endereço IP durante a execução, mais 7 minutos após a conclusão. Certifique-se de que a sua sub-rede é suficientemente grande para acomodar todas as execuções de tarefas de trabalhos simultâneas, com uma sub-rede de reserva mínima /26 obrigatória.

Por exemplo:

  • Uma tarefa única que é executada diariamente e que termina sempre, pelo menos, 7 minutos antes da execução seguinte consome um máximo de 1 endereço IP na sub-rede.
  • Uma tarefa de 10 tarefas executada a cada 10 minutos, com cada tarefa a ser executada durante 15 minutos, consome 1 endereço IP durante 22 minutos por tarefa (3 execuções consomem endereços IP ao mesmo tempo), conforme mostrado no exemplo seguinte. Por conseguinte, a tarefa consome 30 endereços IP em estado estável.
  • Uma tarefa única que demora 1 minuto a ser executada e é executada 100 vezes por minuto requer aproximadamente 800 endereços IP, consoante a hora exata de execução.

Intervalos de IPv4 suportados

O Cloud Run suporta os seguintes intervalos IPv4 para a sua sub-rede:

  • RFC 1918
    • 10.0.0.0/8
    • 172.16.0.0/12
    • 192.168.0.0/16
  • RFC 6598
    • 100.64.0.0/10
  • Classe E
    • 240.0.0.0/4

Configure as autorizações do IAM

Certifique-se de que o Cloud Run tem acesso à rede VPC através de um dos seguintes métodos:

  • Função de agente de serviço do Cloud Run: por predefinição, o agente de serviço do Cloud Run tem a função de agente de serviço do Cloud Run (roles/run.serviceAgent) que contém as autorizações necessárias.

  • Autorizações personalizadas: para um controlo mais detalhado, conceda ao agente do serviço do Cloud Run as seguintes autorizações adicionais no projeto:

    • compute.networks.get
    • compute.subnetworks.get
    • compute.subnetworks.use no projeto ou na sub-rede específica
    • compute.addresses.get
    • compute.addresses.list
    • compute.addresses.createInternal
    • compute.addresses.deleteInternal
    • compute.regionOperations.get
  • Função de utilizador da rede de computação: se não usar a função de agente do serviço do Cloud Run predefinida nem as autorizações personalizadas, atribua a função de utilizador da rede de computação (roles/compute.networkUser) à conta de serviço do agente do serviço do Cloud Run executando o seguinte comando:

    gcloud projects add-iam-policy-binding PROJECT_ID \
    --member "serviceAccount:service-PROJECT_NUMBER@serverless-robot-prod.iam.gserviceaccount.com" \
    --role "roles/compute.networkUser"

    Substitua o seguinte:

    • PROJECT_ID: o ID do seu projeto.
    • PROJECT_NUMBER: o número do projeto onde implementa o seu serviço, tarefa ou conjunto de trabalhadores do Cloud Run.

Implemente um recurso do Cloud Run

Consoante o recurso do Cloud Run que tiver, consulte as instruções numa das seguintes secções:

Implemente um serviço

A saída da VPC direta permite que o seu serviço do Cloud Run envie tráfego para uma rede VPC sem um conetor do Acesso a VPC sem servidor. Os custos de rede são reduzidos a zero, tal como o próprio serviço. Também pode adicionar etiquetas de rede diretamente às revisões do serviço do Cloud Run para uma segurança de rede mais detalhada, como a aplicação de regras de firewall da VPC.

Pode configurar a saída direta da VPC com um serviço através da Google Cloud consola, da CLI do Google Cloud, de YAML ou do Terraform.

Consola

  1. Aceda ao Cloud Run

  2. Clique em Criar serviço se estiver a configurar um novo serviço para o qual está a implementar. Se estiver a configurar e implementar um serviço existente, clique no serviço e, de seguida, em Editar e implementar nova revisão.

  3. Se estiver a configurar um novo serviço, preencha a página de definições iniciais do serviço conforme necessário e, de seguida, clique em Contentores, volumes, rede, segurança para expandir a página de configuração do serviço.

  4. Clique no separador Rede.

  5. Clique em Ligar a uma VPC para tráfego de saída.

  6. Clique em Enviar tráfego diretamente para uma VPC.

  7. No campo Rede, selecione a rede VPC para a qual quer enviar tráfego.

  8. No campo Sub-rede, selecione a sub-rede a partir da qual o seu serviço recebe endereços IP. Pode implementar vários serviços na mesma sub-rede.

  9. Opcional: introduza os nomes das etiquetas de rede que quer associar ao seu serviço ou serviços. As etiquetas de rede são especificadas ao nível da revisão. Cada revisão do serviço pode ter etiquetas de rede diferentes, como network-tag-2.

  10. Para Encaminhamento de tráfego, selecione uma das seguintes opções:

    • Encaminhe apenas pedidos para IPs privados para a VPC para enviar apenas tráfego para endereços internos através da rede VPC.
    • Encaminhe todo o tráfego para a VPC para enviar todo o tráfego de saída através da rede de VPC.
  11. Clique em Criar ou Implementar.

  12. Para verificar se o seu serviço está na rede VPC, clique no serviço e, de seguida, clique no separador Redes. A rede e a sub-rede estão listadas no cartão VPC.

    Já pode enviar pedidos do seu serviço do Cloud Run para qualquer recurso na rede VPC, conforme permitido pelas regras da firewall.

gcloud

Para implementar um serviço do Cloud Run sem um conetor a partir da CLI do Google Cloud:

  1. Atualize os componentes do gcloud para a versão mais recente:

    gcloud components update
  2. Certifique-se de que a API Compute Engine está ativada para o seu projeto:

    gcloud services enable compute.googleapis.com
    
  3. Implemente o seu serviço do Cloud Run com o seguinte comando:

    gcloud run deploy SERVICE_NAME \
    --image=IMAGE_URL \
    --network=NETWORK \
    --subnet=SUBNET \
    --network-tags=NETWORK_TAG_NAMES \
    --vpc-egress=EGRESS_SETTING \
    --region=REGION

    Substituir:

    • SERVICE_NAME com o nome do seu serviço do Cloud Run.
    • IMAGE_URL: uma referência à imagem do contentor, por exemplo, us-docker.pkg.dev/cloudrun/container/hello:latest. Se usar o Artifact Registry, o repositório REPO_NAMEtem de já estar criado. O URL segue o formato LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
    • Opcional: NETWORK com o nome da sua rede de VPC. Especifique uma rede de VPC ou uma sub-rede, ou ambas. Se especificar apenas uma rede, a sub-rede usa o mesmo nome que a rede.
    • Opcional: SUBNET com o nome da sua sub-rede. Especifique uma rede de VPC ou uma sub-rede, ou ambas. Se especificar apenas uma rede, a sub-rede usa o mesmo nome que a rede. Pode implementar ou executar vários serviços, tarefas ou conjuntos de trabalhadores na mesma sub-rede.
    • Opcional: NETWORK_TAG_NAMES com os nomes separados por vírgulas das etiquetas de rede que quer associar a um serviço. Para serviços, as etiquetas de rede são especificadas ao nível da revisão. Cada revisão do serviço pode ter etiquetas de rede diferentes, como network-tag-2.
    • EGRESS_SETTING com um valor de definição de saída:
      • all-traffic: envia todo o tráfego de saída através da rede VPC.
      • private-ranges-only: envia apenas tráfego para endereços internos através da rede VPC.
    • REGION com uma região para o seu serviço.
  4. Para verificar se o seu serviço está na rede VPC, execute o seguinte comando:

    gcloud run services describe SERVICE_NAME \
    --region=REGION

    Substituir:

    • SERVICE_NAME com o nome do seu serviço.
    • REGION com a região do seu serviço que especificou no passo anterior.

    O resultado deve conter o nome da sua rede, sub-rede e definição de saída, por exemplo:

    VPC access:
      Network:       default
      Subnet:        subnet
      Egress:        private-ranges-only
    

Já pode enviar pedidos do seu serviço do Cloud Run para qualquer recurso na rede VPC, conforme permitido pelas regras da firewall.

YAML

  1. Se estiver a criar um novo serviço, ignore este passo. Se estiver a atualizar um serviço existente, transfira a respetiva configuração YAML:

    gcloud run services describe SERVICE --format export > service.yaml
  2. Atualize os seguintes atributos:

    apiVersion: serving.knative.dev/v1
      kind: Service
      metadata:
        name: SERVICE_NAME
        labels:
          cloud.googleapis.com/location: REGION
      spec:
        template:
          metadata:
            annotations:
              run.googleapis.com/network-interfaces: '[{"network":"NETWORK","subnetwork":"SUBNET","tags":"NETWORK_TAG_NAMES"}]'
              run.googleapis.com/vpc-access-egress: EGRESS_SETTING
          spec:
            containers:
            - image: IMAGE

    Substituir:

    • SERVICE_NAME com o nome do seu serviço do Cloud Run. Os nomes dos serviços têm de ter 49 carateres ou menos e têm de ser únicos por região e projeto.
    • REGION com a região do seu serviço do Cloud Run, que tem de corresponder à região da sua sub-rede.
    • Opcional: NETWORK com o nome da sua rede de VPC. Especifique uma rede de VPC ou uma sub-rede, ou ambas. Se especificar apenas uma rede, a sub-rede usa o mesmo nome que a rede.
    • Opcional: SUBNET com o nome da sua sub-rede. Especifique uma rede de VPC ou uma sub-rede, ou ambas. Se especificar apenas uma rede, a sub-rede usa o mesmo nome que a rede. Pode implementar ou executar vários serviços, tarefas ou conjuntos de trabalhadores na mesma sub-rede.
    • Opcional: NETWORK_TAG_NAMES com os nomes das etiquetas de rede que quer associar a um serviço. Para serviços, as etiquetas de rede são especificadas ao nível da revisão. Cada revisão do serviço pode ter etiquetas de rede diferentes, como network-tag-2.
    • EGRESS_SETTING com um valor de definição de saída:
      • all-traffic: envia todo o tráfego de saída através da rede VPC.
      • private-ranges-only: envia apenas tráfego para endereços internos através da rede VPC.
    • IMAGE com o URL da imagem do contentor de serviços.

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

  3. Crie ou atualize o serviço com o seguinte comando:

    gcloud run services replace service.yaml

Terraform

Para saber como aplicar ou remover uma configuração do Terraform, consulte os comandos básicos do Terraform.

  1. Adicione o seguinte ao ficheiro main.tf:

    /**
     * Copyright 2024 Google LLC
     *
     * Licensed under the Apache License, Version 2.0 (the "License");
     * you may not use this file except in compliance with the License.
     * You may obtain a copy of the License at
     *
     *      http://www.apache.org/licenses/LICENSE-2.0
     *
     * Unless required by applicable law or agreed to in writing, software
     * distributed under the License is distributed on an "AS IS" BASIS,
     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     * See the License for the specific language governing permissions and
     * limitations under the License.
     */
    
    # Example configuration of a Cloud Run service with direct VPC
    
    resource "google_cloud_run_v2_service" "default" {
      name     = "cloudrun-service"
      location = "us-central1"
    
      deletion_protection = false # set to "true" in production
    
      template {
        containers {
          image = "us-docker.pkg.dev/cloudrun/container/hello"
        }
        vpc_access {
          network_interfaces {
            network    = "default"
            subnetwork = "default"
            tags       = ["tag1", "tag2", "tag3"]
          }
        }
      }
    }
    

Opcionalmente, torne o seu serviço público se quiser permitir o acesso não autenticado ao serviço.

Crie um trabalho

A saída da VPC direta permite que a tarefa do Cloud Run envie tráfego para uma rede VPC sem um conetor do Acesso a VPC sem servidor. Também pode adicionar etiquetas de rede diretamente em tarefas do Cloud Run para uma segurança de rede mais detalhada, como a aplicação de regras da firewall da VPC.

Pode configurar a saída da VPC direta com uma tarefa através da Google Cloud consola, da CLI do Google Cloud ou do YAML.

Consola

  1. Aceda ao Cloud Run

  2. Se estiver a configurar uma nova tarefa, clique no separador Tarefas e preencha a página de definições iniciais da tarefa conforme necessário. Se estiver a configurar uma tarefa existente, clique na tarefa e, de seguida, em Editar.

  3. Clique em Recipiente, variáveis e segredos, ligações, segurança para expandir a página de propriedades da tarefa.

  4. Clique no separador Ligações.

  5. Clique em Ligar a uma VPC para tráfego de saída.

  6. Clique em Enviar tráfego diretamente para uma VPC.

  7. No campo Rede, selecione a rede de VPC para a qual quer enviar tráfego.

  8. No campo Sub-rede, selecione a sub-rede a partir da qual a tarefa recebe endereços IP. Pode executar várias tarefas na mesma sub-rede.

  9. Para Encaminhamento de tráfego, selecione uma das seguintes opções:

    • Encaminhe apenas pedidos para IPs privados para a VPC para enviar apenas tráfego para endereços internos através da rede VPC.
    • Encaminhe todo o tráfego para a VPC para enviar todo o tráfego de saída através da rede de VPC.
  10. Opcional: introduza os nomes das etiquetas de rede que quer associar ao seu serviço ou serviços. As etiquetas de rede são especificadas ao nível da revisão. Cada revisão do serviço pode ter etiquetas de rede diferentes, como network-tag-2.

  11. Opcional: introduza os nomes das etiquetas de rede que quer associar à sua tarefa ou tarefas. Para trabalhos, as etiquetas de rede são especificadas ao nível da execução. Cada execução de tarefa pode ter etiquetas de rede diferentes, como network-tag-2.

  12. Clique em Criar ou Atualizar.

  13. Para verificar se a tarefa está na sua rede VPC, clique na tarefa e, de seguida, clique no separador Configuração. A rede e a sub-rede estão indicadas no cartão VPC.

    Já pode executar a tarefa do Cloud Run e enviar pedidos da tarefa para qualquer recurso na rede da VPC, conforme permitido pelas regras de firewall.

gcloud

Para criar uma tarefa do Cloud Run sem um conector a partir da CLI do Google Cloud:

  1. Atualize os componentes do gcloud para a versão mais recente:

    gcloud components update
  2. Certifique-se de que a API Compute Engine está ativada para o seu projeto:

    gcloud services enable compute.googleapis.com
    
  3. Crie uma tarefa do Cloud Run com o seguinte comando:

    gcloud run jobs create JOB_NAME \
    --image=IMAGE_URL \
    --network=NETWORK \
    --subnet=SUBNET \
    --network-tags=NETWORK_TAG_NAMES \
    --vpc-egress=EGRESS_SETTING \
    --region=REGION

    Substituir:

    • JOB_NAME com o nome da tarefa do Cloud Run.
    • IMAGE_URL: uma referência à imagem do contentor, por exemplo, us-docker.pkg.dev/cloudrun/container/job:latest
    • Opcional: NETWORK com o nome da sua rede de VPC. Especifique uma rede de VPC ou uma sub-rede, ou ambas. Se especificar apenas uma rede, a sub-rede usa o mesmo nome que a rede.
    • Opcional: SUBNET com o nome da sua sub-rede. Especifique uma rede de VPC ou uma sub-rede, ou ambas. Se especificar apenas uma rede, a sub-rede usa o mesmo nome que a rede. Pode implementar ou executar vários serviços, tarefas ou conjuntos de trabalhadores na mesma sub-rede.
    • Opcional: NETWORK_TAG_NAMES com os nomes das etiquetas de rede que quer associar a uma tarefa. Para trabalhos, as etiquetas de rede são especificadas ao nível da execução. Cada execução de tarefa pode ter etiquetas de rede diferentes, como network-tag-2.
    • EGRESS_SETTING com um valor de definição de saída:
      • all-traffic: envia todo o tráfego de saída através da rede VPC.
      • private-ranges-only: envia apenas tráfego para endereços internos através da rede VPC.
    • REGION com uma região para o seu trabalho.
  4. Para verificar se a tarefa está na sua rede VPC, execute o seguinte comando:

    gcloud run jobs describe JOB_NAME \
      --region=REGION
      

    Substituir:

    • JOB_NAME com o nome do seu trabalho.
    • REGION com a região do seu trabalho que especificou no passo anterior.

    A saída deve conter o nome da sua rede e sub-rede, por exemplo:

    VPC network:
      Network:       default
      Subnet:        default
    

Já pode executar a tarefa do Cloud Run e enviar pedidos da tarefa para qualquer recurso na rede da VPC, conforme permitido pelas regras de firewall.

YAML

  1. Se estiver a criar uma nova tarefa, ignore este passo. Se estiver a atualizar uma tarefa existente, transfira a respetiva configuração YAML:

    gcloud run jobs describe JOB_NAME --format export > job.yaml
  2. Atualize os seguintes atributos:

    apiVersion: run.googleapis.com/v1
      kind: Job
      metadata:
        name: JOB_NAME
        labels:
          cloud.googleapis.com/location: REGION
      spec:
        template:
          metadata:
            annotations:
              run.googleapis.com/network-interfaces: '[{"network":"NETWORK","subnetwork":"SUBNET","tags":"NETWORK_TAG_NAMES"}]'
              run.googleapis.com/vpc-access-egress: EGRESS_SETTING
          spec:
            containers:
            - image: IMAGE

    Substituir:

    • JOB_NAME com o nome da tarefa do Cloud Run. Os nomes das tarefas têm de ter 49 carateres ou menos e têm de ser exclusivos por região e projeto.
    • REGION com a região da sua tarefa do Cloud Run, que tem de corresponder à região da sua sub-rede.
    • Opcional: NETWORK com o nome da sua rede de VPC. Especifique uma rede de VPC ou uma sub-rede, ou ambas. Se especificar apenas uma rede, a sub-rede usa o mesmo nome que a rede.
    • Opcional: SUBNET com o nome da sua sub-rede. Especifique uma rede de VPC ou uma sub-rede, ou ambas. Se especificar apenas uma rede, a sub-rede usa o mesmo nome que a rede. Pode implementar ou executar vários serviços, tarefas ou conjuntos de trabalhadores na mesma sub-rede.
    • Opcional: NETWORK_TAG_NAMES com os nomes das etiquetas de rede que quer associar a uma tarefa. Para trabalhos, as etiquetas de rede são especificadas ao nível da execução. Cada execução de tarefa pode ter etiquetas de rede diferentes, como network-tag-2.
    • EGRESS_SETTING com um valor de definição de saída:
      • all-traffic: envia todo o tráfego de saída através da rede VPC.
      • private-ranges-only: envia apenas tráfego para endereços internos através da rede VPC.
    • IMAGE com o URL da imagem do contentor do trabalho.
  3. Crie ou atualize a tarefa através do seguinte comando:

    gcloud run jobs replace job.yaml

Implemente um grupo de trabalhadores

A saída direta da VPC permite que o seu conjunto de trabalhadores do Cloud Run envie tráfego para uma rede VPC sem um conetor do Acesso a VPC sem servidor. Os custos de rede são reduzidos a zero, tal como o próprio conjunto de trabalhadores. Também pode adicionar etiquetas de rede diretamente nas revisões do conjunto de trabalhadores do Cloud Run para uma segurança de rede mais detalhada, como a aplicação de regras de firewall da VPC.

Pode configurar a saída da VPC direta com um conjunto de trabalhadores através da CLI do Google Cloud.

gcloud

Para implementar um conjunto de trabalhadores do Cloud Run sem um conetor a partir da CLI do Google Cloud:

  1. Atualize os componentes do gcloud para a versão mais recente:

    gcloud components update
  2. Certifique-se de que a API Compute Engine está ativada para o seu projeto:

    gcloud services enable compute.googleapis.com
    
  3. Implemente o seu conjunto de trabalhadores do Cloud Run com o seguinte comando:

    gcloud beta run worker-pools deploy WORKER_POOL \
        --image=IMAGE_URL \
        --network=NETWORK \
        --subnet=SUBNET \
        --network-tags=NETWORK_TAG_NAMES \
        --vpc-egress=EGRESS_SETTING \
        --region=REGION

    Substituir:

    • WORKER_POOL com o nome do seu conjunto de trabalhadores do Cloud Run. Os nomes dos conjuntos de trabalhadores têm de ter 49 carateres ou menos, usar um nome exclusivo por região e projeto, e não podem partilhar o mesmo nome que um nome de serviço existente do seu projeto. Se o grupo de trabalhadores ainda não existir, este comando cria o grupo de trabalhadores durante a implementação. Pode omitir totalmente este parâmetro, mas é-lhe pedido o nome do conjunto de trabalhadores se o omitir.
    • IMAGE_URL: uma referência à imagem do contentor que contém o conjunto de trabalhadores, como us-docker.pkg.dev/cloudrun/container/worker-pool:latest
    • Opcional:NETWORK com o nome da sua rede de VPC. Especifique uma rede de VPC ou uma sub-rede, ou ambas. Se especificar apenas uma rede, a sub-rede usa o mesmo nome que a rede.
    • Opcional: SUBNET com o nome da sua sub-rede. Especifique uma rede de VPC ou uma sub-rede, ou ambas. Se especificar apenas uma rede, a sub-rede usa o mesmo nome que a rede. Pode implementar ou executar vários serviços, tarefas ou conjuntos de trabalhadores na mesma sub-rede.
    • Opcional: NETWORK_TAG_NAMES com os nomes separados por vírgulas das etiquetas de rede que quer associar a um grupo de trabalhadores. Para serviços, as etiquetas de rede são especificadas ao nível da revisão. Cada revisão do conjunto de trabalhadores pode ter etiquetas de rede diferentes, como network-tag-2.
    • EGRESS_SETTING com um valor de definição de saída:
      • all-traffic: envia todo o tráfego de saída através da rede VPC.
      • private-ranges-only: envia apenas tráfego para endereços internos através da rede VPC.
    • REGION com uma região para o seu grupo de trabalhadores.
  4. Para verificar se o seu worker pool está na sua rede VPC, execute o seguinte comando:

    gcloud beta run worker-pools describe WORKER_POOL \
        --region=REGION

    Substituir:

    • WORKER_POOL com o nome do seu conjunto de trabalhadores.
    • REGION com a região do seu conjunto de trabalhadores que especificou no passo anterior.

    O resultado deve conter o nome da sua rede, sub-rede e definição de saída, por exemplo:

    VPC access:
      Network:       default
      Subnet:        subnet
      Egress:        private-ranges-only
    

Já pode enviar pedidos do seu conjunto de trabalhadores do Cloud Run para qualquer recurso na rede VPC, conforme permitido pelas regras da firewall.

Configure serviços e tarefas de pilha dupla

Para adicionar uma sub-rede de pilha dupla com um intervalo IPv6 interno num serviço ou numa tarefa do Cloud Run, consulte o artigo Configure serviços e tarefas de pilha dupla.

Restrinja o acesso com regras de firewall

Restrinja o acesso aos recursos numa rede VPC através de regras de firewall de VPC. Adicione estas restrições através de uma das seguintes estratégias:

  • Crie uma regra de firewall de entrada que faça referência ao seu serviço ou tarefa através do intervalo de IPs da sub-rede.
  • Crie uma regra de firewall de saída que se refira ao seu serviço ou trabalho.

    Na regra de firewall de saída, consulte o seu serviço ou tarefa através da identidade do serviço da conta de serviço associada, do intervalo de IP da sub-rede ou das etiquetas de rede associadas.

Etiquetas de rede para saída

Adicione uma camada adicional de segurança de rede através de etiquetas de rede nas regras de firewall de saída.

Consola

Para associar etiquetas de rede a um serviço ou a um trabalho:

  1. Na Google Cloud consola, aceda à página Cloud Run.

    Aceda ao Cloud Run

  2. Clique no serviço ou na tarefa que quer associar a etiquetas de rede e, de seguida, clique em Editar e implementar nova revisão para serviços ou Editar para tarefas.

  3. Clique no separador Rede para serviços ou no separador Ligações para tarefas.

  4. Certifique-se de que selecionou Ligar a uma VPC para tráfego de saída e Enviar tráfego diretamente para uma VPC.

  5. No campo Sub-rede, selecione a sub-rede a partir da qual o seu serviço recebe endereços IP. Pode implementar ou executar vários serviços ou tarefas na mesma sub-rede.

  6. No campo Etiquetas de rede, introduza os nomes das etiquetas de rede que quer associar ao seu serviço ou trabalho.

  7. Clique em Implementar ou Atualizar.

Para serviços, cada revisão de serviço pode ter um conjunto diferente de etiquetas de rede, uma vez que as etiquetas de rede são especificadas ao nível da revisão. Para tarefas, uma execução de tarefa tem as mesmas etiquetas de rede que a tarefa tinha quando a execução da tarefa foi criada.

gcloud

Para associar etiquetas de rede a um serviço ou uma tarefa, use o comando gcloud run deploy:

gcloud run deploy SERVICE_JOB_NAME \
    --image=IMAGE_URL \
    --network=NETWORK \
    --subnet=SUBNET \
    --network-tags=NETWORK_TAG_NAMES \
    --region=REGION

Substitua o seguinte:

  • SERVICE_JOB_NAME com o nome do seu serviço ou trabalho.
  • IMAGE_URL com o URL da imagem do serviço ou da tarefa.
  • NETWORK com o nome da sua rede VPC.
  • SUBNET com o nome da sua sub-rede. Especifique uma rede de VPC ou uma sub-rede, ou ambas. Se especificar apenas uma rede, a sub-rede usa o mesmo nome que a rede. Pode implementar ou executar vários serviços, tarefas ou conjuntos de trabalhadores na mesma sub-rede.
  • NETWORK_TAG_NAMES com o nome da etiqueta de rede ou uma lista de etiquetas de rede separada por vírgulas.
  • REGION com o nome da sua região.

Para serviços, cada revisão de serviço pode ter um conjunto diferente de etiquetas de rede, uma vez que as etiquetas de rede são especificadas ao nível da revisão. Para tarefas, uma execução de tarefa tem as mesmas etiquetas de rede que a tarefa tinha quando a execução da tarefa foi criada.

Desassocie um recurso do Cloud Run

Consoante o recurso do Cloud Run que tiver, consulte as instruções numa das seguintes secções:

Desassocie um serviço

Consola

  • Para remover o seu serviço da rede VPC:

    1. Aceda ao Cloud Run

    2. Clique no serviço que quer remover e, de seguida, clique em Editar e implementar nova revisão.

    3. Clique no separador Rede.

    4. Desmarque a opção Estabelecer ligação a uma VPC para tráfego de saída.

    5. Clique em Implementar.

    6. Para verificar se o seu serviço já não está na rede VPC, clique no separador Rede. A rede e a sub-rede já não são apresentadas no cartão VPC.

  • Para remover apenas as etiquetas de rede e manter o serviço ligado à rede VPC:

    1. Clique no serviço que contém as etiquetas de rede que quer remover e, de seguida, clique em Editar e implementar nova revisão.

    2. Clique no separador Rede.

    3. Limpe os nomes das etiquetas de rede que já não quer associar ao seu serviço.

    4. Clique em Implementar.

gcloud

  • Para remover o seu serviço da rede VPC, execute o seguinte comando:

    gcloud run services update SERVICE_NAME --region=REGION \
    --clear-network
  • Para remover apenas as etiquetas de rede e manter o serviço ligado à rede VPC, execute o seguinte comando:

    gcloud run services update SERVICE_NAME --region=REGION \
    --clear-network-tags

    Substitua o seguinte:

    • SERVICE_NAME: o nome do seu serviço do Cloud Run.
    • REGION: a região do seu serviço do Cloud Run.

YAML

  • Para remover o seu serviço da rede VPC:

    1. Transfira a configuração YAML do serviço:

      gcloud run services describe SERVICE_NAME --format export > service.yaml
    2. Remova o seguinte conteúdo do seu ficheiro service.yaml:

      run.googleapis.com/network-interfaces: '[{"network":"NETWORK","subnetwork":"SUBNET","tags":"NETWORK_TAG_NAMES"}]'

      Onde

      • NETWORK: o nome da sua rede VPC.
      • SUBNET: o nome da sua sub-rede.
      • Opcional: NETWORK_TAG_NAMES: os nomes das etiquetas de rede se as tiver associado a um serviço.
    3. Implemente a revisão do serviço executando o seguinte comando:

      gcloud run services replace service.yaml
  • Para remover apenas as etiquetas de rede e manter o serviço ligado à rede VPC:

    1. Transfira a configuração YAML do serviço:

      gcloud run services describe SERVICE_NAME --format export > service.yaml
    2. Remova a variável tags do conteúdo no ficheiro service.yaml, deixando as variáveis network e subnetwork no lugar, conforme mostrado no exemplo seguinte:

      run.googleapis.com/network-interfaces: '[{"network":"NETWORK","subnetwork":"SUBNET"}]'

      Onde

      • NETWORK: o nome da sua rede VPC.
      • SUBNET: o nome da sua sub-rede.
    3. Implemente a revisão do serviço executando o seguinte comando:

      gcloud run services replace service.yaml

Desassocie uma tarefa

Consola

  • Para remover a tarefa da rede VPC:

    1. Aceda ao Cloud Run

    2. Clique no trabalho que quer remover e, de seguida, clique em Editar e implementar nova revisão.

    3. Clique no separador Ligações.

    4. Desmarque a opção Estabelecer ligação a uma VPC para tráfego de saída.

    5. Clique em Atualizar.

    6. Para verificar se a tarefa já não está na sua rede VPC, clique no separador Configuração. A rede e a sub-rede já não são apresentadas no cartão VPC.

  • Para remover apenas as etiquetas de rede e manter a tarefa associada à rede VPC:

    1. Clique na tarefa que contém as etiquetas de rede que quer remover e, de seguida, clique em Editar e implementar nova revisão.

    2. Clique no separador Ligações.

    3. Limpe os nomes das etiquetas de rede que já não quer associar ao seu trabalho.

    4. Clique em Atualizar.

gcloud

  • Para remover a tarefa da rede VPC, execute o seguinte comando:

    gcloud run jobs update JOB_NAME --region=REGION \
      --clear-network
      
  • Para remover apenas as etiquetas de rede e manter a tarefa associada à rede VPC, execute o seguinte comando:

    gcloud run jobs update JOB_NAME --region=REGION \
      --clear-network-tags
      

    Substitua o seguinte:

    • JOB_NAME: o nome da sua tarefa do Cloud Run.
    • REGION: a região da sua tarefa do Cloud Run.

YAML

  • Para remover a tarefa da rede VPC:

    1. Transfira a configuração YAML da tarefa:

      gcloud run jobs describe JOB_NAME --format export > job.yaml
    2. Remova o seguinte conteúdo do seu ficheiro job.yaml:

      run.googleapis.com/network-interfaces: '[{"network":"NETWORK","subnetwork":"SUBNET","tags":"NETWORK_TAG_NAMES"}]'

      Substitua o seguinte:

      • NETWORK: o nome da sua rede VPC.
      • SUBNET: o nome da sua sub-rede.
      • Opcional: NETWORK_TAG_NAMES com os nomes das etiquetas de rede, se as tiver associado a uma tarefa.
    3. Atualize a tarefa executando o seguinte comando:

      gcloud run jobs replace job.yaml
  • Para remover apenas as etiquetas de rede e manter a tarefa associada à rede VPC:

    1. Transfira a configuração YAML da tarefa:

      gcloud run jobs describe JOB_NAME --format export > job.yaml
    2. Remova a variável tags do conteúdo no ficheiro job.yaml, deixando as variáveis network e subnetwork no lugar, conforme mostrado no exemplo seguinte:

      run.googleapis.com/network-interfaces: '[{"network":"NETWORK","subnetwork":"SUBNET"}]'

      Substitua o seguinte:

      • NETWORK: o nome da sua rede VPC.
      • SUBNET: o nome da sua sub-rede.
    3. Atualize a tarefa executando o seguinte comando:

      gcloud run jobs replace job.yaml

Desassocie um grupo de trabalhadores

gcloud

  • Para remover o seu conjunto de trabalhadores da rede VPC, execute o seguinte comando:

    gcloud beta run worker-pools update WORKER_POOL --region=REGION \
    --clear-network
  • Para remover apenas as etiquetas de rede e manter o conjunto de trabalhadores ligado à rede VPC, execute o seguinte comando:

    gcloud beta run worker-pools update WORKER_POOL --region=REGION \
    --clear-network-tags

    Substitua o seguinte:

    • WORKER_POOL: o nome do seu conjunto de trabalhadores do Cloud Run.
    • REGION: a região do seu conjunto de trabalhadores do Cloud Run.

Resolução de problemas

Não é possível eliminar a sub-rede

Para eliminar uma sub-rede, tem de eliminar ou voltar a implementar todos os recursos que a usam. Se o Cloud Run estiver a usar uma sub-rede, desligue o serviço do Cloud Run ou a tarefa da rede VPC ou mova-o para uma sub-rede diferente antes de eliminar a sub-rede.

A sub-rede de saída da VPC direta fica sem endereços IPv4

Ocorre o seguinte erro quando tenta implementar:

Instance failed to start because of insufficient free IP addresses in the
subnetwork SUBNET_ID when attempting to create an address in the
subnetwork. Please consider moving to a subnetwork with more available IP
addresses.

Se a sub-rede da rede VPC ficar sem endereços IPv4, é registada pelo Cloud Logging. Quando isto ocorre, o Cloud Run não pode iniciar mais instâncias de serviço nem tarefas de trabalho até ficarem disponíveis mais endereços IPv4.

Para resolver este problema, siga as estratégias de esgotamento de endereços IP.

Veja os endereços IP atribuídos

Para ver os endereços IP que o Cloud Run atribuiu, aceda à página Endereços IP na Google Cloud consola ou execute o seguinte comando na CLI do Google Cloud:

gcloud compute addresses list

Problemas com MTU personalizado

Se tiver problemas com uma MTU personalizada, certifique-se de que usa a definição de MTU predefinida para o Cloud Run.