Pode ativar o seu serviço, tarefa ou conjunto de trabalhadores do Cloud Run para enviar tráfego para uma rede VPC através da saída da VPC direta sem necessidade de um conetor de acesso à VPC sem servidor.
Antes de começar
Se ainda não tiver uma rede VPC no seu projeto, crie uma.
Se usar a VPC partilhada com serviços ou tarefas do Cloud Run, consulte o artigo Estabelecer ligação a uma rede VPC partilhada.
Reveja as seguintes secções de configuração do endereço IP:
Atribuição de endereços IP para obter orientações sobre a atribuição de endereços IP a partir da sua sub-rede.
Estratégias de esgotamento de endereços IP para usar intervalos de endereços IP alternativos.
Limitações
As seguintes limitações aplicam-se a serviços, tarefas e pools de trabalhadores do Cloud Run:
- Pode ocorrer um atraso de um minuto ou mais no estabelecimento da ligação no arranque da instância quando usar a saída da VPC direta. Recomendamos que configure uma sondagem de arranque HTTP que testa uma ligação a um destino de saída usado pela aplicação antes de a aplicação aceitar pedidos. Este teste de conetividade de saída deve implementar novas tentativas ou a sondagem de arranque deve ser definida com configurações de período e limite adequadas para atuar como uma nova tentativa.
- O Cloud Run suporta um débito de até 1 Gbps por instância individual. Exceder este valor resulta na limitação do desempenho.
Uma quota de utilização do Cloud Run limita o número máximo de instâncias que pode configurar para usar a saída da VPC direta. O número máximo é configurado por revisão ou execução de tarefas do Cloud Run. Para aumentar os limites predefinidos, veja como aumentar as quotas.
- Os serviços, as tarefas e os conjuntos de trabalhadores do Cloud Run podem sofrer interrupções de ligação durante eventos de manutenção da infraestrutura de rede. Recomendamos que use bibliotecas de cliente que possam processar reposições de ligação ocasionais.
- O suporte de saída de VPC direta para tráfego IPv6 interno está disponível apenas na pré-visualização.
- O NAT privado está disponível apenas na pré-visualização.
Os seguintes itens não são suportados pela saída direta da VPC:
- Os registos de fluxo da VPC não fornecem o nome do serviço ou da revisão do Cloud Run.
- Os registos de fluxo de VPC não são comunicados a partir de recursos que não sejam de MV, como o Cloud Run ou máquinas no local.
- Espelhamento de pacotes
- Network Intelligence Center, incluindo testes de conetividade
- Tráfego IPv6 externo através de uma rede de VPC
- Etiquetas de rede ou identidade do serviço nas regras da firewall de entrada.
- As regras de firewall não podem usar etiquetas do Resource Manager anexadas a cargas de trabalho do Cloud Run.
- As tarefas do Cloud Run que são executadas durante mais de 1 hora podem sofrer
interrupções de ligação. Estas podem ocorrer durante
eventos de manutenção
que migram a tarefa de uma máquina para outra. O contentor recebe um sinal
SIGTSTP
10 segundos antes do evento e um sinalSIGCONT
após o evento. Depois de o contentor receber o sinalSIGCONT
, tente estabelecer a ligação novamente.
Atribuição de endereços IP
Para colocar o seu serviço, tarefa ou conjunto de trabalhadores do Cloud Run numa rede VPC, especifique uma rede VPC ou uma sub-rede, ou ambas. Se especificar apenas uma rede, a sub-rede usa o mesmo nome que a rede. O Cloud Run atribui endereços IP da sua sub-rede.
Os endereços IP são efémeros, por isso, não crie políticas com base em IPs individuais. Se precisar de criar uma política baseada em IPs, como nas regras de firewall, tem de usar o intervalo de endereços IP de toda a sub-rede.
Para alterar a rede ou a sub-rede que o seu serviço, trabalho ou conjunto de trabalhadores usa, implemente uma nova revisão ou execute uma nova tarefa de trabalho que use os novos valores de rede e sub-rede.
Aumente e diminua a escala
Para um aumento mais rápido durante um pico de tráfego, o Cloud Run reserva endereços IP em blocos de 16 (máscara de sub-rede 28
) de cada vez.
Veja que endereços IP o Cloud Run atribuiu.
Para garantir que tem endereços IPv4 suficientes disponíveis para utilização no Cloud Run, o intervalo de endereços IPv4 da sua sub-rede tem de ser /26
ou superior.
Para eficiência da atribuição de IPs e facilidade de gestão, coloque vários recursos na mesma sub-rede. Se o seu espaço de endereços IPv4 for limitado, consulte os intervalos IPv4 suportados para ver mais opções.
Para eliminar a sub-rede, primeiro tem de eliminar ou voltar a implementar os seus serviços, tarefas ou conjuntos de trabalhadores do Cloud Run para deixar de usar a sub-rede e, em seguida, aguardar 1 a 2 horas.
Consumo de endereços IP para serviços e pools de trabalhadores
No estado estável, o Cloud Run usa 2 vezes (2X) mais endereços IP do que o número de instâncias. Quando uma revisão é reduzida, o Cloud Run retém os respetivos endereços IP durante um máximo de 20 minutos. No total, reserve, pelo menos, o dobro do número de endereços IP, mais uma margem para ter em conta as atualizações de revisão.
Por exemplo, se atualizar as revisões para que revision 1
seja reduzido de 100 instâncias para zero, enquanto revision 2
é aumentado de zero para 100, o Cloud Run retém os endereços IP revision 1
durante um máximo de 20 minutos após a redução da escala. Durante o período de retenção de 20 minutos, tem de reservar, pelo menos, 400 endereços IP ((100 + 100) * 2
).
Consumo de IP para empregos
Para tarefas do Cloud Run, cada tarefa consome 1 endereço IP durante a execução, mais 7 minutos após a conclusão. Certifique-se de que a sua sub-rede é suficientemente grande para acomodar todas as execuções de tarefas de trabalhos simultâneas, com uma sub-rede de reserva mínima /26
obrigatória.
Por exemplo:
- Uma tarefa única que é executada diariamente e que termina sempre, pelo menos, 7 minutos antes da execução seguinte consome um máximo de 1 endereço IP na sub-rede.
- Uma tarefa de 10 tarefas executada a cada 10 minutos, com cada tarefa a ser executada durante 15 minutos, consome 1 endereço IP durante 22 minutos por tarefa (3 execuções consomem endereços IP ao mesmo tempo), conforme mostrado no exemplo seguinte. Por conseguinte, a tarefa consome 30 endereços IP em estado estável.
- Uma tarefa única que demora 1 minuto a ser executada e é executada 100 vezes por minuto requer aproximadamente 800 endereços IP, consoante a hora exata de execução.
Intervalos de IPv4 suportados
O Cloud Run suporta os seguintes intervalos IPv4 para a sua sub-rede:
Configure as autorizações do IAM
Certifique-se de que o Cloud Run tem acesso à rede VPC através de um dos seguintes métodos:
Função de agente de serviço do Cloud Run: por predefinição, o agente de serviço do Cloud Run tem a função de agente de serviço do Cloud Run (
roles/run.serviceAgent
) que contém as autorizações necessárias.Autorizações personalizadas: para um controlo mais detalhado, conceda ao agente do serviço do Cloud Run as seguintes autorizações adicionais no projeto:
compute.networks.get
compute.subnetworks.get
compute.subnetworks.use
no projeto ou na sub-rede específicacompute.addresses.get
compute.addresses.list
compute.addresses.createInternal
compute.addresses.deleteInternal
compute.regionOperations.get
Função de utilizador da rede de computação: se não usar a função de agente do serviço do Cloud Run predefinida nem as autorizações personalizadas, atribua a função de utilizador da rede de computação (
roles/compute.networkUser
) à conta de serviço do agente do serviço do Cloud Run executando o seguinte comando:gcloud projects add-iam-policy-binding PROJECT_ID \ --member "serviceAccount:service-PROJECT_NUMBER@serverless-robot-prod.iam.gserviceaccount.com" \ --role "roles/compute.networkUser"
Substitua o seguinte:
- PROJECT_ID: o ID do seu projeto.
- PROJECT_NUMBER: o número do projeto onde implementa o seu serviço, tarefa ou conjunto de trabalhadores do Cloud Run.
Implemente um recurso do Cloud Run
Consoante o recurso do Cloud Run que tiver, consulte as instruções numa das seguintes secções:
Implemente um serviço
A saída da VPC direta permite que o seu serviço do Cloud Run envie tráfego para uma rede VPC sem um conetor do Acesso a VPC sem servidor. Os custos de rede são reduzidos a zero, tal como o próprio serviço. Também pode adicionar etiquetas de rede diretamente às revisões do serviço do Cloud Run para uma segurança de rede mais detalhada, como a aplicação de regras de firewall da VPC.
Pode configurar a saída direta da VPC com um serviço através da Google Cloud consola, da CLI do Google Cloud, de YAML ou do Terraform.
Consola
Clique em Criar serviço se estiver a configurar um novo serviço para o qual está a implementar. Se estiver a configurar e implementar um serviço existente, clique no serviço e, de seguida, em Editar e implementar nova revisão.
Se estiver a configurar um novo serviço, preencha a página de definições iniciais do serviço conforme necessário e, de seguida, clique em Contentores, volumes, rede, segurança para expandir a página de configuração do serviço.
Clique no separador Rede.
Clique em Ligar a uma VPC para tráfego de saída.
Clique em Enviar tráfego diretamente para uma VPC.
No campo Rede, selecione a rede VPC para a qual quer enviar tráfego.
No campo Sub-rede, selecione a sub-rede a partir da qual o seu serviço recebe endereços IP. Pode implementar vários serviços na mesma sub-rede.
Opcional: introduza os nomes das etiquetas de rede que quer associar ao seu serviço ou serviços. As etiquetas de rede são especificadas ao nível da revisão. Cada revisão do serviço pode ter etiquetas de rede diferentes, como
network-tag-2
.Para Encaminhamento de tráfego, selecione uma das seguintes opções:
- Encaminhe apenas pedidos para IPs privados para a VPC para enviar apenas tráfego para endereços internos através da rede VPC.
- Encaminhe todo o tráfego para a VPC para enviar todo o tráfego de saída através da rede de VPC.
Clique em Criar ou Implementar.
Para verificar se o seu serviço está na rede VPC, clique no serviço e, de seguida, clique no separador Redes. A rede e a sub-rede estão listadas no cartão VPC.
Já pode enviar pedidos do seu serviço do Cloud Run para qualquer recurso na rede VPC, conforme permitido pelas regras da firewall.
gcloud
Para implementar um serviço do Cloud Run sem um conetor a partir da CLI do Google Cloud:
Atualize os componentes do
gcloud
para a versão mais recente:gcloud components update
Certifique-se de que a API Compute Engine está ativada para o seu projeto:
gcloud services enable compute.googleapis.com
Implemente o seu serviço do Cloud Run com o seguinte comando:
gcloud run deploy SERVICE_NAME \ --image=IMAGE_URL \ --network=NETWORK \ --subnet=SUBNET \ --network-tags=NETWORK_TAG_NAMES \ --vpc-egress=EGRESS_SETTING \ --region=REGION
Substituir:
- SERVICE_NAME com o nome do seu serviço do Cloud Run.
- IMAGE_URL: uma referência à imagem do contentor, por exemplo,
us-docker.pkg.dev/cloudrun/container/hello:latest
. Se usar o Artifact Registry, o repositório REPO_NAMEtem de já estar criado. O URL segue o formatoLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
- Opcional: NETWORK com o nome da sua rede de VPC. Especifique uma rede de VPC ou uma sub-rede, ou ambas. Se especificar apenas uma rede, a sub-rede usa o mesmo nome que a rede.
- Opcional: SUBNET com o nome da sua sub-rede. Especifique uma rede de VPC ou uma sub-rede, ou ambas. Se especificar apenas uma rede, a sub-rede usa o mesmo nome que a rede. Pode implementar ou executar vários serviços, tarefas ou conjuntos de trabalhadores na mesma sub-rede.
- Opcional: NETWORK_TAG_NAMES com os nomes separados por vírgulas
das etiquetas de rede
que quer associar a um serviço. Para serviços, as etiquetas de rede são especificadas ao nível da revisão. Cada revisão do serviço pode ter
etiquetas de rede diferentes, como
network-tag-2
. - EGRESS_SETTING com um
valor de definição de saída:
all-traffic
: envia todo o tráfego de saída através da rede VPC.private-ranges-only
: envia apenas tráfego para endereços internos através da rede VPC.
- REGION com uma região para o seu serviço.
Para verificar se o seu serviço está na rede VPC, execute o seguinte comando:
gcloud run services describe SERVICE_NAME \ --region=REGION
Substituir:
SERVICE_NAME
com o nome do seu serviço.REGION
com a região do seu serviço que especificou no passo anterior.
O resultado deve conter o nome da sua rede, sub-rede e definição de saída, por exemplo:
VPC access: Network: default Subnet: subnet Egress: private-ranges-only
Já pode enviar pedidos do seu serviço do Cloud Run para qualquer recurso na rede VPC, conforme permitido pelas regras da firewall.
YAML
Se estiver a criar um novo serviço, ignore este passo. Se estiver a atualizar um serviço existente, transfira a respetiva configuração YAML:
gcloud run services describe SERVICE --format export > service.yaml
Atualize os seguintes atributos:
apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE_NAME labels: cloud.googleapis.com/location: REGION spec: template: metadata: annotations: run.googleapis.com/network-interfaces: '[{"network":"NETWORK","subnetwork":"SUBNET","tags":"NETWORK_TAG_NAMES"}]' run.googleapis.com/vpc-access-egress: EGRESS_SETTING spec: containers: - image: IMAGE
Substituir:
- SERVICE_NAME com o nome do seu serviço do Cloud Run. Os nomes dos serviços têm de ter 49 carateres ou menos e têm de ser únicos por região e projeto.
- REGION com a região do seu serviço do Cloud Run, que tem de corresponder à região da sua sub-rede.
- Opcional: NETWORK com o nome da sua rede de VPC. Especifique uma rede de VPC ou uma sub-rede, ou ambas. Se especificar apenas uma rede, a sub-rede usa o mesmo nome que a rede.
- Opcional: SUBNET com o nome da sua sub-rede. Especifique uma rede de VPC ou uma sub-rede, ou ambas. Se especificar apenas uma rede, a sub-rede usa o mesmo nome que a rede. Pode implementar ou executar vários serviços, tarefas ou conjuntos de trabalhadores na mesma sub-rede.
- Opcional: NETWORK_TAG_NAMES com os nomes das
etiquetas de rede
que quer associar a um serviço. Para serviços, as etiquetas de rede são especificadas ao nível da revisão. Cada revisão do serviço pode ter
etiquetas de rede diferentes, como
network-tag-2
. - EGRESS_SETTING com um
valor de definição de saída:
all-traffic
: envia todo o tráfego de saída através da rede VPC.private-ranges-only
: envia apenas tráfego para endereços internos através da rede VPC.
- IMAGE com o URL da imagem do contentor de serviços.
Também pode especificar mais configurações, como variáveis de ambiente ou limites de memória.
Crie ou atualize o serviço com o seguinte comando:
gcloud run services replace service.yaml
Terraform
Para saber como aplicar ou remover uma configuração do Terraform, consulte os comandos básicos do Terraform.
Adicione o seguinte ao ficheiro
main.tf
:
Opcionalmente, torne o seu serviço público se quiser permitir o acesso não autenticado ao serviço.
Crie um trabalho
A saída da VPC direta permite que a tarefa do Cloud Run envie tráfego para uma rede VPC sem um conetor do Acesso a VPC sem servidor. Também pode adicionar etiquetas de rede diretamente em tarefas do Cloud Run para uma segurança de rede mais detalhada, como a aplicação de regras da firewall da VPC.
Pode configurar a saída da VPC direta com uma tarefa através da Google Cloud consola, da CLI do Google Cloud ou do YAML.
Consola
Se estiver a configurar uma nova tarefa, clique no separador Tarefas e preencha a página de definições iniciais da tarefa conforme necessário. Se estiver a configurar uma tarefa existente, clique na tarefa e, de seguida, em Editar.
Clique em Recipiente, variáveis e segredos, ligações, segurança para expandir a página de propriedades da tarefa.
Clique no separador Ligações.
Clique em Ligar a uma VPC para tráfego de saída.
Clique em Enviar tráfego diretamente para uma VPC.
No campo Rede, selecione a rede de VPC para a qual quer enviar tráfego.
No campo Sub-rede, selecione a sub-rede a partir da qual a tarefa recebe endereços IP. Pode executar várias tarefas na mesma sub-rede.
Para Encaminhamento de tráfego, selecione uma das seguintes opções:
- Encaminhe apenas pedidos para IPs privados para a VPC para enviar apenas tráfego para endereços internos através da rede VPC.
- Encaminhe todo o tráfego para a VPC para enviar todo o tráfego de saída através da rede de VPC.
Opcional: introduza os nomes das etiquetas de rede que quer associar ao seu serviço ou serviços. As etiquetas de rede são especificadas ao nível da revisão. Cada revisão do serviço pode ter etiquetas de rede diferentes, como
network-tag-2
.Opcional: introduza os nomes das etiquetas de rede que quer associar à sua tarefa ou tarefas. Para trabalhos, as etiquetas de rede são especificadas ao nível da execução. Cada execução de tarefa pode ter etiquetas de rede diferentes, como
network-tag-2
.Clique em Criar ou Atualizar.
Para verificar se a tarefa está na sua rede VPC, clique na tarefa e, de seguida, clique no separador Configuração. A rede e a sub-rede estão indicadas no cartão VPC.
Já pode executar a tarefa do Cloud Run e enviar pedidos da tarefa para qualquer recurso na rede da VPC, conforme permitido pelas regras de firewall.
gcloud
Para criar uma tarefa do Cloud Run sem um conector a partir da CLI do Google Cloud:
Atualize os componentes do
gcloud
para a versão mais recente:gcloud components update
Certifique-se de que a API Compute Engine está ativada para o seu projeto:
gcloud services enable compute.googleapis.com
Crie uma tarefa do Cloud Run com o seguinte comando:
gcloud run jobs create JOB_NAME \ --image=IMAGE_URL \ --network=NETWORK \ --subnet=SUBNET \ --network-tags=NETWORK_TAG_NAMES \ --vpc-egress=EGRESS_SETTING \ --region=REGION
Substituir:
- JOB_NAME com o nome da tarefa do Cloud Run.
- IMAGE_URL: uma referência à imagem do contentor, por exemplo,
us-docker.pkg.dev/cloudrun/container/job:latest
- Opcional: NETWORK com o nome da sua rede de VPC. Especifique uma rede de VPC ou uma sub-rede, ou ambas. Se especificar apenas uma rede, a sub-rede usa o mesmo nome que a rede.
- Opcional: SUBNET com o nome da sua sub-rede. Especifique uma rede de VPC ou uma sub-rede, ou ambas. Se especificar apenas uma rede, a sub-rede usa o mesmo nome que a rede. Pode implementar ou executar vários serviços, tarefas ou conjuntos de trabalhadores na mesma sub-rede.
- Opcional: NETWORK_TAG_NAMES com os nomes das
etiquetas de rede
que quer associar a uma tarefa. Para trabalhos, as etiquetas de rede são especificadas ao nível da execução. Cada execução de tarefa pode ter etiquetas de rede diferentes, como
network-tag-2
. - EGRESS_SETTING com um
valor de definição de saída:
all-traffic
: envia todo o tráfego de saída através da rede VPC.private-ranges-only
: envia apenas tráfego para endereços internos através da rede VPC.
- REGION com uma região para o seu trabalho.
Para verificar se a tarefa está na sua rede VPC, execute o seguinte comando:
gcloud run jobs describe JOB_NAME \ --region=REGION
Substituir:
JOB_NAME
com o nome do seu trabalho.REGION
com a região do seu trabalho que especificou no passo anterior.
A saída deve conter o nome da sua rede e sub-rede, por exemplo:
VPC network: Network: default Subnet: default
Já pode executar a tarefa do Cloud Run e enviar pedidos da tarefa para qualquer recurso na rede da VPC, conforme permitido pelas regras de firewall.
YAML
Se estiver a criar uma nova tarefa, ignore este passo. Se estiver a atualizar uma tarefa existente, transfira a respetiva configuração YAML:
gcloud run jobs describe JOB_NAME --format export > job.yaml
Atualize os seguintes atributos:
apiVersion: run.googleapis.com/v1 kind: Job metadata: name: JOB_NAME labels: cloud.googleapis.com/location: REGION spec: template: metadata: annotations: run.googleapis.com/network-interfaces: '[{"network":"NETWORK","subnetwork":"SUBNET","tags":"NETWORK_TAG_NAMES"}]' run.googleapis.com/vpc-access-egress: EGRESS_SETTING spec: containers: - image: IMAGE
Substituir:
- JOB_NAME com o nome da tarefa do Cloud Run. Os nomes das tarefas têm de ter 49 carateres ou menos e têm de ser exclusivos por região e projeto.
- REGION com a região da sua tarefa do Cloud Run, que tem de corresponder à região da sua sub-rede.
- Opcional: NETWORK com o nome da sua rede de VPC. Especifique uma rede de VPC ou uma sub-rede, ou ambas. Se especificar apenas uma rede, a sub-rede usa o mesmo nome que a rede.
- Opcional: SUBNET com o nome da sua sub-rede. Especifique uma rede de VPC ou uma sub-rede, ou ambas. Se especificar apenas uma rede, a sub-rede usa o mesmo nome que a rede. Pode implementar ou executar vários serviços, tarefas ou conjuntos de trabalhadores na mesma sub-rede.
- Opcional: NETWORK_TAG_NAMES com os nomes das
etiquetas de rede
que quer associar a uma tarefa. Para trabalhos, as etiquetas de rede são especificadas ao nível da execução. Cada execução de tarefa pode ter etiquetas de rede diferentes, como
network-tag-2
. - EGRESS_SETTING com um
valor de definição de saída:
all-traffic
: envia todo o tráfego de saída através da rede VPC.private-ranges-only
: envia apenas tráfego para endereços internos através da rede VPC.
- IMAGE com o URL da imagem do contentor do trabalho.
Crie ou atualize a tarefa através do seguinte comando:
gcloud run jobs replace job.yaml
Implemente um grupo de trabalhadores
A saída direta da VPC permite que o seu conjunto de trabalhadores do Cloud Run envie tráfego para uma rede VPC sem um conetor do Acesso a VPC sem servidor. Os custos de rede são reduzidos a zero, tal como o próprio conjunto de trabalhadores. Também pode adicionar etiquetas de rede diretamente nas revisões do conjunto de trabalhadores do Cloud Run para uma segurança de rede mais detalhada, como a aplicação de regras de firewall da VPC.
Pode configurar a saída da VPC direta com um conjunto de trabalhadores através da CLI do Google Cloud.
gcloud
Para implementar um conjunto de trabalhadores do Cloud Run sem um conetor a partir da CLI do Google Cloud:
Atualize os componentes do
gcloud
para a versão mais recente:gcloud components update
Certifique-se de que a API Compute Engine está ativada para o seu projeto:
gcloud services enable compute.googleapis.com
Implemente o seu conjunto de trabalhadores do Cloud Run com o seguinte comando:
gcloud beta run worker-pools deploy WORKER_POOL \ --image=IMAGE_URL \ --network=NETWORK \ --subnet=SUBNET \ --network-tags=NETWORK_TAG_NAMES \ --vpc-egress=EGRESS_SETTING \ --region=REGION
Substituir:
- WORKER_POOL com o nome do seu conjunto de trabalhadores do Cloud Run. Os nomes dos conjuntos de trabalhadores têm de ter 49 carateres ou menos, usar um nome exclusivo por região e projeto, e não podem partilhar o mesmo nome que um nome de serviço existente do seu projeto. Se o grupo de trabalhadores ainda não existir, este comando cria o grupo de trabalhadores durante a implementação. Pode omitir totalmente este parâmetro, mas é-lhe pedido o nome do conjunto de trabalhadores se o omitir.
- IMAGE_URL: uma referência à imagem do contentor que contém o conjunto de trabalhadores, como
us-docker.pkg.dev/cloudrun/container/worker-pool:latest
- Opcional:NETWORK com o nome da sua rede de VPC. Especifique uma rede de VPC ou uma sub-rede, ou ambas. Se especificar apenas uma rede, a sub-rede usa o mesmo nome que a rede.
- Opcional: SUBNET com o nome da sua sub-rede. Especifique uma rede de VPC ou uma sub-rede, ou ambas. Se especificar apenas uma rede, a sub-rede usa o mesmo nome que a rede. Pode implementar ou executar vários serviços, tarefas ou conjuntos de trabalhadores na mesma sub-rede.
- Opcional: NETWORK_TAG_NAMES com os nomes separados por vírgulas
das etiquetas de rede
que quer associar a um grupo de trabalhadores. Para serviços, as etiquetas de rede são especificadas ao nível da revisão. Cada revisão do conjunto de trabalhadores pode ter
etiquetas de rede diferentes, como
network-tag-2
. - EGRESS_SETTING com um
valor de definição de saída:
all-traffic
: envia todo o tráfego de saída através da rede VPC.private-ranges-only
: envia apenas tráfego para endereços internos através da rede VPC.
- REGION com uma região para o seu grupo de trabalhadores.
Para verificar se o seu worker pool está na sua rede VPC, execute o seguinte comando:
gcloud beta run worker-pools describe WORKER_POOL \ --region=REGION
Substituir:
WORKER_POOL
com o nome do seu conjunto de trabalhadores.REGION
com a região do seu conjunto de trabalhadores que especificou no passo anterior.
O resultado deve conter o nome da sua rede, sub-rede e definição de saída, por exemplo:
VPC access: Network: default Subnet: subnet Egress: private-ranges-only
Já pode enviar pedidos do seu conjunto de trabalhadores do Cloud Run para qualquer recurso na rede VPC, conforme permitido pelas regras da firewall.
Configure serviços e tarefas de pilha dupla
Para adicionar uma sub-rede de pilha dupla com um intervalo IPv6 interno num serviço ou numa tarefa do Cloud Run, consulte o artigo Configure serviços e tarefas de pilha dupla.
Restrinja o acesso com regras de firewall
Restrinja o acesso aos recursos numa rede VPC através de regras de firewall de VPC. Adicione estas restrições através de uma das seguintes estratégias:
- Crie uma regra de firewall de entrada que faça referência ao seu serviço ou tarefa através do intervalo de IPs da sub-rede.
Crie uma regra de firewall de saída que se refira ao seu serviço ou trabalho.
Na regra de firewall de saída, consulte o seu serviço ou tarefa através da identidade do serviço da conta de serviço associada, do intervalo de IP da sub-rede ou das etiquetas de rede associadas.
Etiquetas de rede para saída
Adicione uma camada adicional de segurança de rede através de etiquetas de rede nas regras de firewall de saída.
Consola
Para associar etiquetas de rede a um serviço ou a um trabalho:
Na Google Cloud consola, aceda à página Cloud Run.
Clique no serviço ou na tarefa que quer associar a etiquetas de rede e, de seguida, clique em Editar e implementar nova revisão para serviços ou Editar para tarefas.
Clique no separador Rede para serviços ou no separador Ligações para tarefas.
Certifique-se de que selecionou Ligar a uma VPC para tráfego de saída e Enviar tráfego diretamente para uma VPC.
No campo Sub-rede, selecione a sub-rede a partir da qual o seu serviço recebe endereços IP. Pode implementar ou executar vários serviços ou tarefas na mesma sub-rede.
No campo Etiquetas de rede, introduza os nomes das etiquetas de rede que quer associar ao seu serviço ou trabalho.
Clique em Implementar ou Atualizar.
Para serviços, cada revisão de serviço pode ter um conjunto diferente de etiquetas de rede, uma vez que as etiquetas de rede são especificadas ao nível da revisão. Para tarefas, uma execução de tarefa tem as mesmas etiquetas de rede que a tarefa tinha quando a execução da tarefa foi criada.
gcloud
Para associar etiquetas de rede
a um serviço ou uma tarefa, use o comando gcloud run deploy
:
gcloud run deploy SERVICE_JOB_NAME \ --image=IMAGE_URL \ --network=NETWORK \ --subnet=SUBNET \ --network-tags=NETWORK_TAG_NAMES \ --region=REGION
Substitua o seguinte:
- SERVICE_JOB_NAME com o nome do seu serviço ou trabalho.
- IMAGE_URL com o URL da imagem do serviço ou da tarefa.
- NETWORK com o nome da sua rede VPC.
- SUBNET com o nome da sua sub-rede. Especifique uma rede de VPC ou uma sub-rede, ou ambas. Se especificar apenas uma rede, a sub-rede usa o mesmo nome que a rede. Pode implementar ou executar vários serviços, tarefas ou conjuntos de trabalhadores na mesma sub-rede.
- NETWORK_TAG_NAMES com o nome da etiqueta de rede ou uma lista de etiquetas de rede separada por vírgulas.
- REGION com o nome da sua região.
Para serviços, cada revisão de serviço pode ter um conjunto diferente de etiquetas de rede, uma vez que as etiquetas de rede são especificadas ao nível da revisão. Para tarefas, uma execução de tarefa tem as mesmas etiquetas de rede que a tarefa tinha quando a execução da tarefa foi criada.
Desassocie um recurso do Cloud Run
Consoante o recurso do Cloud Run que tiver, consulte as instruções numa das seguintes secções:
Desassocie um serviço
Consola
Para remover o seu serviço da rede VPC:
Clique no serviço que quer remover e, de seguida, clique em Editar e implementar nova revisão.
Clique no separador Rede.
Desmarque a opção Estabelecer ligação a uma VPC para tráfego de saída.
Clique em Implementar.
Para verificar se o seu serviço já não está na rede VPC, clique no separador Rede. A rede e a sub-rede já não são apresentadas no cartão VPC.
Para remover apenas as etiquetas de rede e manter o serviço ligado à rede VPC:
Clique no serviço que contém as etiquetas de rede que quer remover e, de seguida, clique em Editar e implementar nova revisão.
Clique no separador Rede.
Limpe os nomes das etiquetas de rede que já não quer associar ao seu serviço.
Clique em Implementar.
gcloud
Para remover o seu serviço da rede VPC, execute o seguinte comando:
gcloud run services update SERVICE_NAME --region=REGION \ --clear-network
Para remover apenas as etiquetas de rede e manter o serviço ligado à rede VPC, execute o seguinte comando:
gcloud run services update SERVICE_NAME --region=REGION \ --clear-network-tags
Substitua o seguinte:
- SERVICE_NAME: o nome do seu serviço do Cloud Run.
- REGION: a região do seu serviço do Cloud Run.
YAML
Para remover o seu serviço da rede VPC:
Transfira a configuração YAML do serviço:
gcloud run services describe SERVICE_NAME --format export > service.yaml
Remova o seguinte conteúdo do seu ficheiro
service.yaml
:run.googleapis.com/network-interfaces: '[{"network":"NETWORK","subnetwork":"SUBNET","tags":"NETWORK_TAG_NAMES"}]'
Onde
- NETWORK: o nome da sua rede VPC.
- SUBNET: o nome da sua sub-rede.
- Opcional: NETWORK_TAG_NAMES: os nomes das etiquetas de rede se as tiver associado a um serviço.
Implemente a revisão do serviço executando o seguinte comando:
gcloud run services replace service.yaml
Para remover apenas as etiquetas de rede e manter o serviço ligado à rede VPC:
Transfira a configuração YAML do serviço:
gcloud run services describe SERVICE_NAME --format export > service.yaml
Remova a variável
tags
do conteúdo no ficheiroservice.yaml
, deixando as variáveisnetwork
esubnetwork
no lugar, conforme mostrado no exemplo seguinte:run.googleapis.com/network-interfaces: '[{"network":"NETWORK","subnetwork":"SUBNET"}]'
Onde
- NETWORK: o nome da sua rede VPC.
- SUBNET: o nome da sua sub-rede.
Implemente a revisão do serviço executando o seguinte comando:
gcloud run services replace service.yaml
Desassocie uma tarefa
Consola
Para remover a tarefa da rede VPC:
Clique no trabalho que quer remover e, de seguida, clique em Editar e implementar nova revisão.
Clique no separador Ligações.
Desmarque a opção Estabelecer ligação a uma VPC para tráfego de saída.
Clique em Atualizar.
Para verificar se a tarefa já não está na sua rede VPC, clique no separador Configuração. A rede e a sub-rede já não são apresentadas no cartão VPC.
Para remover apenas as etiquetas de rede e manter a tarefa associada à rede VPC:
Clique na tarefa que contém as etiquetas de rede que quer remover e, de seguida, clique em Editar e implementar nova revisão.
Clique no separador Ligações.
Limpe os nomes das etiquetas de rede que já não quer associar ao seu trabalho.
Clique em Atualizar.
gcloud
Para remover a tarefa da rede VPC, execute o seguinte comando:
gcloud run jobs update JOB_NAME --region=REGION \ --clear-network
Para remover apenas as etiquetas de rede e manter a tarefa associada à rede VPC, execute o seguinte comando:
gcloud run jobs update JOB_NAME --region=REGION \ --clear-network-tags
Substitua o seguinte:
- JOB_NAME: o nome da sua tarefa do Cloud Run.
- REGION: a região da sua tarefa do Cloud Run.
YAML
Para remover a tarefa da rede VPC:
Transfira a configuração YAML da tarefa:
gcloud run jobs describe JOB_NAME --format export > job.yaml
Remova o seguinte conteúdo do seu ficheiro
job.yaml
:run.googleapis.com/network-interfaces: '[{"network":"NETWORK","subnetwork":"SUBNET","tags":"NETWORK_TAG_NAMES"}]'
Substitua o seguinte:
- NETWORK: o nome da sua rede VPC.
- SUBNET: o nome da sua sub-rede.
- Opcional: NETWORK_TAG_NAMES com os nomes das etiquetas de rede, se as tiver associado a uma tarefa.
Atualize a tarefa executando o seguinte comando:
gcloud run jobs replace job.yaml
Para remover apenas as etiquetas de rede e manter a tarefa associada à rede VPC:
Transfira a configuração YAML da tarefa:
gcloud run jobs describe JOB_NAME --format export > job.yaml
Remova a variável
tags
do conteúdo no ficheirojob.yaml
, deixando as variáveisnetwork
esubnetwork
no lugar, conforme mostrado no exemplo seguinte:run.googleapis.com/network-interfaces: '[{"network":"NETWORK","subnetwork":"SUBNET"}]'
Substitua o seguinte:
- NETWORK: o nome da sua rede VPC.
- SUBNET: o nome da sua sub-rede.
Atualize a tarefa executando o seguinte comando:
gcloud run jobs replace job.yaml
Desassocie um grupo de trabalhadores
gcloud
Para remover o seu conjunto de trabalhadores da rede VPC, execute o seguinte comando:
gcloud beta run worker-pools update WORKER_POOL --region=REGION \ --clear-network
Para remover apenas as etiquetas de rede e manter o conjunto de trabalhadores ligado à rede VPC, execute o seguinte comando:
gcloud beta run worker-pools update WORKER_POOL --region=REGION \ --clear-network-tags
Substitua o seguinte:
- WORKER_POOL: o nome do seu conjunto de trabalhadores do Cloud Run.
- REGION: a região do seu conjunto de trabalhadores do Cloud Run.
Resolução de problemas
Não é possível eliminar a sub-rede
Para eliminar uma sub-rede, tem de eliminar ou voltar a implementar todos os recursos que a usam. Se o Cloud Run estiver a usar uma sub-rede, desligue o serviço do Cloud Run ou a tarefa da rede VPC ou mova-o para uma sub-rede diferente antes de eliminar a sub-rede.
A sub-rede de saída da VPC direta fica sem endereços IPv4
Ocorre o seguinte erro quando tenta implementar:
Instance failed to start because of insufficient free IP addresses in the subnetwork SUBNET_ID when attempting to create an address in the subnetwork. Please consider moving to a subnetwork with more available IP addresses.
Se a sub-rede da rede VPC ficar sem endereços IPv4, é registada pelo Cloud Logging. Quando isto ocorre, o Cloud Run não pode iniciar mais instâncias de serviço nem tarefas de trabalho até ficarem disponíveis mais endereços IPv4.
Para resolver este problema, siga as estratégias de esgotamento de endereços IP.
Veja os endereços IP atribuídos
Para ver os endereços IP que o Cloud Run atribuiu, aceda à página Endereços IP na Google Cloud consola ou execute o seguinte comando na CLI do Google Cloud:
gcloud compute addresses list
Problemas com MTU personalizado
Se tiver problemas com uma MTU personalizada, certifique-se de que usa a definição de MTU predefinida para o Cloud Run.