Conectar-se a uma rede VPC

Nesta página, mostramos como conectar um serviço ou job do Cloud Run à sua rede VPC, permitindo tráfego de saída (saída) do Cloud Run para Instâncias de VM do Compute Engine, instâncias do Memorystore e outros recursos com um endereço IP interno.

É possível permitir que seu serviço ou job envie tráfego para uma rede VPC configurando um conector de acesso VPC sem servidor ou usando a saída de VPC direta (visualização). sem necessidade de conector.

Antes de começar

Limitações

O tráfego de IPv6 não é compatível.

Criar um conector

Para enviar solicitações à sua rede VPC e receber as respostas correspondentes sem usar a Internet pública, use um conector de acesso VPC sem servidor.

É possível criar um conector usando o console do Google Cloud, a Google Cloud CLI ou o Terraform.

Console

  1. Acesse a página de visão geral do acesso VPC sem servidor.

    Página do console sobre o acesso VPC sem servidor

  2. Clique em Criar conector.

  3. No campo Nome, insira um nome para o conector. Esse nome precisa estar de acordo com a convenção de nomenclatura do Compute Engine, com a restrição adicional de que precisa ter menos de 21 caracteres e os hífens (-) contam como dois caracteres.

  4. No campo Região, selecione uma região para o conector. Ela precisa corresponder à região do serviço sem servidor.

    Se o serviço ou job estiver na região us-central ou europe-west, use us-central1 ou europe-west1.

  5. No campo Rede, selecione uma rede VPC para o conector.

  6. Clique no menu Sub-rede. Cada conector VPC requer a própria sub-rede /28 para colocar instâncias de conector. Uma sub-rede não pode ser usada por outros recursos, como VMs, Private Service Connect ou balanceadores de carga.

    • Se você estiver usando a VPC compartilhada, o que exige que você use sua própria sub-rede, selecione uma sub-rede /28 não utilizada. Para confirmar se a sub-rede não está sendo usada para o Private Service Connect ou o Cloud Load Balancing, verifique se o purpose da rede é PRIVATE executando o seguinte comando na CLI gcloud:

      gcloud compute networks subnets describe SUBNET
      
      Substitua:

      • SUBNET: o nome da sub-rede
    • Se você não estiver usando a VPC compartilhada, crie uma sub-rede para o conector ou selecione Intervalo de IP personalizado no menu para que o conector crie uma sub-rede.

    • No campo Intervalo de IP, insira o primeiro endereço em um intervalo de IP interno CIDR /28 não reservado. Ele não pode sobrepor nenhuma reserva de endereço IP atual na rede VPC. Por exemplo, 10.8.0.0 (/28) funcionará na maioria dos novos projetos.

    • A sub-rede criada fica oculta e não pode ser usada em regras de firewall e configurações NAT.

    • Veja quais intervalos de IP estão reservados no console do Google Cloud.

    • Saiba mais sobre como trabalhar com sub-redes.

  7. Opcional: se você quiser configurar opções de escalonamento para ter mais controle sobre o conector, clique em Mostrar configurações de escalonamento para exibir o formulário de escalonamento:

    1. Defina os números mínimo e máximo de instâncias para seu conector ou use os padrões, que são 2 (mínimo) e 10 (máximo). O conector é escalonado de acordo com o máximo especificado se o uso do tráfego exigir, mas o conector não reduz o escalonamento quando o tráfego diminui. É preciso usar valores entre 2 e 10.
    2. No menu suspenso Tipo de instância, escolha o tipo de máquina a ser usado para o conector ou use o padrão e2-micro. Observe a barra lateral de custo à direita ao escolher o tipo de instância, que exibe a largura de banda e as estimativas de custo.
  8. Clique em Criar.

  9. Uma marca de seleção verde aparecerá ao lado do nome do conector quando ele estiver pronto para uso.

gcloud

  1. No Console do Google Cloud, ative o Cloud Shell.

    Ativar o Cloud Shell

    Na parte inferior do Console do Google Cloud, uma sessão do Cloud Shell é iniciada e exibe um prompt de linha de comando. O Cloud Shell é um ambiente shell com a CLI do Google Cloud já instalada e com valores já definidos para o projeto atual. A inicialização da sessão pode levar alguns segundos.

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

    gcloud components update
    
  3. Certifique-se de que a API de acesso VPC sem servidor esteja ativada para seu projeto:

    gcloud services enable vpcaccess.googleapis.com
    
  4. Se você estiver usando a VPC compartilhada, o que exige que você use sua própria sub-rede, crie um conector com o comando a seguir:

    gcloud compute networks vpc-access connectors create CONNECTOR_NAME \
    --region REGION \
    --subnet SUBNET \
    # If you are not using Shared VPC, omit the following line.
    --subnet-project HOST_PROJECT_ID \
    # Optional: specify minimum and maximum instance values between 2 and
    10, default is 2 min, 10 max.
    --min-instances MIN \
    --max-instances MAX \
    # Optional: specify machine type, default is e2-micro
    --machine-type MACHINE_TYPE
    

    Substitua:

    • CONNECTOR_NAME: um nome para o conector. Ele precisa estar de acordo com a convenção de nomenclatura do Compute Engine, com a restrição adicional de que precisa ter menos de 21 caracteres e hífens (-) contando como dois caracteres.
    • REGION: uma região do conector. Ela precisa corresponder à região do serviço ou job sem servidor. Se o serviço ou job estiver na região us-central ou europe-west, use us-central1 ou europe-west1.
    • SUBNET: o nome de uma sub-rede /28 não utilizada.
      • As sub-redes precisam ser usadas exclusivamente pelo conector. Elas não podem ser usadas por outros recursos, como VMs, Private Service Connect ou balanceadores de carga.
      • Para confirmar se a sub-rede não está sendo usada para o Private Service Connect ou o Cloud Load Balancing, verifique se o purpose da rede é PRIVATE executando o seguinte comando na CLI gcloud:
        gcloud compute networks subnets describe SUBNET
        
        Substitua:
        • SUBNET: o nome da sub-rede.
      • Saiba mais sobre como trabalhar com sub-redes.
    • HOST_PROJECT_ID: o ID do projeto host. Forneça-o somente se você estiver usando uma VPC compartilhada.
    • MIN: é o número mínimo de instâncias a serem usadas no conector. Use um número inteiro entre 2 e 9. O padrão é 2. Para saber mais sobre o escalonamento do conector, consulte Capacidade de processamento e escalonamento.
    • MAX: o número máximo de instâncias a serem usadas no conector. Use um número inteiro entre 3 e 10. O padrão é 10. Se o tráfego exigir, o conector será escalonado horizontalmente para instâncias [MAX], mas a escala não será reduzida. Para saber mais sobre o escalonamento do conector, consulte Capacidade de processamento e escalonamento.
    • MACHINE_TYPE: f1-micro, e2-micro, ou e2-standard-4. Para saber mais sobre a capacidade de processamento do conector, incluindo o tipo de máquina e o escalonamento, consulte Capacidade de processamento e escalonamento.

    Para mais detalhes e argumentos opcionais, consulte a página de referência da gcloud.

  5. Se você não estiver usando a VPC compartilhada e quiser fornecer um intervalo de IP personalizado em vez de usar uma sub-rede, crie um conector com o comando:

    gcloud compute networks vpc-access connectors create CONNECTOR_NAME \
    --network VPC_NETWORK \
    --region REGION \
    --range IP_RANGE
    

    Substitua:

    • CONNECTOR_NAME: um nome para o conector. Ele precisa estar de acordo com a convenção de nomenclatura do Compute Engine, com a restrição adicional de que precisa ter menos de 21 caracteres e hífens (-) contando como dois caracteres.
    • VPC_NETWORK: a rede VPC a que seu conector será anexado.
    • REGION: uma região para o conector. Ela precisa corresponder à região do serviço ou job sem servidor. Se o serviço ou job estiver na região us-central ou europe-west, use us-central1 ou europe-west1.
    • IP_RANGE: uma rede de IP interno não reservada, e é necessário ter /28 de espaço não alocado. O valor fornecido é a rede em notação CIDR (10.8.0.0/28). Esse intervalo de IP não pode se sobrepor a nenhuma reserva de endereço IP existente na rede VPC. Por exemplo, 10.8.0.0/28 funciona na maioria dos projetos novos. A sub-rede criada para esse intervalo fica oculta e não pode ser usada em regras de firewall e configurações NAT.

    Para mais detalhes e argumentos opcionais, como controles de capacidade, consulte a referência do gcloud.

  6. Verifique se o conector está no estado READY antes de usá-lo:

    gcloud compute networks vpc-access connectors describe CONNECTOR_NAME \
    --region REGION
    

    Substitua:

    • CONNECTOR_NAME: o nome do conector. Este é o nome que você especificou na etapa anterior.
    • REGION: a região do conector. Esta é a região especificada na etapa anterior.

    A saída precisa conter a linha state: READY.

Terraform

É possível usar um recurso do Terraform para ativar a API vpcaccess.googleapis.com.

resource "google_project_service" "vpcaccess-api" {
  project = var.project_id # Replace this with your project ID in quotes
  service = "vpcaccess.googleapis.com"
}

É possível usar módulos do Terraform para criar uma rede VPC e uma sub-rede e, em seguida, criar o conector.

module "test-vpc-module" {
  source       = "terraform-google-modules/network/google"
  version      = "~> 9.0"
  project_id   = var.project_id # Replace this with your project ID in quotes
  network_name = "my-serverless-network"
  mtu          = 1460

  subnets = [
    {
      subnet_name   = "serverless-subnet"
      subnet_ip     = "10.10.10.0/28"
      subnet_region = "us-central1"
    }
  ]
}

module "serverless-connector" {
  source     = "terraform-google-modules/network/google//modules/vpc-serverless-connector-beta"
  version    = "~> 9.0"
  project_id = var.project_id
  vpc_connectors = [{
    name        = "central-serverless"
    region      = "us-central1"
    subnet_name = module.test-vpc-module.subnets["us-central1/serverless-subnet"].name
    # host_project_id = var.host_project_id # Specify a host_project_id for shared VPC
    machine_type  = "e2-standard-4"
    min_instances = 2
    max_instances = 7
    }
    # Uncomment to specify an ip_cidr_range
    #   , {
    #     name          = "central-serverless2"
    #     region        = "us-central1"
    #     network       = module.test-vpc-module.network_name
    #     ip_cidr_range = "10.10.11.0/28"
    #     subnet_name   = null
    #     machine_type  = "e2-standard-4"
    #     min_instances = 2
    #   max_instances = 7 }
  ]
  depends_on = [
    google_project_service.vpcaccess-api
  ]
}

Configurar o ambiente sem servidor para usar um conector

Depois de criar um conector de acesso VPC sem servidor, configure o ambiente sem servidor para usar o conector seguindo as instruções para o ambiente sem servidor:

Configure o Cloud Run para usar um conector

Quando você cria um novo serviço ou implanta uma nova revisão, é possível configurar o serviço para usar um conector com o console do Google Cloud, a Google Cloud CLI, um arquivo YAML ou um recurso do Terraform.

Console

  1. No console do Google Cloud, acesse o Cloud Run:

    Acesse o Cloud Run

  2. Clique em Criar serviço se estiver configurando um novo serviço em que fará uma implantação. Se você estiver configurando um serviço atual, clique nele e em Editar e implantar nova revisão.

  3. Se você estiver configurando um novo serviço, preencha a página inicial de configurações do serviço conforme preferir e clique em Contêineres, volumes, rede, segurança para expandir a página de configurações do serviço.

  4. Clique na guia Conexões.

    imagem

    • No campo Conector VPC, selecione um conector para usar ou selecione Nenhum para desconectar seu serviço de uma rede VPC.
  5. Clique em Criar ou Implantar.

gcloud

  1. No Console do Google Cloud, ative o Cloud Shell.

    Ativar o Cloud Shell

    Na parte inferior do Console do Google Cloud, uma sessão do Cloud Shell é iniciada e exibe um prompt de linha de comando. O Cloud Shell é um ambiente shell com a CLI do Google Cloud já instalada e com valores já definidos para o projeto atual. A inicialização da sessão pode levar alguns segundos.

  2. Para especificar um conector durante a implantação, use a sinalização --vpc-connector:

    gcloud run deploy SERVICE --image IMAGE_URL --vpc-connector CONNECTOR_NAME
    • SERVICE pelo nome do serviço;
    • Substitua IMAGE_URL.
    • Substitua CONNECTOR_NAME pelo nome do seu conector. Se o conector estiver no projeto host de uma VPC compartilhada, este precisará ser o nome totalmente especificado, por exemplo:
      projects/HOST_PROJECT_ID/locations/CONNECTOR_REGION/connectors/CONNECTOR_NAME
      em que HOST_PROJECT_ID é o ID do projeto host, CONNECTOR_REGION é a região do conector e CONNECTOR_NAME é o nome que você deu ao conector.

    Para anexar, atualizar ou remover um conector de um serviço atual, use o comando gcloud run services update com uma das seguintes sinalizações, conforme necessário:

    Por exemplo, para anexar ou atualizar um conector:

    gcloud run services update SERVICE --vpc-connector CONNECTOR_NAME
    • Substitua SERVICE pelo nome do serviço.
    • Substitua CONNECTOR_NAME pelo nome do seu conector.

YAML

É possível fazer o download e conferir as configurações de serviço usando o comando gcloud run services describe --format export, que produz resultados limpos no formato YAML. Em seguida, modifique os campos descritos abaixo e faça upload do YAML modificado usando o comando gcloud run services replace. Modifique os campos somente conforme documentado.

  1. Para visualizar e fazer o download da configuração:

    gcloud run services describe SERVICE --format export > service.yaml
  2. Adicione ou atualize o atributo run.googleapis.com/vpc-access-connector no atributo annotations no atributo spec de nível superior:

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
    spec:
      template:
        metadata:
          annotations:
            run.googleapis.com/vpc-access-connector: CONNECTOR_NAME
    • Substitua SERVICE pelo nome do serviço do Cloud Run.
    • Substitua CONNECTOR_NAME pelo nome do seu conector. Se o conector estiver no projeto host de uma VPC compartilhada, este precisará ser o nome totalmente especificado, por exemplo:
      projects/HOST_PROJECT_ID/locations/CONNECTOR_REGION/connectors/CONNECTOR_NAME
      em que HOST_PROJECT_ID é o ID do projeto host, CONNECTOR_REGION é a região do conector e CONNECTOR_NAME é o nome que você deu ao conector.
  3. Substitua o serviço pela nova configuração usando o seguinte comando:

    gcloud beta run services replace service.yaml

Terraform

É possível usar um recurso do Terraform para criar um serviço e configurá-lo para usar seu conector.

# Cloud Run service
resource "google_cloud_run_v2_service" "gcr_service" {
  name     = "mygcrservice"
  provider = google-beta
  location = "us-west1"

  template {
    containers {
      image = "us-docker.pkg.dev/cloudrun/container/hello"
      resources {
        limits = {
          cpu    = "1000m"
          memory = "512Mi"
        }
      }
      # the service uses this SA to call other Google Cloud APIs
      # service_account_name = myservice_runtime_sa
    }

    scaling {
      # Limit scale up to prevent any cost blow outs!
      max_instance_count = 5
    }

    vpc_access {
      # Use the VPC Connector
      connector = google_vpc_access_connector.connector.id
      # all egress from the service should go through the VPC Connector
      egress = "ALL_TRAFFIC"
    }
  }
}

Configurar o Cloud Functions para usar um conector

É possível configurar uma função para usar um conector no Console do Google Cloud ou com a Google Cloud CLI:

Console

  1. Acesse a página de visão geral do Cloud Functions no console do Google Cloud:

    Acessar o Cloud Functions

  2. Clique em Criar função. Como alternativa, clique em uma função existente para acessar a página de informações dela e clique em Editar.

  3. Expanda as configurações avançadas clicando em CONFIGURAÇÕES DE TEMPO DE EXECUÇÃO, CRIAÇÃO E CONEXÕES.

  4. Na guia Conexões, em "Configurações de saída", insira o nome do conector no campo Conector de VPC.

gcloud

  1. No Console do Google Cloud, ative o Cloud Shell.

    Ativar o Cloud Shell

    Na parte inferior do Console do Google Cloud, uma sessão do Cloud Shell é iniciada e exibe um prompt de linha de comando. O Cloud Shell é um ambiente shell com a CLI do Google Cloud já instalada e com valores já definidos para o projeto atual. A inicialização da sessão pode levar alguns segundos.

  2. Use o comando gcloud functions deploy para implantar a função e especificar a sinalização --vpc-connector:

    gcloud functions deploy FUNCTION_NAME \
    --vpc-connector CONNECTOR_NAME \
    FLAGS...
    

    em que:

    • FUNCTION_NAME é o nome da função.
    • CONNECTOR_NAME é o nome do conector. Se o conector estiver no projeto host de uma VPC compartilhada, este precisará ser o nome totalmente especificado, por exemplo:
      projects/HOST_PROJECT_ID/locations/CONNECTOR_REGION/connectors/CONNECTOR_NAME
      em que HOST_PROJECT_ID é o ID do projeto host, CONNECTOR_REGION é a região do conector e CONNECTOR_NAME é o nome que você deu ao conector.
    • FLAGS... refere-se a outras sinalizações que são transmitidas durante a implantação da função.

Para ter mais controle sobre quais solicitações são roteadas pelo conector, consulte Configurações de saída.

Configurar o App Engine para usar um conector

Python 2

  1. Interrompa o uso do serviço de busca de URL do App Engine.

    Por padrão, todas as solicitações são roteadas pelo serviço de busca de URL. Isso faz com que as solicitações feitas à rede VPC falhem. Para desativar esse padrão, consulte Como desativar a busca de URL de todas as solicitações de saída.

    Você ainda pode usar a biblioteca urlfetch diretamente para solicitações individuais, se necessário, mas isso não é recomendado.

  2. Adicione o campo "Acesso VPC sem servidor" ao arquivo app.yaml:

    vpc_access_connector:
     name: projects/PROJECT_ID/locations/REGION/connectors/CONNECTOR_NAME
    

    Substitua:

    • PROJECT_ID pelo ID de projeto do Google Cloud; Se o conector estiver no projeto host de uma VPC compartilhada, ele precisa ser o ID do projeto host.
    • REGION pela região em que o conector se encontra;
    • CONNECTOR_NAME pelo nome do conector.
  3. Implante o serviço:

    gcloud app deploy

    Depois de reimplantado, o serviço pode enviar solicitações para endereços IP internos a fim de acessar recursos na rede VPC.

Java 8

  1. Interrompa o uso do serviço de busca de URL do App Engine URLFetchService.

  2. Adicione o elemento de acesso VPC sem servidor ao arquivo appengine-web.xml do serviço:

    <vpc-access-connector>
    <name>projects/PROJECT_ID/locations/REGION/connectors/CONNECTOR_NAME</name>
    </vpc-access-connector>
    

    Substitua:

    • PROJECT_ID pelo ID de projeto do Google Cloud; Se o conector estiver no projeto host de uma VPC compartilhada, ele precisa ser o ID do projeto host.
    • REGION pela região em que o conector se encontra;
    • CONNECTOR_NAME pelo nome do conector.
  3. Implante o serviço:

    gcloud app deploy WEB-INF/appengine-web.xml

    Depois de reimplantado, o serviço pode enviar solicitações para endereços IP internos a fim de acessar recursos na rede VPC.

Go 1.11

  1. Interrompa o uso do serviço de busca de URL do App Engine.

    O acesso VPC sem servidor não é compatível com a busca de URL, e as solicitações feitas usando essa busca ignoram as configurações de acesso VPC sem servidor. Em vez disso, faça conexões de saída com soquetes.

  2. Adicione o campo "Acesso VPC sem servidor" ao arquivo app.yaml:

    vpc_access_connector:
     name: projects/PROJECT_ID/locations/REGION/connectors/CONNECTOR_NAME
    

    Substitua:

    • PROJECT_ID pelo ID do projeto do Google Cloud
    • REGION pela região em que o conector se encontra;
    • CONNECTOR_NAME pelo nome do conector.
  3. Implante o serviço:

    gcloud app deploy

    Depois de reimplantado, o serviço pode enviar solicitações para endereços IP internos a fim de acessar recursos na rede VPC.

Todos os outros ambientes de execução

  1. Adicione o campo "Acesso VPC sem servidor" ao arquivo app.yaml:

    vpc_access_connector:
     name: projects/PROJECT_ID/locations/REGION/connectors/CONNECTOR_NAME
    

    Substitua:

    • PROJECT_ID pelo ID de projeto do Google Cloud; Se o conector estiver no projeto host de uma VPC compartilhada, ele precisa ser o ID do projeto host.
    • REGION pela região em que o conector se encontra;
    • CONNECTOR_NAME pelo nome do conector.
  2. Implante o serviço:

    gcloud app deploy

    Depois de reimplantado, o serviço pode enviar solicitações para endereços IP internos a fim de acessar recursos na rede VPC.

Configurar o ambiente do Cloud Run sem um conector

É possível ativar o serviço do Cloud Run para enviar o tráfego de saída (saída) diretamente para uma rede VPC, permitindo acesso a instâncias de VM do Compute Engine, instâncias do Memorystore e qualquer outra recursos com um endereço IP interno.

Configurar o serviço sem um conector

A saída de VPC direta permite que seu serviço do Cloud Run envie tráfego a uma rede VPC sem um conector de acesso VPC sem servidor. Os custos de rede têm redução da escala a zero assim como o próprio serviço. Também é possível usar tags de rede diretamente em revisões de serviço do Cloud Run para uma segurança de rede mais granular.

É possível configurar a saída de VPC direta com um serviço usando o console do Google Cloud, a CLI do Google Cloud ou o YAML.

Console

  1. Acesse o Cloud Run

  2. Clique em Criar serviço se estiver configurando um novo serviço em que fará uma implantação. Se você estiver configurando e implantando um serviço que já existe, clique nele e depois em Editar e implantar nova revisão.

  3. Ao configurar um novo serviço, preencha a página inicial de configurações do serviço conforme preferir e clique em Contêineres, volumes, redes e segurança para expandir essa página.

  4. Clique na guia Rede.

  5. Clique em Conectar 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 que receberá o tráfego enviado.

  8. No campo Sub-rede, selecione a sub-rede que enviará os endereços IP ao seu serviço. É possível implantar vários serviços na mesma sub-rede.

  9. Opcional: insira os nomes das tags de rede que você quer associar ao seu serviço (ou serviços). As tags de rede são especificadas no nível da revisão. Cada revisão de serviço pode ter tags de rede diferentes, como network-tag-2.

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

    • Encaminhar solicitações apenas para IPs privados para a VPC a fim de enviar apenas o tráfego para endereços internos pela rede VPC.
    • Rotear todo o tráfego para a VPC a fim de enviar todo o tráfego de saída pela rede VPC.
  11. Clique em Criar ou Implantar.

  12. Para verificar se o serviço está na sua rede VPC, clique nele e depois na guia Rede. A rede e a sub-rede estão listadas no card da VPC.

    Agora, é possível enviar solicitações do seu serviço do Cloud Run para qualquer recurso na rede VPC, conforme permitido pelas regras de firewall.

gcloud

Para implantar um serviço do Cloud Run sem um conector pela CLI do Google Cloud:

  1. Verifique se a API Compute Engine está ativada no seu projeto:

    gcloud services enable compute.googleapis.com
    
  2. Implante o serviço do Cloud Run com o seguinte comando:

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

    Substitua:

    • SERVICE_NAME pelo nome do seu serviço do Cloud Run.
    • IMAGE_URL por uma referência à imagem de contêiner. Por exemplo, us-docker.pkg.dev/cloudrun/container/hello:latest. Se você usa o Artifact Registry, o repositório REPO_NAME já precisará ter sido criado. O URL tem o formato REGION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
    • NETWORK pelo nome da sua rede VPC;
    • SUBNET pelo nome da sub-rede. A sub-rede precisa ser /26 ou maior. A saída de VPC direta é compatível com intervalos IPv4 RFC 1918, RFC 6598 e classe E. É possível implantar ou executar vários serviços ou jobs na mesma sub-rede, mas ela não pode ser compartilhada por conectores existentes.
    • Opcional: NETWORK_TAG_NAMES pelos nomes separados por vírgula das tags de rede que você quer associar a um serviço. Para serviços, as tags de rede são especificadas no nível da revisão. Cada revisão de serviço pode ter tags de rede diferentes, como network-tag-2;
    • EGRESS_SETTING por um valor de configuração de saída:
      • all-traffic: envia todo o tráfego de saída pela rede VPC.
      • private-ranges-only: envia o tráfego apenas para endereços internos pela rede VPC.
    • REGION por uma região do seu serviço.
  3. Para verificar se o serviço está na sua rede VPC, execute o seguinte comando:

    gcloud beta run services describe SERVICE_NAME \
    --region=REGION
    

    Substitua:

    • SERVICE_NAME pelo nome do serviço;
    • REGION pela região do serviço que você especificou na etapa anterior.

    A saída precisa conter o nome da sua rede, sub-rede e configuração de saída. Por exemplo:

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

Agora, é possível enviar solicitações do seu serviço do Cloud Run para qualquer recurso na rede VPC, conforme permitido pelas regras de firewall.

YAML

É possível armazenar a especificação do serviço em um arquivo YAML e implantá-lo usando a CLI gcloud.

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

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE_NAME
      annotations:
        run.googleapis.com/launch-stage: BETA
      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

    Substitua:

    • SERVICE_NAME pelo nome do seu serviço do Cloud Run. Os nomes dos serviços precisam ter 49 caracteres ou menos e ser exclusivos para cada região e projeto;
    • REGION pela região do serviço do Cloud Run, que precisa corresponder à região da sua sub-rede;
    • NETWORK pelo nome da sua rede VPC;
    • SUBNET pelo nome da sub-rede. A sub-rede precisa ser /26 ou maior. A saída de VPC direta é compatível com intervalos IPv4 RFC 1918, RFC 6598 e classe E. É possível implantar ou executar vários serviços ou jobs na mesma sub-rede, mas ela não pode ser compartilhada por conectores existentes.
    • Opcional: NETWORK_TAG_NAMES pelos nomes das tags de rede que você quer associar a um serviço. Para serviços, as tags de rede são especificadas no nível da revisão. Cada revisão de serviço pode ter tags de rede diferentes, como network-tag-2;
    • EGRESS_SETTING por um valor de configuração de saída:
      • all-traffic: envia todo o tráfego de saída pela rede VPC.
      • private-ranges-only: envia o tráfego apenas para endereços internos pela rede VPC.
    • IMAGE pelo URL da imagem de contêiner do serviço.

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

  2. Implante o novo serviço executando 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.

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ções de serviço, modifique qualquer atributo filho spec.template conforme necessário para atualizar as configurações de revisão. Em seguida, implante a nova revisão:

gcloud run services replace service.yaml

Configurar o job sem um conector

A saída de VPC direta permite que seu job do Cloud Run envie tráfego para uma rede VPC sem um conector de acesso VPC sem servidor.

É possível configurar a saída de VPC direta com um job usando o console do Google Cloud, a CLI do Google Cloud ou o YAML.

Console

  1. Acesse o Cloud Run

  2. Se você estiver configurando um novo job, clique na guia Jobs e preencha a página inicial de configurações de job conforme preferir. Se você estiver configurando um job, clique nele e em Editar.

  3. Clique em Contêiner, variáveis e secrets, conexões, segurança para expandir a página de properties do job.

  4. Clique na guia Conexões.

  5. Clique em Conectar 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 que receberá o tráfego enviado.

  8. No campo Sub-rede, selecione a sub-rede que enviará os endereços IP ao seu job. É possível executar vários jobs na mesma sub-rede.

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

    • Encaminhar solicitações apenas para IPs privados para a VPC a fim de enviar apenas o tráfego para endereços internos pela rede VPC.
    • Rotear todo o tráfego para a VPC a fim de enviar todo o tráfego de saída pela rede VPC.
  10. Opcional: insira os nomes das tags de rede que você quer associar ao seu serviço (ou serviços). As tags de rede são especificadas no nível da revisão. Cada revisão de serviço pode ter tags de rede diferentes, como network-tag-2.

  11. Opcional: insira os nomes das tags de rede que você quer associar ao seu job (ou jobs). Para jobs, as tags de rede são especificadas no nível da execução. Cada execução de job pode ter tags de rede diferentes, como network-tag-2.

  12. Clique em Criar ou Atualizar.

  13. Para verificar se o job está na sua rede VPC, clique nele e depois na guia Configuração. A rede e a sub-rede estão listadas no card da VPC.

    Agora, é possível executar seu job do Cloud Run e enviar solicitações dele para qualquer recurso na rede VPC, conforme permitido pelas regras de firewall.

gcloud

Para criar um job do Cloud Run sem um conector pela CLI do Google Cloud:

  1. Verifique se a API Compute Engine está ativada no seu projeto:

    gcloud services enable compute.googleapis.com
    
  2. Crie um job 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
    

    Substitua:

    • JOB_NAME pelo nome do seu job do Cloud Run.
    • IMAGE_URL por uma referência à imagem de contêiner. Por exemplo, us-docker.pkg.dev/cloudrun/container/job:latest;
    • NETWORK pelo nome da sua rede VPC.
    • SUBNET pelo nome da sub-rede. A sub-rede precisa ser /26 ou maior. A saída de VPC direta é compatível com intervalos IPv4 RFC 1918, RFC 6598 e classe E. É possível implantar ou executar vários serviços ou jobs na mesma sub-rede, mas ela não pode ser compartilhada por conectores existentes.
    • Opcional: NETWORK_TAG_NAMES pelos nomes das tags de rede que você quer associar a um job. Para jobs, as tags de rede são especificadas no nível da execução. Cada execução de job pode ter tags de rede diferentes, como network-tag-2;
    • EGRESS_SETTING por um valor de configuração de saída:
      • all-traffic: envia todo o tráfego de saída pela rede VPC.
      • private-ranges-only: envia o tráfego apenas para endereços internos pela rede VPC.
    • REGION por uma região do seu job.
  3. Para verificar se o job está na sua rede VPC, execute o seguinte comando:

    gcloud run jobs describe JOB_NAME \
      --region=REGION
      

    Substitua:

    • JOB_NAME pelo nome do job;
    • REGION pela região do job especificada na etapa anterior.

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

    VPC network:
      Network:       default
      Subnet:        default
    

Agora, é possível executar seu job do Cloud Run e enviar solicitações dele para qualquer recurso na rede VPC, conforme permitido pelas regras de firewall.

YAML

É possível armazenar a especificação do job em um arquivo YAML e implantá-lo usando a CLI gcloud.

  1. Crie um novo arquivo job.yaml com o seguinte conteúdo:

    apiVersion: run.googleapis.com/v1
    kind: Job
    metadata:
      name: JOB_NAME
      annotations:
        run.googleapis.com/launch-stage: BETA
      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

    Substitua:

    • JOB_NAME pelo nome do seu job do Cloud Run. Os nomes dos jobs precisam ter 49 caracteres ou menos e ser exclusivos para cada região e projeto;
    • REGION pela região do job do Cloud Run, que precisa corresponder à região da sua sub-rede;
    • NETWORK pelo nome da sua rede VPC;
    • SUBNET pelo nome da sub-rede. A sub-rede precisa ser /26 ou maior. A saída de VPC direta é compatível com intervalos IPv4 RFC 1918, RFC 6598 e classe E. É possível implantar ou executar vários serviços ou jobs na mesma sub-rede, mas ela não pode ser compartilhada por conectores existentes.
    • Opcional: NETWORK_TAG_NAMES pelos nomes das tags de rede que você quer associar a um job. Para jobs, as tags de rede são especificadas no nível da execução. Cada execução de job pode ter tags de rede diferentes, como network-tag-2;
    • EGRESS_SETTING por um valor de configuração de saída:
      • all-traffic: envia todo o tráfego de saída pela rede VPC.
      • private-ranges-only: envia o tráfego apenas para endereços internos pela rede VPC.
    • IMAGE pelo URL da imagem de contêiner do job.
  2. Implante o novo job executando o seguinte comando:

    gcloud run jobs replace job.yaml

Se você precisar fazer o download ou visualizar a configuração de um job que já existe, use o comando a seguir para salvar os resultados em um arquivo YAML:

gcloud run jobs describe JOB --format export > job.yaml

Em um arquivo YAML de configuração de job, modifique todos os atributos filhos spec.template conforme preferir para atualizar as configurações de revisão e faça a reimplantação:

gcloud run jobs replace job.yaml

Acessar recursos da VPC

Permitir a entrada da infraestrutura sem servidor para o conector

As VMs do conector precisam ser capazes de receber pacotes do intervalo de endereços IP externos do Google Cloud 35.199.224.0/19. Esse intervalo é usado pela infraestrutura sem servidor do Google para garantir que os serviços do Cloud Run, do Cloud Functions e do App Engine possam enviar pacotes para o conector.

O acesso VPC sem servidor cria uma regra de firewall de permissão de entrada que se aplica às VMs do conector, permitindo pacotes de 35.199.224.0/19 quando o conector está no mesmo projeto que a rede VPC de destino. O conector e a respectiva rede VPC de destino estão no mesmo projeto quando o conector tem como destino uma rede VPC independente ou quando ele tem como destino uma rede VPC compartilhada e está no projeto host.

Se você criar um conector em um projeto de serviço de VPC compartilhada, um administrador de segurança ou proprietário do projeto de host da VPC compartilhada precisará criar uma regra de firewall de permissão de entrada aplicável às VMs do conector, permitindo pacotes de 35.199.224.0/19. Confira o seguinte exemplo de regra de firewall de permissão de entrada:

gcloud compute firewall-rules create RULE_NAME \
--action=ALLOW \
--rules=TCP \
--source-ranges=35.199.224.0/19 \
--target-tags=VPC_CONNECTOR_NETWORK_TAG \
--direction=INGRESS \
--network=VPC_NETWORK \
--priority=PRIORITY \
--project=PROJECT_ID

Substitua:

  • RULE_NAME: o nome da nova regra de firewall. Por exemplo, allow-vpc-connector-ingress.
  • VPC_CONNECTOR_NETWORK_TAG: a tag de rede do conector universal vpc-connector pode ser usada para fazer a regra se aplicar a todos os conectores na rede VPC. Se preferir, use uma tag de rede específica para o conector. A tag de rede específica tem o seguinte formato: vpc-connector-REGION-CONNECTOR_NAME, em que REGION é a região do Google Cloud do conector e CONNECTOR_NAME é o nome dela.
  • VPC_NETWORK: o nome da rede VPC que o conector segmenta.
  • PRIORITY: um número inteiro entre 0 e 65535. Por exemplo, 0 define a prioridade mais alta.
  • PROJECT_ID: o ID do projeto que contém a rede VPC que o conector segmenta.

Restringir recursos de rede VPC de acesso à VM do conector

É possível restringir o acesso do conector a recursos na rede VPC de destino usando regras de firewall da VPC ou regras em políticas de firewall. Você pode realizar essas restrições usando uma das seguintes estratégias:

  • Crie regras de entrada com destinos que representem os recursos a que você quer limitar o acesso da VM do conector e com origens que representem as VMs do conector.
  • Crie regras de saída que tenham destinos que representem as VMs do conector e que os destinos representem os recursos a que você quer limitar o acesso da VM do conector.

Os exemplos a seguir ilustram cada estratégia.

Restringir o acesso usando regras de entrada

Escolha tags de rede ou intervalos CIDR para controlar o tráfego de entrada para a rede VPC:

Tags de rede

Nas etapas a seguir, mostramos como criar regras de entrada que restringem o acesso de um conector à sua rede VPC com base nas tags de rede do conector.

  1. Verifique se você tem as permissões necessárias para inserir regras de firewall. Você precisa ter um dos seguintes papéis de gerenciamento de identidade e acesso (IAM):

  2. Nega o tráfego do conector na sua rede VPC.

    Crie uma regra de firewall de entrada com prioridade menor que 1.000 na sua rede VPC para negar a entrada da tag de rede do conector. Isso substitui a regra de firewall implícita que o acesso VPC sem servidor cria na rede VPC por padrão.

    gcloud compute firewall-rules create RULE_NAME \
    --action=DENY \
    --rules=PROTOCOL \
    --source-tags=VPC_CONNECTOR_NETWORK_TAG \
    --direction=INGRESS \
    --network=VPC_NETWORK \
    --priority=PRIORITY
    

    Substitua:

    • RULE_NAME: o nome da nova regra de firewall. Por exemplo, deny-vpc-connector.

    • PROTOCOL: um ou mais protocolos que você quer permitir no conector de VPC. Os protocolos compatíveis são tcp ou udp. Por exemplo, tcp:80,udp permite o tráfego TCP pela porta 80 e pelo UDP. Para mais informações, consulte a documentação da flag de allow.

      Para fins de segurança e validação, também é possível configurar regras de negação para bloquear o tráfego para os seguintes protocolos sem suporte: ah, all, esp, icmp, ipip e sctp.

    • VPC_CONNECTOR_NETWORK_TAG: a tag de rede universal do conector se você quiser restringir o acesso a todos os conectores (incluindo todos os conectores feitos no futuro), ou a tag de rede única se quiser restringir o acesso a um conector específico.

      • Tag de rede universal: vpc-connector
      • Tag de rede única: vpc-connector-REGION-CONNECTOR_NAME

        Substitua:

        • REGION: a região do conector que você quer restringir
        • CONNECTOR_NAME: o nome do conector que você quer restringir

      Para saber mais sobre as tags de rede do conector, consulte Tags de rede.

    • VPC_NETWORK: o nome da rede VPC.

    • PRIORITY: um número inteiro entre 0 e 65535. Por exemplo, 0 define a prioridade mais alta.

  3. Permitir tráfego do conector para o recurso que precisa receber tráfego do conector.

    Use as sinalizações allow e target-tags para criar uma regra de firewall de entrada que segmente o recurso na rede VPC que você quer que o conector VPC acesse. Defina a prioridade para essa regra como um valor menor que a prioridade da regra criada na etapa anterior.

    gcloud compute firewall-rules create RULE_NAME \
    --allow=PROTOCOL \
    --source-tags=VPC_CONNECTOR_NETWORK_TAG \
    --direction=INGRESS \
    --network=VPC_NETWORK \
    --target-tags=RESOURCE_TAG \
    --priority=PRIORITY
    

    Substitua:

    • RULE_NAME: o nome da nova regra de firewall. Por exemplo, allow-vpc-connector-for-select-resources.

    • PROTOCOL: um ou mais protocolos que você quer permitir no conector de VPC. Os protocolos compatíveis são tcp ou udp. Por exemplo, tcp:80,udp permite o tráfego TCP pela porta 80 e pelo UDP. Para mais informações, consulte a documentação da flag de allow.

    • VPC_CONNECTOR_NETWORK_TAG: a tag de rede universal do conector se você quiser restringir o acesso a todos os conectores (incluindo todos os conectores feitos no futuro), ou a tag de rede única se quiser restringir o acesso a um conector específico. Isso precisa corresponder à tag de rede que você especificou na etapa anterior.

      • Tag de rede universal: vpc-connector
      • Tag de rede única: vpc-connector-REGION-CONNECTOR_NAME

        Substitua:

        • REGION: a região do conector que você quer restringir
        • CONNECTOR_NAME: o nome do conector que você quer restringir

      Para saber mais sobre as tags de rede do conector, consulte Tags de rede.

    • VPC_NETWORK: o nome da rede VPC.

    • RESOURCE_TAG: a tag de rede do recurso da VPC que você quer que o conector da VPC acesse.

    • PRIORITY: um número inteiro menor que a prioridade que você definiu na etapa anterior. Por exemplo, se você definir a prioridade da regra criada na etapa anterior como 990, tente 980.

Para mais informações sobre as sinalizações obrigatórias e opcionais para criar regras de firewall, consulte a documentação de gcloud compute firewall-rules create.

Intervalo CIDR

Nas etapas a seguir, mostramos como criar regras de entrada que restringem o acesso de um conector à sua rede VPC com base no intervalo CIDR do conector.

  1. Verifique se você tem as permissões necessárias para inserir regras de firewall. Você precisa ter um dos seguintes papéis de gerenciamento de identidade e acesso (IAM):

  2. Nega o tráfego do conector na sua rede VPC.

    Crie uma regra de firewall de entrada com prioridade menor que 1.000 na sua rede VPC para negar a entrada do intervalo CIDR do conector. Isso substitui a regra de firewall implícita que o acesso VPC sem servidor cria na rede VPC por padrão.

    gcloud compute firewall-rules create RULE_NAME \
    --action=DENY \
    --rules=PROTOCOL \
    --source-ranges=VPC_CONNECTOR_CIDR_RANGE \
    --direction=INGRESS \
    --network=VPC_NETWORK \
    --priority=PRIORITY
    

    Substitua:

    • RULE_NAME: o nome da nova regra de firewall. Por exemplo, deny-vpc-connector.

    • PROTOCOL: um ou mais protocolos que você quer permitir no conector de VPC. Os protocolos compatíveis são tcp ou udp. Por exemplo, tcp:80,udp permite o tráfego TCP pela porta 80 e pelo UDP. Para mais informações, consulte a documentação da flag de allow.

      Para fins de segurança e validação, também é possível configurar regras de negação para bloquear o tráfego para os seguintes protocolos sem suporte: ah, all, esp, icmp, ipip e sctp.

    • VPC_CONNECTOR_CIDR_RANGE: o intervalo CIDR do conector em que seu acesso está restrito

    • VPC_NETWORK: o nome da rede VPC.

    • PRIORITY: um número inteiro entre 0 e 65535. Por exemplo, 0 define a prioridade mais alta.

  3. Permitir tráfego do conector para o recurso que precisa receber tráfego do conector.

    Use as sinalizações allow e target-tags para criar uma regra de firewall de entrada que segmente o recurso na rede VPC que você quer que o conector VPC acesse. Defina a prioridade para essa regra como um valor menor que a prioridade da regra criada na etapa anterior.

    gcloud compute firewall-rules create RULE_NAME \
    --allow=PROTOCOL \
    --source-ranges=VPC_CONNECTOR_CIDR_RANGE \
    --direction=INGRESS \
    --network=VPC_NETWORK \
    --target-tags=RESOURCE_TAG \
    --priority=PRIORITY
    

    Substitua:

    • RULE_NAME: o nome da nova regra de firewall. Por exemplo, allow-vpc-connector-for-select-resources.

    • PROTOCOL: um ou mais protocolos que você quer permitir no conector de VPC. Os protocolos compatíveis são tcp ou udp. Por exemplo, tcp:80,udp permite o tráfego TCP pela porta 80 e pelo UDP. Para mais informações, consulte a documentação da flag de allow.

    • VPC_CONNECTOR_CIDR_RANGE: o intervalo CIDR do conector em que seu acesso está restrito

    • VPC_NETWORK: o nome da rede VPC.

    • RESOURCE_TAG: a tag de rede do recurso da VPC que você quer que o conector da VPC acesse.

    • PRIORITY: um número inteiro menor que a prioridade que você definiu na etapa anterior. Por exemplo, se você definir a prioridade da regra criada na etapa anterior como 990, tente 980.

Para mais informações sobre as sinalizações obrigatórias e opcionais para criar regras de firewall, consulte a documentação de gcloud compute firewall-rules create.

Restringir o acesso usando regras de saída

As etapas a seguir mostram como criar regras de saída para restringir o acesso ao conector.

  1. Verifique se você tem as permissões necessárias para inserir regras de firewall. Você precisa ter um dos seguintes papéis do Identity and Access Management (IAM):

  2. Negue o tráfego de saída do conector.

    Crie uma regra de firewall de saída no conector de acesso VPC sem servidor para impedir que ele envie tráfego de saída, exceto para respostas estabelecidas, para qualquer destino.

    gcloud compute firewall-rules create RULE_NAME \
    --action=DENY \
    --rules=PROTOCOL \
    --direction=EGRESS \
    --target-tags=VPC_CONNECTOR_NETWORK_TAG \
    --network=VPC_NETWORK \
    --priority=PRIORITY
    

    Substitua:

    • RULE_NAME: o nome da nova regra de firewall. Por exemplo, deny-vpc-connector.

    • PROTOCOL: um ou mais protocolos que você quer permitir no conector de VPC. Os protocolos compatíveis são tcp ou udp. Por exemplo, tcp:80,udp permite o tráfego TCP pela porta 80 e pelo UDP. Para mais informações, consulte a documentação da flag de allow.

      Para fins de segurança e validação, também é possível configurar regras de negação para bloquear o tráfego para os seguintes protocolos sem suporte: ah, all, esp, icmp, ipip e sctp.

    • VPC_CONNECTOR_NETWORK_TAG: a tag de rede do conector VPC universal se você quiser que a regra se aplique a todos os conectores VPC existentes e a quaisquer conectores VPC no futuro. Ou a tag de rede do conector de VPC exclusiva, se você quiser controlar um conector específico.

    • VPC_NETWORK: o nome da rede VPC.

    • PRIORITY: um número inteiro entre 0 e 65535. Por exemplo, 0 define a prioridade mais alta.

  3. Permitir tráfego de saída quando o destino estiver no intervalo CIDR que você quer que o conector acesse.

    Use as sinalizações allow e destination-ranges para criar uma regra de firewall que permita o tráfego de saída do conector para um intervalo de destino específico. Defina o intervalo de destino para o intervalo CIDR do recurso na rede VPC que você quer que o conector possa acessar. Defina a prioridade dessa regra como um valor menor do que a prioridade da regra criada na etapa anterior.

    gcloud compute firewall-rules create RULE_NAME \
    --allow=PROTOCOL \
    --destination-ranges=RESOURCE_CIDR_RANGE \
    --direction=EGRESS \
    --network=VPC_NETWORK \
    --target-tags=VPC_CONNECTOR_NETWORK_TAG \
    --priority=PRIORITY
    

    Substitua:

    • RULE_NAME: o nome da nova regra de firewall. Por exemplo, allow-vpc-connector-for-select-resources.

    • PROTOCOL: um ou mais protocolos que você quer permitir no conector de VPC. Os protocolos compatíveis são tcp ou udp. Por exemplo, tcp:80,udp permite o tráfego TCP pela porta 80 e pelo UDP. Para mais informações, consulte a documentação da flag de allow.

    • RESOURCE_CIDR_RANGE: o intervalo CIDR do conector em que seu acesso está restrito

    • VPC_NETWORK: o nome da rede VPC.

    • VPC_CONNECTOR_NETWORK_TAG: a tag de rede do conector VPC universal se você quiser que a regra se aplique a todos os conectores VPC existentes e a quaisquer conectores VPC no futuro. Ou a tag de rede do conector de VPC exclusiva, se você quiser controlar um conector específico. Se você tiver usado a tag de rede exclusiva na etapa anterior, use essa tag.

    • PRIORITY: um número inteiro menor que a prioridade que você definiu na etapa anterior. Por exemplo, se você definir a prioridade da regra criada na etapa anterior como 990, tente 980.

Para mais informações sobre as sinalizações obrigatórias e opcionais para criar regras de firewall, consulte a documentação de gcloud compute firewall-rules create.

Atualizar um conector

É possível atualizar e monitorar os seguintes atributos do conector usando o console do Google Cloud, a CLI do Google Cloud ou a API:

  • Tipo de máquina (instância)
  • Número mínimo e máximo de instâncias
  • Capacidade de processamento recente, número de instâncias e uso da CPU

Atualizar tipo de máquina

Console

  1. Acesse a página de visão geral do acesso VPC sem servidor.

    Página do console sobre o acesso VPC sem servidor

  2. Selecione o conector que você quer editar e clique em Editar.

  3. Na lista Tipo de instância, selecione o tipo de máquina (instância) de sua preferência. Para saber mais sobre os tipos de máquinas disponíveis, consulte a documentação sobre capacidade de processamento e escalonamento.

gcloud

  1. No Console do Google Cloud, ative o Cloud Shell.

    Ativar o Cloud Shell

    Na parte inferior do Console do Google Cloud, uma sessão do Cloud Shell é iniciada e exibe um prompt de linha de comando. O Cloud Shell é um ambiente shell com a CLI do Google Cloud já instalada e com valores já definidos para o projeto atual. A inicialização da sessão pode levar alguns segundos.

  2. Para atualizar o tipo de máquina do conector, execute o seguinte comando no seu terminal:

    gcloud beta compute networks vpc-access connectors update CONNECTOR_NAME --region=REGION --machine-type=MACHINE_TYPE
    
    Substitua:

    • CONNECTOR_NAME: o nome do conector
    • REGION: o nome da região do conector
    • MACHINE_TYPE: o tipo de máquina de sua preferência. Para saber mais sobre os tipos de máquinas disponíveis, consulte a documentação em Capacidade e escalonamento.

Diminuir o número mínimo e máximo de instâncias

Para diminuir o número de instâncias mínima e máxima, faça o seguinte:

  1. Crie um novo conector com os valores da sua preferência.
  2. Atualize o serviço ou a função para usar o novo conector.
  3. Exclua o conector antigo ao mover o tráfego.

Consulte Criar conector de acesso VPC sem servidor para mais informações.

Aumentar o número mínimo e máximo de instâncias

Console

  1. Acesse a página de visão geral do acesso VPC sem servidor.

    Página do console sobre o acesso VPC sem servidor

  2. Selecione o conector que você quer editar e clique em Editar.

  3. No campo Instâncias mínimas, selecione o número mínimo de instâncias que você quer.

    O menor valor possível para esse campo é o valor atual. O maior valor possível desse campo é o valor atual no campo Máximo de instâncias menos 1. Por exemplo, se o valor no campo Máximo de instâncias for 8, o maior valor possível para o campo Mínimo de instâncias será 7.

  4. No campo Máximo de instâncias, selecione o número máximo de instâncias que você quer.

    O menor valor possível para esse campo é o valor atual. O maior valor possível para esse campo é 10.

gcloud

  1. No Console do Google Cloud, ative o Cloud Shell.

    Ativar o Cloud Shell

    Na parte inferior do Console do Google Cloud, uma sessão do Cloud Shell é iniciada e exibe um prompt de linha de comando. O Cloud Shell é um ambiente shell com a CLI do Google Cloud já instalada e com valores já definidos para o projeto atual. A inicialização da sessão pode levar alguns segundos.

  2. Para aumentar o número mínimo ou máximo de instâncias para o conector, execute o seguinte comando no terminal:

    gcloud beta compute networks vpc-access connectors update CONNECTOR_NAME --region=REGION --min-instances=MIN_INSTANCES --max-instances=MAX_INSTANCES
    
    Substitua:

  • CONNECTOR_NAME: o nome do conector
  • REGION: o nome da região do conector
  • MIN_INSTANCES: o número mínimo de instâncias que você preferir.
    • O menor valor possível para esse campo é o valor atual de min_instances. Para encontrar o valor atual, consulte Encontrar os valores de atributo atuais.
    • O maior valor possível para esse campo é o valor atual de max_instances menos 1, porque min_instances precisa ser menor que max_instances. Por exemplo, se max_instances for 8, o maior valor possível para esse campo será 7. Se o conector usar o valor padrão max-instances de 10, o maior valor possível desse campo será 9. Para encontrar o valor de max-instances, consulte Encontrar os valores atuais do atributo.
  • MAX_INSTANCES:

    • O menor valor possível para esse campo é o valor atual de max_instances. Para encontrar o valor atual, consulte Encontrar os valores de atributo atuais.
    • O maior valor possível para esse campo é 10.

    Se você quiser aumentar o número mínimo de instâncias, mas não o máximo, ainda precisará especificar o número máximo de instâncias. Por outro lado, se você quiser atualizar apenas o número máximo de instâncias, mas não o mínimo, ainda precisará especificar a quantidade mínima de instâncias. Para manter o número mínimo ou máximo de instâncias no valor atual, especifique o valor atual. Para encontrar o valor atual, consulte Encontrar os valores do atributo atual.

Encontrar os valores atuais dos atributos

Para encontrar os valores de atributo atuais do conector, execute o seguinte no terminal:

gcloud compute networks vpc-access connectors describe CONNECTOR_NAME --region=REGION --project=PROJECT
Substitua:

  • CONNECTOR_NAME: o nome do conector
  • REGION: o nome da região do conector
  • PROJECT: o nome do seu projeto do Google Cloud

Monitorar o uso do conector

O monitoramento ao longo do tempo ajuda a determinar quando ajustar as configurações de um conector. Por exemplo, se o uso da CPU aumentar, tente aumentar o número máximo de instâncias para conseguir resultados melhores. Ou, se você estiver maximizando a capacidade de processamento, pense em trocar para um tipo de máquina maior.

Para exibir gráficos da capacidade de processamento, do número de instâncias e das métricas de uso da CPU do conector ao longo do tempo usando o console do Google Cloud:

  1. Acesse a página de visão geral do acesso VPC sem servidor.

    Página do console sobre o acesso VPC sem servidor

  2. Clique no nome do conector que você quer monitorar.

  3. Selecione o número de dias que você quer mostrar entre 1 e 90 dias.

  4. No gráfico de Capacidade de processamento, passe o cursor sobre o gráfico para ver a capacidade de processamento recente do conector.

  5. No gráfico Número de instâncias, passe o cursor sobre ele para ver o número de instâncias usadas recentemente pelo conector.

  6. No gráfico Uso da CPU, passe o cursor sobre ele para ver o uso recente da CPU do conector. O gráfico exibe o uso da CPU distribuído entre as instâncias para o 50º, 95º e 99º percentis.

Excluir um conector

Antes de excluir um conector, verifique se nenhum serviço ou job ainda está conectado a ele.

Para usuários de VPC compartilhada que configuram conectores no projeto host da VPC compartilhada, use o comando gcloud compute networks vpc-access connectors describe para listar os projetos em que há serviços ou jobs que usam um determinado conector.

Para excluir um conector, use o console do Google Cloud ou a Google Cloud CLI:

Console

  1. Acesse a página de visão geral do acesso VPC sem servidor no console do Google Cloud:

    Página do console sobre o acesso VPC sem servidor

  2. Selecione o conector que você quer excluir.

  3. Clique em Excluir.

gcloud

  1. No Console do Google Cloud, ative o Cloud Shell.

    Ativar o Cloud Shell

    Na parte inferior do Console do Google Cloud, uma sessão do Cloud Shell é iniciada e exibe um prompt de linha de comando. O Cloud Shell é um ambiente shell com a CLI do Google Cloud já instalada e com valores já definidos para o projeto atual. A inicialização da sessão pode levar alguns segundos.

  2. Use o seguinte comando gcloud para excluir um conector:

    gcloud compute networks vpc-access connectors delete CONNECTOR_NAME --region=REGION
    

    Substitua:

    • CONNECTOR_NAME pelo nome do conector que você quer excluir;
    • REGION pela região onde o conector está localizado.

Solução de problemas

Permissões da conta de serviço

Para realizar operações no projeto do Google Cloud, o acesso VPC sem servidor usa a conta de serviço do agente de serviço do acesso VPC sem servidor. O endereço de e-mail dessa conta de serviço tem o seguinte formato:

service-PROJECT_NUMBER@gcp-sa-vpcaccess.iam.gserviceaccount.com

Por padrão, essa conta de serviço tem o papel Agente de serviço de acesso VPC sem servidor (roles/vpcaccess.serviceAgent). As operações de acesso VPC sem servidor podem falhar se você alterar as permissões dessa conta.

Erros

A conta de serviço precisa de um erro no papel do agente de serviço

Se você usar o Restringir o uso do serviço de recursos restrição da política da organização para bloquear o Cloud Deployment Manager (deploymentmanager.googleapis.com), você poderá ver a seguinte mensagem de erro:

Serverless VPC Access service account (service-<PROJECT_NUMBER>@gcp-sa-vpcaccess.iam.gserviceaccount.com) needs Serverless VPC Access Service Agent role in the project.

Defina a política da organização para remover o Deployment Manager da lista de bloqueio ou adicioná-lo à lista de permissões.

Erro de criação do conector

Se a criação de um conector resultar em erro, tente o seguinte:

  • Especifique um intervalo de IP interno RFC 1918 que não se sobreponha a nenhuma reserva de endereço IP existente na rede VPC.
  • Conceda permissão ao projeto para usar imagens de VM do Compute Engine do projeto com o ID serverless-vpc-access-images. Para mais informações sobre como atualizar a política da organização adequadamente, consulte Definir restrições de acesso a imagens.

Não é possível acessar os recursos

Se você especificou um conector, mas ainda assim não consegue acessar os recursos na rede VPC, verifique se não há regras de firewall na rede VPC com prioridade inferior a 1.000 que recusem a entrada do intervalo de endereços IP do seu conector.

Se você configurar um conector em um projeto de serviço de VPC compartilhada, verifique se as regras de firewall permitem a entrada da infraestrutura sem servidor no conector.

Erro de conexão recusada

Se você receber erros connection refused que degradam o desempenho da rede, as conexões podem aumentar sem limite de invocações de aplicativo sem servidor. Para limitar o número máximo de conexões usadas por instância, use uma biblioteca de cliente compatível com pools de conexões. Para exemplos detalhados de como usar pools de conexão, consulte Gerenciar conexões de banco de dados.

Erro de recurso não encontrado

Ao excluir uma rede VPC ou uma regra de firewall, talvez seja exibida uma mensagem semelhante a esta: The resource "aet-uscentral1-subnet--1-egrfw" was not found.

Para informações sobre esse erro e a respectiva solução, consulte Erro de recurso não encontrado na documentação das regras de firewall da VPC.

Próximas etapas