Como se conectar a uma rede VPC

Nesta página, mostramos como usar o acesso VPC sem servidor para conectar um serviço do Cloud Run (totalmente gerenciado) diretamente à sua rede VPC, permitindo acesso a instâncias de VM do Compute Engine, instâncias do Memorystore e outros recursos com um Endereço IP interno.

Para usar o acesso VPC sem servidor, crie primeiro um conector de acesso VPC sem servidor para processar a comunicação com sua rede VPC. Depois de criar um conector, defina a configuração do serviço do Cloud Run (totalmente gerenciado) para usar o conector.

Como criar um conector de acesso VPC sem servidor

Veja instruções detalhadas sobre como criar conectores de acesso VPC sem servidor em Como criar um conector.

Como configurar um serviço para usar um conector

Configure um serviço para usar um conector do Console do Cloud, linha de comando ou arquivo YAML ao criar um novo serviço ou implantar uma nova revisão:

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 um serviço atual, clique nele e em Editar e implantar nova revisão.

  3. Em Configurações avançadas, clique em Conexões.

    imagem

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

Linha de comando

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
  • Substitua SERVICE pelo nome do serviço.
  • Substitua IMAGE_URL por uma referência à imagem do contêiner, por exemplo, gcr.io/myproject/my-image:latest.
  • Substitua CONNECTOR_NAME pelo nome do seu 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 ver a configuração do serviço atual 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 beta 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 (totalmente gerenciado).
    • Substitua CONNECTOR_NAME pelo nome do seu conector.
  3. Substitua o serviço pela nova configuração usando o seguinte comando:

    gcloud beta run services replace service.yaml

Como se conectar a uma rede VPC compartilhada

Se sua organização usa a VPC compartilhada, um serviço do Cloud Run (totalmente gerenciado) em um projeto de serviço da VPC compartilhada pode se conectar a uma rede VPC compartilhada após algumas configurações no projeto host da VPC compartilhada.

  1. Verifique se um administrador do projeto host concluiu a configuração descrita em Como usar uma rede VPC compartilhada. Esta configuração inclui a criação de um conector de acesso VPC sem servidor no projeto host e a anexação à rede VPC compartilhada.
  2. Ative a API de acesso VPC sem servidor no projeto de serviço:

    Ativar API

  3. Após a conclusão da configuração do projeto host, ao implantar ou atualizar um serviço do Cloud Run (totalmente gerenciado) no projeto de serviço, é possível especificar o conector do projeto host usando o nome totalmente qualificado do conector. Por exemplo:

    gcloud run deploy SERVICE --image IMAGE_URL \
    --vpc-connector projects/HOST_PROJECT_ID/locations/CONNECTOR_REGION/connectors/CONNECTOR_NAME

    Isso conecta seu serviço à rede VPC compartilhada.

Como controlar o tráfego de saída de um serviço

Por padrão, somente solicitações para endereços IP internos e nomes DNS internos são roteadas por meio de um conector de acesso VPC sem servidor. Em alguns casos, no entanto, é recomendável que todas as solicitações de saída do serviço sejam roteadas para a rede VPC, por exemplo, para evitar o tráfego de saída para hosts perigosos ou indesejados com as regras de firewall da sua rede.

Para controlar o roteamento de solicitações de saída do seu serviço, defina a saída da VPC para uma das seguintes opções:

  • Rotear solicitações somente para IPs privados por meio do conector da VPC: padrão. Somente solicitações para intervalos de endereços IP RFC 1918 e RFC 6598 ou nomes de DNS internos são roteadas para sua rede VPC. Todas as outras solicitações são roteadas diretamente para a Internet.
  • Rotear todo o tráfego pelo conector VPC: todas as solicitações de saída da função são roteadas para sua rede VPC. As solicitações seguirão as regras de firewall, DNS e roteamento da rede.

É possível especificar uma configuração de saída da VPC no Console do Cloud, na linha de comando ou no arquivo YAML ao criar um novo serviço ou implantar uma nova revisão:

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 um serviço atual, clique nele e em Editar e implantar nova revisão.

  3. Em Configurações avançadas, clique em Conexões.

    imagem

  4. Depois de selecionar um conector VPC, selecione Rotear solicitações somente para IPs privados por meio do conector VPC ou Rotear todo o tráfego pelo conector VPC.

  5. Clique em Criar ou Implantar.

Linha de comando

Para especificar uma configuração de saída, use a sinalização --vpc-egress. É possível especificar uma configuração de saída durante a implantação:

gcloud beta run deploy SERVICE \
--image IMAGE_URL \
--vpc-connector CONNECTOR_NAME \
--vpc-egress EGRESS_SETTING
  • Substitua SERVICE pelo nome do serviço.
  • Substitua IMAGE_URL por uma referência à imagem do contêiner, por exemplo, gcr.io/myproject/my-image:latest.
  • Substitua CONNECTOR_NAME pelo nome do seu conector.
  • Substitua EGRESS_SETTING por um valor de configuração de saída:
    • all: envia todo o tráfego de saída por meio do conector.
    • private-ranges-only: envia somente o tráfego para endereços internos por meio do conector VPC.

Também é possível atualizar um serviço existente e alterar a configuração de saída:

gcloud beta run services update SERVICE --vpc-egress EGRESS_SETTING

YAML

É possível fazer o download e ver a configuração do serviço atual 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 beta 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-egress 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
            run.googleapis.com/vpc-access-egress: EGRESS_SETTING
    • Substitua SERVICE pelo nome do serviço do Cloud Run (totalmente gerenciado).
    • Substitua CONNECTOR_NAME pelo nome do seu conector. O atributo run.googleapis.com/vpc-access-connector é obrigatório ao especificar uma configuração de saída.
    • Substitua EGRESS_SETTING por um dos seguintes:
      • all: envia todo o tráfego de saída por meio do conector.
      • private-ranges-only: envia somente o tráfego para endereços internos por meio do conector VPC.
  3. Substitua o serviço pela nova configuração usando o seguinte comando:

    gcloud beta run services replace service.yaml

A seguir