Estabelecer ligação a uma rede de VPC

Esta página mostra como usar o Acesso a VPC sem servidor para ligar a sua app do ambiente padrão do App Engine diretamente à sua rede VPC, permitindo o acesso a instâncias de VMs do Compute Engine, instâncias do Memorystore e quaisquer outros recursos com um endereço IP interno.

Antes de começar

Crie um conetor do Acesso a VPC sem servidor

Para enviar pedidos para a sua rede VPC e receber as respostas correspondentes sem usar a Internet pública, pode usar um conetor do Acesso a VPC sem servidor.

Se o conector estiver localizado no mesmo projeto que a respetiva rede VPC, pode criar um conector através de uma sub-rede existente ou criar um conector e uma nova sub-rede.

Se o conector estiver localizado num projeto de serviço e usar uma rede de VPC partilhada, o conector e a respetiva rede de VPC associada estão em projetos diferentes. Quando um conector e a respetiva rede VPC estão em projetos diferentes, um administrador da rede VPC partilhada tem de criar a sub-rede do conector na rede VPC partilhada antes de poder criar o conector e tem de criar o conector através de uma sub-rede existente.

Para saber mais acerca dos requisitos de sub-rede, consulte os requisitos de sub-rede do conector.

Para saber mais sobre o débito do conetor, incluindo o tipo de máquina e o dimensionamento, consulte o artigo Débito e dimensionamento.

Pode criar um conector através da Google Cloud consola, da Google Cloud CLI ou do Terraform.

Consola

  1. Aceda à página de vista geral do Acesso a VPC sem servidor.

    Aceda ao Acesso a VPC sem servidor

  2. Clique em Criar conetor.

  3. No campo Nome, introduza um nome para o conector, de acordo com as convenções de nomenclatura do Compute Engine, com os requisitos adicionais de que o nome tem de ter menos de 21 carateres e que os hífens (-) contam como dois carateres.

  4. No campo Região, selecione uma região para o conetor. Tem de corresponder à região do seu serviço sem servidor.

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

  5. No campo Rede, selecione a rede VPC à qual quer anexar o conetor.

  6. No campo Sub-rede, selecione uma das seguintes opções:

    • Crie um conetor com uma sub-rede existente: selecione a sub-rede existente no campo Sub-rede.

    • Crie um conetor e uma nova sub-rede: selecione Intervalo de IP personalizado no campo Sub-rede. Em seguida, introduza o primeiro endereço num /28CIDR não usado (por exemplo, 10.8.0.0/28) para usar como o intervalo de endereços IPv4 principal de uma nova sub-rede que Google Cloud cria na rede VPC do conetor. Certifique-se de que o intervalo de IPs não entra em conflito com nenhuma rota existente na rede VPC do conector. O nome da nova sub-rede começa com o prefixo "aet-".

  7. (Opcional) Para definir opções de dimensionamento para um controlo adicional do conector, clique em Mostrar definições de dimensionamento para apresentar o formulário de dimensionamento.

    1. Defina o número mínimo e máximo de instâncias para o seu conetor, ou use os valores predefinidos, que são 2 (mínimo) e 10 (máximo). O conetor é dimensionado até ao máximo especificado se a utilização do tráfego o exigir, mas o conetor não é redimensionado quando o tráfego diminui. Tem de usar valores entre 2 e 10.
    2. No menu Tipo de instância, escolha o tipo de máquina a usar para o conetor ou use o valor predefinido e2-micro. Repare na barra lateral de custos à direita quando escolher o tipo de instância, que apresenta estimativas de largura de banda e custos.
  8. Clique em Criar.

  9. É apresentada uma marca de verificação verde junto ao nome do conector quando este estiver pronto a ser usado.

gcloud

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

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

    gcloud components update
  3. Certifique-se de que a API Serverless VPC Access está ativada para o seu projeto:

    gcloud services enable vpcaccess.googleapis.com
  4. Crie o conetor através de uma das seguintes opções:

    Para mais detalhes e argumentos opcionais, consulte a gcloud referência.

    • Crie um conetor com uma sub-rede existente:

      gcloud compute networks vpc-access connectors create CONNECTOR_NAME \
       --region REGION \
       --subnet SUBNET_NAME \
       --subnet-project HOST_PROJECT_ID \
       --min-instances MIN \
       --max-instances MAX \
       --machine-type MACHINE_TYPE

      Substitua o seguinte:

      • CONNECTOR_NAME: um nome para o conector, que corresponda às convenções de nomenclatura> do Compute Engine, com os requisitos adicionais de que o nome tem de ter menos de 21 carateres e que os hífenes (-) contam como dois carateres.
      • REGION: uma região para o conetor, correspondente à região do seu serviço ou tarefa sem servidor. Se o seu serviço ou trabalho for em us-central ou europe-west, use us-central1 ou europe-west1.
      • SUBNET_NAME: o nome da sub-rede existente.
      • HOST_PROJECT_ID: o ID do projeto anfitrião da VPC partilhada. Se o conetor e a sub-rede existente estiverem localizados no mesmo projeto, omita a flag --subnet-project.
      • MIN: o número mínimo de instâncias a usar para o conector. Use um número inteiro entre 2(o valor predefinido) e 9.
      • MAX: o número máximo de instâncias a usar para o conector. Use um número inteiro entre 3 e 10 (o valor predefinido). Se o conetor for dimensionado até ao número máximo de instâncias, não é novamente dimensionado para baixo.
      • MACHINE_TYPE: tem de ser um dos seguintes: f1-micro, e2-micro ou e2-standard-4.
    • Crie um conetor e uma nova sub-rede:

      gcloud compute networks vpc-access connectors create CONNECTOR_NAME \
       --region REGION \
       --network VPC_NETWORK \
       --range IP_RANGE
       --min-instances MIN \
       --max-instances MAX \
       --machine-type MACHINE_TYPE

      Substitua o seguinte:

      • CONNECTOR_NAME: um nome para o conector, que corresponda às convenções de nomenclatura> do Compute Engine, com os requisitos adicionais de que o nome tem de ter menos de 21 carateres e que os hífenes (-) contam como dois carateres.
      • REGION: uma região para o conetor, correspondente à região do seu serviço ou tarefa sem servidor. Se o seu serviço ou trabalho for em us-central ou europe-west, use us-central1 ou europe-west1.
      • VPC_NETWORK: o nome da rede VPC à qual anexar o conetor. O conetor e a rede VPC têm de estar localizados no mesmo projeto.
      • IP_RANGE: forneça um CIDR /28 não usado (por exemplo, 10.8.0.0/28) para usar como o intervalo de endereços IPv4 principal de uma nova sub-rede que Google Cloud cria na rede VPC do conector. Certifique-se de que o intervalo de IP não entra em conflito com nenhuma rota existente na rede VPC do conector. O nome da nova sub-rede começa com o prefixo "aet-".
      • MIN: o número mínimo de instâncias a usar para o conector. Use um número inteiro entre 2(o valor predefinido) e 9.
      • MAX: o número máximo de instâncias a usar para o conector. Use um número inteiro entre 3 e 10 (o valor predefinido). Se o conetor for dimensionado até ao número máximo de instâncias, não é novamente dimensionado para baixo.
      • MACHINE_TYPE: tem de ser um dos seguintes: f1-micro, e2-micro ou e2-standard-4.
  5. Verifique se o conetor está no estado READY antes de o usar:

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

    Substitua o seguinte:

    • CONNECTOR_NAME: o nome do conector; este é o nome que especificou no passo anterior.
    • REGION: a região do seu conector. Esta é a região que especificou no passo anterior.

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

  6. Terraform

    Pode 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"
    }

    Pode usar módulos do Terraform para criar uma rede VPC e uma sub-rede e, em seguida, criar o conetor.

    module "test-vpc-module" {
      source       = "terraform-google-modules/network/google"
      version      = "~> 12.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    = "~> 12.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
      ]
    }

Configure o seu serviço para usar um conetor

Depois de criar um conetor do Acesso a VPC sem servidor, tem de configurar cada serviço na sua app do App Engine que quer ligar à sua rede VPC.

Para especificar um conetor para um serviço na sua app:

  1. Para usar o Acesso a VPC sem servidor, descontinue a utilização do serviço URL Fetch do App Engine. O Acesso a VPC sem servidor não suporta a obtenção de URLs e os pedidos feitos através da obtenção de URLs ignoram as definições do Acesso a VPC sem servidor. Em alternativa, estabeleça ligações de saída com sockets.

  2. Adicione o campo vpc_access_connector ao ficheiro app.yaml do seu serviço:

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

    Em que PROJECT_ID é o ID do seu Google Cloud projeto, REGION é a região em que o conetor se encontra, e CONNECTOR_NAME é o nome do seu conetor.

  3. Implemente o serviço:

    gcloud app deploy
    

Depois de implementar o serviço, este pode enviar pedidos para endereços IP internos para aceder a recursos na sua rede VPC.

Restrinja o acesso aos recursos da VPC

Regras de firewall obrigatórias para conectores em projetos de serviço

Se criar um conector numa rede VPC autónoma ou no projeto anfitrião de uma rede VPC partilhada, Google Cloud cria todas as regras de firewall necessárias para o funcionamento do conector. Para mais informações, consulte o artigo Regras de firewall para conetores em redes da VPC autónomas ou projetos anfitriões da VPC partilhada.

No entanto, se criar um conector num projeto de serviço e o conector segmentar uma rede da VPC partilhada no projeto anfitrião, tem de adicionar regras de firewall para permitir o tráfego necessário para o funcionamento do conector a partir dos seguintes intervalos:

Estes intervalos são usados pela infraestrutura da Google subjacente ao Cloud Run, às funções do Cloud Run e ao ambiente padrão do App Engine. Todos os pedidos destes endereços IP têm origem na infraestrutura da Google para garantir que cada recurso sem servidor comunica apenas com o conetor ao qual está ligado.

Também tem de permitir o tráfego da sub-rede do conector para recursos na sua rede VPC.

Para realizar estes passos, tem de ter uma das seguintes funções no projeto anfitrião:

Para uma configuração básica, aplique as regras para permitir que os recursos sem servidor em qualquer projeto de serviço ligado à rede VPC partilhada enviem pedidos a qualquer recurso na rede.

Para aplicar estas regras, execute os seguintes comandos no projeto anfitrião:

  1. Crie regras de firewall que permitam que os pedidos da infraestrutura sem servidor da Google e as sondas de verificação de estado alcancem todos os conetores na rede. Nestes comandos, as portas UDP e TCP são usadas como proxies e para verificações de funcionamento HTTP, respetivamente. Não altere as portas especificadas.

    gcloud compute firewall-rules create serverless-to-vpc-connector \
        --allow tcp:667,udp:665-666,icmp \
        --source-ranges=35.199.224.0/19 \
        --direction=INGRESS \
        --target-tags vpc-connector \
        --network=VPC_NETWORK
    gcloud compute firewall-rules create vpc-connector-to-serverless \
        --allow tcp:667,udp:665-666,icmp \
        --destination-ranges=35.199.224.0/19 \
        --direction=EGRESS \
        --target-tags vpc-connector \
        --network=VPC_NETWORK
    gcloud compute firewall-rules create vpc-connector-health-checks \
        --allow tcp:667 \
        --source-ranges=35.191.0.0/16,35.191.192.0/18,130.211.0.0/22 \
        --direction=INGRESS \
        --target-tags vpc-connector \
        --network=VPC_NETWORK

    Substitua VPC_NETWORK pelo nome da rede VPC à qual quer anexar o conetor.

  2. Crie uma regra de firewall de entrada na sua rede da VPC para permitir pedidos de conetores que segmentam esta rede:

    gcloud compute firewall-rules create vpc-connector-requests \
        --allow tcp,udp,icmp \
        --direction=INGRESS \
        --source-tags vpc-connector \
        --network=VPC_NETWORK

    Esta regra dá ao conetor acesso a todos os recursos na rede. Para limitar os recursos que o seu ambiente sem servidor pode alcançar através do Acesso a VPC sem servidor, consulte o artigo Restrinja o acesso da VM do conetor aos recursos da rede VPC.

Crie regras de firewall para conectores específicos

Seguir o procedimento em Regras de firewall necessárias para conectores em projetos de serviço resulta em regras de firewall que se aplicam a todos os conectores, tanto os atuais como os criados no futuro. Se não quiser isto, mas quiser criar regras apenas para conectores específicos, pode definir o âmbito das regras para que se apliquem apenas a esses conectores.

Para limitar o âmbito das regras a conectores específicos, pode usar um dos seguintes mecanismos:

  • Etiquetas de rede: cada conetor tem duas etiquetas de rede: vpc-connector e vpc-connector-REGION-CONNECTOR_NAME. Use o último formato para limitar o âmbito das regras de firewall a um conector específico.
  • Intervalos de IP: use esta opção apenas para as regras de saída, porque não funciona para regras de entrada. Pode usar o intervalo de IP da sub-rede do conector para limitar o âmbito das regras de firewall a um único conector de VPC.

Restrinja o acesso da VM do conetor aos recursos da rede VPC

Pode restringir o acesso do conector aos recursos na respetiva rede VPC de destino através de regras de firewall de VPC ou regras em políticas de firewall. Pode aplicar estas restrições através de uma das seguintes estratégias:

  • Crie regras de entrada cujos destinos representam os recursos aos quais quer limitar o acesso da VM do conetor e cujas origens representam as VMs do conetor.
  • Crie regras de saída cujos destinos representem as VMs do conetor e cujos destinos representem os recursos aos quais quer limitar o acesso da VM do conetor.

Os exemplos seguintes ilustram cada estratégia.

Restrinja o acesso através de regras de entrada

Escolha etiquetas de rede ou intervalos de CIDR para controlar o tráfego de entrada na sua rede de VPC.

Etiquetas de rede

Os passos seguintes mostram como criar regras de entrada que restringem o acesso de um conector à sua rede VPC com base nas etiquetas de rede do conector.

  1. Certifique-se de que tem as autorizações necessárias para inserir regras de firewall. Tem de ter uma das seguintes funções de gestão de identidade e de acesso (IAM):

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

    Crie uma regra de firewall de entrada com uma prioridade inferior a 1000 na sua rede da VPC para recusar a entrada a partir da etiqueta da rede do conector. Isto substitui a regra de firewall implícita que o acesso a VPC sem servidor cria na sua rede VPC por predefiniçã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 o seguinte:

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

    • PROTOCOL: um ou mais protocolos que quer permitir a partir do conector da VPC. Os protocolos suportados são tcp ou udp. Por exemplo, tcp:80,udp permite o tráfego TCP através da porta 80 e o tráfego UDP. Para mais informações, consulte a documentação da flag allow.

      Para fins de segurança e validação, também pode configurar regras de recusa para bloquear o tráfego dos seguintes protocolos não suportados: ah, all, esp, icmp, ipip e sctp.

    • VPC_CONNECTOR_NETWORK_TAG: a etiqueta de rede do conetor universal se quiser restringir o acesso a todos os conetores (incluindo quaisquer conetores criados no futuro) ou a etiqueta de rede exclusiva se quiser restringir o acesso a um conetor específico.

      • Etiqueta de rede universal: vpc-connector
      • Etiqueta de rede exclusiva: vpc-connector-REGION-CONNECTOR_NAME

        Substituição:

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

      Para saber mais acerca das etiquetas de rede de conetores, consulte o artigo Etiquetas de rede.

    • VPC_NETWORK: o nome da sua rede VPC

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

  3. Permita o tráfego do conetor para o recurso que deve receber o tráfego do conetor.

    Use as flags allow e target-tags para criar uma regra de firewall de entrada que segmenta o recurso na sua rede VPC ao qual quer que o conetor VPC aceda. Defina a prioridade desta regra como um valor inferior à prioridade da regra que criou no passo 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 o seguinte:

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

    • PROTOCOL: um ou mais protocolos que quer permitir a partir do conector da VPC. Os protocolos suportados são tcp ou udp. Por exemplo, tcp:80,udp permite o tráfego TCP através da porta 80 e o tráfego UDP. Para mais informações, consulte a documentação da flag allow.

    • VPC_CONNECTOR_NETWORK_TAG: a etiqueta de rede do conetor universal, se quiser restringir o acesso a todos os conetores (incluindo quaisquer conetores criados no futuro), ou a etiqueta de rede exclusiva, se quiser restringir o acesso a um conetor específico. Tem de corresponder à etiqueta de rede que especificou no passo anterior.

      • Etiqueta de rede universal: vpc-connector
      • Etiqueta de rede exclusiva: vpc-connector-REGION-CONNECTOR_NAME

        Substituição:

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

      Para saber mais acerca das etiquetas de rede de conetores, consulte o artigo Etiquetas de rede.

    • VPC_NETWORK: o nome da sua rede VPC

    • RESOURCE_TAG: a etiqueta de rede para o recurso de VPC ao qual quer que o conetor de VPC aceda

    • PRIORITY: um número inteiro inferior à prioridade que definiu no passo anterior. Por exemplo, se definir a prioridade da regra criada no passo anterior como 990, experimente 980.

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

Intervalo CIDR

Os passos seguintes mostram como criar regras de entrada que restringem o acesso de um conector à sua rede VPC com base no intervalo CIDR do conector.

  1. Certifique-se de que tem as autorizações necessárias para inserir regras de firewall. Tem de ter uma das seguintes funções de gestão de identidade e de acesso (IAM):

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

    Crie uma regra de firewall de entrada com uma prioridade inferior a 1000 na sua rede da VPC para negar a entrada a partir do intervalo CIDR do conector. Isto substitui a regra de firewall implícita que o acesso a VPC sem servidor cria na sua rede VPC por predefiniçã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 o seguinte:

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

    • PROTOCOL: um ou mais protocolos que quer permitir a partir do conector da VPC. Os protocolos suportados são tcp ou udp. Por exemplo, tcp:80,udp permite o tráfego TCP através da porta 80 e o tráfego UDP. Para mais informações, consulte a documentação da flag allow.

      Para fins de segurança e validação, também pode configurar regras de recusa para bloquear o tráfego dos seguintes protocolos não suportados: ah, all, esp, icmp, ipip e sctp.

    • VPC_CONNECTOR_CIDR_RANGE: o intervalo CIDR do conector cujo acesso está a restringir

    • VPC_NETWORK: o nome da sua rede VPC

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

  3. Permita o tráfego do conetor para o recurso que deve receber o tráfego do conetor.

    Use as flags allow e target-tags para criar uma regra de firewall de entrada que segmenta o recurso na sua rede VPC ao qual quer que o conetor VPC aceda. Defina a prioridade desta regra como um valor inferior à prioridade da regra que criou no passo 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 o seguinte:

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

    • PROTOCOL: um ou mais protocolos que quer permitir a partir do conector da VPC. Os protocolos suportados são tcp ou udp. Por exemplo, tcp:80,udp permite o tráfego TCP através da porta 80 e o tráfego UDP. Para mais informações, consulte a documentação da flag allow.

    • VPC_CONNECTOR_CIDR_RANGE: o intervalo CIDR do conector cujo acesso está a restringir

    • VPC_NETWORK: o nome da sua rede VPC

    • RESOURCE_TAG: a etiqueta de rede para o recurso de VPC ao qual quer que o conetor de VPC aceda

    • PRIORITY: um número inteiro inferior à prioridade que definiu no passo anterior. Por exemplo, se definir a prioridade da regra criada no passo anterior como 990, experimente 980.

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

Restrinja o acesso através de regras de saída

Os passos seguintes mostram como criar regras de saída para restringir o acesso ao conector.

  1. Certifique-se de que tem as autorizações necessárias para inserir regras de firewall. Tem de ter uma das seguintes funções de gestão de identidade e de acesso (IAM):

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

    Crie uma regra de firewall de saída no conector de acesso à VPC sem servidor para impedir que envie tráfego de saída, com exceção das 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 o seguinte:

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

    • PROTOCOL: um ou mais protocolos que quer permitir a partir do conector da VPC. Os protocolos suportados são tcp ou udp. Por exemplo, tcp:80,udp permite o tráfego TCP através da porta 80 e o tráfego UDP. Para mais informações, consulte a documentação da flag allow.

      Para fins de segurança e validação, também pode configurar regras de recusa para bloquear o tráfego dos seguintes protocolos não suportados: ah, all, esp, icmp, ipip e sctp.

    • VPC_CONNECTOR_NETWORK_TAG: a etiqueta de rede do conetor de VPC universal se quiser que a regra se aplique a todos os conetores de VPC existentes e a quaisquer conetores de VPC criados no futuro. Em alternativa, a etiqueta de rede do conetor de VPC exclusivo se quiser controlar um conetor específico.

    • VPC_NETWORK: o nome da sua rede VPC

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

  3. Permita o tráfego de saída quando o destino estiver no intervalo CIDR ao qual quer que o conector aceda.

    Use as flags allow e destination-ranges para criar uma regra de firewall que permita o tráfego de saída do seu conetor para um intervalo de destino específico. Defina o intervalo de destino para o intervalo CIDR do recurso na sua rede VPC ao qual quer que o conetor possa aceder. Defina a prioridade desta regra para um valor inferior à prioridade da regra criada no passo 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 o seguinte:

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

    • PROTOCOL: um ou mais protocolos que quer permitir a partir do conector da VPC. Os protocolos suportados são tcp ou udp. Por exemplo, tcp:80,udp permite o tráfego TCP através da porta 80 e o tráfego UDP. Para mais informações, consulte a documentação da flag allow.

    • RESOURCE_CIDR_RANGE: o intervalo CIDR do conetor cujo acesso está a restringir

    • VPC_NETWORK: o nome da sua rede VPC

    • VPC_CONNECTOR_NETWORK_TAG: a etiqueta de rede do conetor de VPC universal se quiser que a regra se aplique a todos os conetores de VPC existentes e a quaisquer conetores de VPC criados no futuro. Em alternativa, a etiqueta de rede do conetor de VPC exclusivo se quiser controlar um conetor específico. Se usou a etiqueta de rede exclusiva no passo anterior, use a etiqueta de rede exclusiva.

    • PRIORITY: um número inteiro inferior à prioridade que definiu no passo anterior. Por exemplo, se definir a prioridade da regra criada no passo anterior como 990, experimente 980.

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

Faça a gestão do conector

Controlar o tráfego de saída de um serviço

Por predefinição, apenas os pedidos a endereços IP internos e nomes DNS internos são encaminhados através de um conetor de acesso a VPC sem servidor. Pode especificar a definição de saída para o seu serviço no ficheiro app.yaml.

As definições de saída não são compatíveis com o serviço URL Fetch. Se ainda não o fez, desative a predefinição de obtenção de URL usando sockets e interrompa qualquer utilização explícita do pacote urlfetch. A utilização da biblioteca urlfetch ignora as definições de saída e os pedidos não são encaminhados através de um conetor do Acesso a VPC sem servidor.

Para configurar o comportamento de saída do seu serviço do App Engine:

  1. Adicione o atributo egress_setting ao campo vpc_access_connector do ficheiro app.yaml do serviço:

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

    Substituição:

    • PROJECT_ID com o seu Google Cloud ID do projeto
    • REGION com a região em que o conector se encontra
    • CONNECTOR_NAME com o nome do conetor
    • EGRESS_SETTING com uma das seguintes opções:
      • private-ranges-only Predefinição. Apenas os pedidos aos intervalos de endereços IP RFC 1918 e RFC 6598 ou aos nomes DNS internos são encaminhados para a sua rede VPC. Todos os outros pedidos são encaminhados diretamente para a Internet.
      • all-traffic Todos os pedidos de saída do seu serviço são encaminhados para a sua rede VPC. Os pedidos ficam sujeitos às regras de firewall, DNS e encaminhamento da sua rede VPC. Tenha em atenção que o encaminhamento de todos os pedidos de saída para a sua rede VPC aumenta a quantidade de saída processada pelo conetor do Acesso a VPC sem servidor e pode incorrer em custos.
  2. Implemente o serviço:

    gcloud app deploy
    

Desligue um serviço de uma rede de VPC

Para desassociar um serviço de uma rede VPC, remova o campo vpc_access_connector do ficheiro app.yaml e volte a implementar o serviço.

Os conetores continuam a incorrer em custos, mesmo que não tenham tráfego e estejam desligados. Para ver detalhes, consulte os preços. Se já não precisar do conetor, certifique-se de que o elimina para evitar a faturação contínua.

Atualize um conector

Pode atualizar e monitorizar os seguintes atributos do conetor através da consola Google Cloud , da CLI Google Cloud ou da API:

  • Tipo de máquina (instância)
  • Número mínimo e máximo de instâncias
  • Débito recente, número de instâncias e utilização da CPU

Atualize o tipo de máquina

Consola

  1. Aceda à página de vista geral do Acesso a VPC sem servidor.

    Aceda ao Acesso a VPC sem servidor

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

  3. Na lista Tipo de instância, selecione o tipo de máquina (instância) preferido. Para saber mais sobre os tipos de máquinas disponíveis, consulte a documentação sobre débito e escalabilidade.

gcloud

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

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

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

    • CONNECTOR_NAME: o nome do conetor
    • REGION: o nome da região do conector
    • MACHINE_TYPE: o seu tipo de máquina preferido. Para saber mais sobre os tipos de máquinas disponíveis, consulte a documentação sobre débito e escalabilidade.

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

Para diminuir o número mínimo e máximo de instâncias, tem de fazer o seguinte:

  1. Crie um novo conetor com os seus valores preferenciais.
  2. Atualize o seu serviço ou função para usar o novo conector.
  3. Elimine o conetor antigo quando tiver movido o respetivo tráfego.

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

Consola

  1. Aceda à página de vista geral do Acesso a VPC sem servidor.

    Aceda ao Acesso a VPC sem servidor

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

  3. No campo Instâncias mínimas, selecione o número mínimo de instâncias preferido.

    O valor mais pequeno possível para este campo é o valor atual. O maior valor possível para este 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 é 7.

  4. No campo Máximo de instâncias, selecione o número máximo de instâncias preferido.

    O valor mais pequeno possível para este campo é o valor atual. O valor máximo possível para este campo é 10.

gcloud

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  2. Para aumentar o número mínimo ou máximo de instâncias do 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 o seguinte:

    • CONNECTOR_NAME: o nome do conetor
    • REGION: o nome da região do conector
    • MIN_INSTANCES: o número mínimo preferencial de instâncias.
      • O valor mais pequeno possível para este campo é o valor atual de min_instances. Para encontrar o valor atual, consulte o artigo Encontre os valores dos atributos atuais.
      • O maior valor possível para este campo é o valor atual de max_instances menos 1, porque min_instances tem de ser inferior a max_instances. Por exemplo, se max_instances for 8, o maior valor possível para este campo é 7. Se o conector usar o valor predefinido de max-instances 10, o maior valor possível deste campo é 9. Para encontrar o valor de max-instances, consulte Encontre os valores dos atributos atuais.
    • MAX_INSTANCES:

      • O valor mais pequeno possível para este campo é o valor atual de max_instances. Para encontrar o valor atual, consulte o artigo Encontre os valores dos atributos atuais.
      • O maior valor possível para este campo é 10.

      Se quiser apenas aumentar o número mínimo de instâncias, mas não o número máximo, tem de especificar o número máximo de instâncias. Por outro lado, se quiser atualizar apenas o número máximo de instâncias, mas não o mínimo, tem de especificar o número mínimo de instâncias. Para manter o número mínimo ou máximo de instâncias no respetivo valor atual, especifique o valor atual. Para encontrar o valor atual, consulte o artigo Encontre os valores dos atributos atuais.

Encontre os valores dos atributos atuais

Para encontrar os valores dos atributos atuais do conector, execute o seguinte no terminal:

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

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

Monitorize a utilização do conetor

A monitorização da utilização ao longo do tempo pode ajudar a determinar quando ajustar as definições de um conector. Por exemplo, se a utilização da CPU aumentar repentinamente, pode tentar aumentar o número máximo de instâncias para obter melhores resultados. Em alternativa, se estiver a atingir o limite máximo de débito, pode decidir mudar para um tipo de máquina maior.

Para apresentar gráficos do débito, do número de instâncias e das métricas de utilização da CPU do conetor ao longo do tempo através da Google Cloud consola:

  1. Aceda à página de vista geral do Acesso a VPC sem servidor.

    Aceda ao Acesso a VPC sem servidor

  2. Clique no nome do conector que quer monitorizar.

  3. Selecione o número de dias que quer apresentar entre 1 e 90 dias.

  4. No gráfico Débito, mantenha o ponteiro sobre o gráfico para ver o débito recente do conector.

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

  6. No gráfico Utilização da CPU, mantenha o ponteiro sobre o gráfico para ver a utilização recente da CPU do conector. O gráfico apresenta a utilização da CPU distribuída pelas instâncias para os percentis 50, 95 e 99.

Elimine um conetor

Antes de eliminar um conetor, tem de o remover de todos os recursos sem servidor que ainda o usam. A eliminação de um conector antes de o remover dos recursos sem servidor impede a eliminação da rede VPC posteriormente.

Para os utilizadores da VPC partilhada que configuram conetores no projeto anfitrião da VPC partilhada, pode usar o comando gcloud compute networks vpc-access connectors describe para listar os projetos nos quais existem recursos sem servidor que usam um determinado conetor.

Para eliminar um conetor, use a Google Cloud consola ou a CLI do Google Cloud:

Consola

  1. Aceda à página de vista geral do Acesso a VPC sem servidor na Google Cloud consola:

    Aceda ao Acesso a VPC sem servidor

  2. Selecione o conector que quer eliminar.

  3. Clique em Eliminar.

gcloud

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  2. Use o seguinte comando gcloud para eliminar um conetor:

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

    Substitua o seguinte:

    • CONNECTOR_NAME com o nome do conetor que quer eliminar
    • REGION com a região onde o conetor está localizado

Resolução de problemas

Autorizações da conta de serviço

Para realizar operações no seu Google Cloud projeto, o Acesso a VPC sem servidor usa a conta de serviço doagente de serviço do Acesso a VPC sem servidor. O endereço de email desta conta de serviço tem o seguinte formato:

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

Por predefinição, esta conta de serviço tem a função Agente do serviço de acesso a VPC sem servidor (roles/vpcaccess.serviceAgent). As operações de acesso a VPC sem servidor podem falhar se alterar as autorizações desta conta.

Mau desempenho da rede ou utilização elevada da CPU em modo inativo

A utilização de um único conetor para milhares de instâncias pode causar uma degradação do desempenho e uma utilização elevada da CPU inativa. Para corrigir este problema, divida os seus serviços entre vários conetores.

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.

Erros

Erro de função do agente do serviço da conta de serviço

Se usar a restrição da política da organização Restrict Resource Service Usage para bloquear o Cloud Deployment Manager (deploymentmanager.googleapis.com), pode 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 exclusões ou adicioná-lo à lista de permissões.

Erro de criação do conetor

Se a criação de um conetor resultar num erro, experimente 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 ao seu projeto autorização para usar imagens de VMs do Compute Engine do projeto com o ID serverless-vpc-access-images. Para mais informações sobre como atualizar a política da sua organização em conformidade, consulte o artigo Defina restrições de acesso a imagens.

Não é possível aceder aos recursos

Se especificou um conector, mas continua a não conseguir aceder aos recursos na sua rede VPC, certifique-se de que não existem regras de firewall na sua rede VPC com uma prioridade inferior a 1000 que neguem a entrada a partir do intervalo de endereços IP do conector.

Se configurar um conector num projeto de serviço de VPC partilhada, certifique-se de que as regras de firewall permitem a entrada da sua infraestrutura sem servidor no conector.

Erro de ligação recusada

Se receber erros connection refused ou connection timeout que degradam o desempenho da rede, as suas ligações podem estar a aumentar sem limite nas invocações da sua aplicação sem servidor. Para limitar o número máximo de ligações usadas por instância, use uma biblioteca de cliente que suporte conjuntos de ligações. Para ver exemplos detalhados de como usar conjuntos de ligações, consulte o artigo Faça a gestão das ligações à base de dados.

Erro de recurso não encontrado

Quando elimina uma rede VPC ou uma regra de firewall, pode ver uma mensagem semelhante à seguinte: The resource "aet-uscentral1-subnet--1-egrfw" was not found.

Para ver informações sobre este erro e a respetiva solução, consulte o artigo Erro de recurso não encontrado na documentação sobre as regras de firewall da VPC.

Passos seguintes