Por padrão, um serviço do Cloud Run se conecta a endpoints externos na Internet usando um pool de endereços IP dinâmicos. Se o serviço do Cloud Run se conectar a um endpoint externo que requer um endereço IP estático, como um banco de dados ou uma API usando um firewall baseado em endereço IP, configure o serviço do Cloud Run para encaminhar solicitações usando um endereço IP estático.
Esta página descreve como permitir que um serviço do Cloud Run envie solicitações usando um endereço IP estático.
Recomendamos configurar o Cloud Run para enviar tráfego a uma rede VPC usando a Saída direta de VPC. No entanto, você tem a opção de criar um conector.
Visão geral
Para permitir que um serviço do Cloud Run encaminhe solicitações por meio de um endereço IP estático, é necessário configurar a saída VPC do serviço do Cloud Run para rotear todo o tráfego de saída por meio de uma instância rede VPC que tenha um gateway do Cloud NAT configurado com o endereço IP estático.
Direcionar seu tráfego por meio do Cloud NAT não causa um salto adicional na pilha de rede, porque o gateway do Cloud NAT e o Cloud Router fornecem apenas um plano de controle e os pacotes não passam o gateway NAT ou o Cloud Router.
Configurar a conversão de endereços de rede (NAT)
Se você usa a saída VPC direta ou um conector de acesso VPC sem servidor, as solicitações do serviço do Cloud Run chegam à rede VPC. Se você quiser rotear solicitações de saída para endpoints externos por meio de um IP estático, configure um gateway do Cloud NAT.
gcloud
Crie um novo Cloud Router para programar um gateway da Cloud NAT:
gcloud compute routers create ROUTER_NAME \ --network=NETWORK_NAME \ --region=REGION
Substitua os seguintes valores neste comando:
ROUTER_NAME
com um nome para o recurso do Cloud Router que você quer criar.NETWORK_NAME
pelo nome da rede VPC que você encontrou anteriormente.REGION
pela região em que você quer criar um gateway do Cloud NAT.
Reservar um endereço IP estático Um recurso de endereço IP reservado retém o endereço IP subjacente quando o recurso ao qual ele está associado é excluído e recriado:
gcloud compute addresses create ORIGIN_IP_NAME --region=REGION
Substitua os seguintes valores neste comando:
ORIGIN_IP_NAME
pelo nome que você quer atribuir ao recurso de endereço IP.REGION
pela região que executará o roteador do Cloud NAT. Use a mesma região do serviço do Cloud Run para minimizar os custos de latência e rede.
Crie uma configuração de gateway do Cloud NAT neste roteador para rotear o tráfego proveniente da rede VPC usando o endereço IP estático que você criou:
gcloud compute routers nats create NAT_NAME \ --router=ROUTER_NAME \ --region=REGION \ --nat-custom-subnet-ip-ranges=SUBNET_NAME \ --nat-external-ip-pool=ORIGIN_IP_NAME
Substitua os seguintes valores neste comando:
NAT_NAME
com um nome para o recurso de gateway do Cloud NAT que você quer criar.ROUTER_NAME
com o nome do seu Cloud RouterREGION
pela região em que você quer criar um gateway do Cloud NAT.SUBNET_NAME
pelo nome da sub-rede.ORIGIN_IP_NAME
pelo nome do recurso de endereço IP reservado criado na etapa anterior.
Terraform
Crie um novo Cloud Router para programar um gateway da Cloud NAT:
Substitua
cr-static-ip-router
pelo nome da sua sub-rede.Reservar um endereço IP estático Um recurso de endereço IP reservado retém o endereço IP subjacente quando o recurso ao qual ele está associado é excluído e recriado:
Substitua
cr-static-ip-addr
pelo nome da sua sub-rede.Crie uma configuração de gateway do Cloud NAT neste roteador para rotear o tráfego proveniente da rede VPC usando o endereço IP estático que você criou:
Substitua
cr-static-nat
pelo nome do gateway NAT do Cloud.
Como rotear o tráfego do Cloud Run por meio da rede VPC
Depois que o Cloud NAT for configurado, implante ou atualize seu serviço do Cloud Run com o conector de saída direta da VPC ou de acesso VPC sem servidor e defina a saída da VPC para encaminhar todo o tráfego pela rede VPC:
gcloud
Saída de VPC direta
Para implantar ou atualizar o serviço do Cloud Run para usar a saída VPC direta e rotear todo o tráfego de saída por ela, execute o seguinte comando:
gcloud run deploy SERVICE_NAME
--image=IMAGE_URL
--network=NETWORK
--subnet=SUBNET
--region=REGION
--vpc-egress=all-traffic
Substitua os seguintes valores neste comando:
- SERVICE_NAME pelo nome do serviço do Cloud Run que você quer implantar.
- 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 formatoLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
- NETWORK pelo nome da sua rede VPC;
- SUBNET pelo nome da sub-rede.
- REGION por uma região do seu serviço.
Conector de acesso VPC sem servidor
Para implantar ou atualizar seu serviço do Cloud Run para usar um conector de acesso VPC sem servidor e rotear todo o tráfego de saída por ele, execute o seguinte comando:
gcloud run deploy SERVICE_NAME
--image=IMAGE_URL
--vpc-connector=CONNECTOR_NAME
--region=REGION
--vpc-egress=all-traffic
Substitua os seguintes valores neste comando:
* SERVICE_NAME pelo nome do serviço do Cloud Run que você quer implantar.
* IMAGE_URL por uma referência à imagem do contêiner. Por
exemplo, us-docker.pkg.dev/cloudrun/container/hello:latest
. Se você usa o Artifact Registry,
o repositório REPO_NAME já precisa
ter sido criado. O URL tem o formato LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
.
* CONNECTOR_NAME pelo nome do
conector de acesso VPC sem servidor.
* REGION por uma região do seu serviço.
YAML
Saída de VPC direta
Se você estiver criando um novo serviço, pule esta etapa. Se você estiver atualizando um serviço, faça o download da configuração YAML correspondente:
gcloud run services describe SERVICE --format export > service.yaml
Faça as atualizações necessárias.
apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE spec: template: metadata: annotations: run.googleapis.com/network-interfaces: '[{"network":"NETWORK","subnetwork":"SUBNET"}]' run.googleapis.com/vpc-access-egress: all-traffic spec: containers: - image: IMAGE_URL
Substitua:
- SERVICE pelo nome do serviço do Cloud Run.
- NETWORK pelo nome da sua rede VPC;
- SUBNET pelo nome da sub-rede.
- IMAGE_URL pelo URL da imagem de contêiner do serviço.
Crie ou atualize o serviço usando o seguinte comando:
gcloud run services replace service.yaml
Conector de acesso VPC sem servidor
Se você estiver criando um novo serviço, pule esta etapa. Se você estiver atualizando um serviço, faça o download da configuração YAML correspondente:
gcloud run services describe SERVICE --format export > service.yaml
Faça as atualizações necessárias.
apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE spec: template: metadata: annotations: run.googleapis.com/vpc-access-connector: CONNECTOR_NAME spec: containers: - image: IMAGE_URL
Substitua:
- SERVICE pelo nome do serviço do Cloud Run.
- CONNECTOR_NAME pelo nome da sua rede de acesso VPC sem servidor.
- IMAGE_URL pelo URL da imagem de contêiner do serviço.
Crie ou atualize o serviço usando o seguinte comando:
gcloud run services replace service.yaml
Terraform
Esse serviço do Cloud Run usa um conector VPC e encaminha todo o tráfego de saída por ele:
Substitua us-docker.pkg.dev/cloudrun/container/hello
por uma referência à imagem do seu contêiner.
Verificar o endereço IP externo estático
Depois de concluir as etapas anteriores, você configurou o Cloud NAT na sua rede VPC com um endereço IP estático predefinido e roteou todo o tráfego de saída do serviço do Cloud Run para sua rede VPC. As solicitações do serviço do Cloud Run passam pela rede VPC e alcançam endpoints externos usando o endereço IP estático.
Para verificar esse comportamento e confirmar o endereço IP de origem que seu serviço usa, faça uma solicitação para uma API ou um site, como curlmyip.org, que mostre o endereço IP de origem do Google Analytics.
Como excluir o endereço IP externo estático
Se você não precisar mais de um endereço IP externo estático, consulte Liberar um endereço IP externo estático.