Configurar recursos de pilha dupla

As sub-redes de pilha dupla permitem que seus recursos do Cloud Run enviem tráfego IPv4 e IPv6 para uma rede VPC com saída de VPC direta. É possível mudar uma sub-rede somente IPv4 (pilha única) para uma sub-rede de pilha dupla.

Tipos de sub-rede

As redes VPC são compatíveis com os seguintes tipos de sub-rede do Compute Engine:

  • Sub-redes somente IPv4 (pilha única), com apenas intervalos de sub-rede IPv4

  • Sub-redes IPv4 e IPv6 (pilha dupla), com intervalos de sub-rede IPv4 e IPv6

Limitações de pilha dupla

Antes de mudar o tipo de pilha em um recurso do Cloud Run atual, considere as seguintes limitações:

  • O suporte a pilha dupla só está disponível com sub-redes em uma rede VPC de modo personalizado. Para que o tipo de acesso interno esteja disponível para sub-redes de pilha dupla, o intervalo IPv6 interno da rede VPC precisa estar ativado. Configure ou converta a rede VPC para o modo personalizado.

  • Em comparação com sub-redes somente IPv4, as de pilha dupla podem ter latências de inicialização a frio elevadas, limitando a rapidez com que seu aplicativo pode escalonar verticalmente.

  • NAT64 não é compatível.

Antes de começar

Verifique se o agente de serviço do Cloud Run tem o papel Administrador de IP público do Compute (roles/compute.publicIpAdmin) para usar a sub-rede com IPv6 externo.

Adicionar uma sub-rede de pilha dupla a um recurso

Sub-redes de pilha dupla têm intervalos de endereços IPv4 e IPv6.

Para adicionar uma sub-rede de pilha dupla a um recurso do Cloud Run, faça o seguinte:

Console

  1. No console do Google Cloud :

    1. Ative a API Compute Engine:

      Ativar a Compute Engine API

    2. Acesse a página Redes VPC:

      Acessar redes VPC

  2. Clique em Criar rede VPC se você estiver criando uma rede de modo personalizado. Se você estiver usando uma rede VPC, clique no nome dela para mostrar a página Detalhes da rede VPC.

  3. Se você estiver criando ou convertendo uma rede, insira o nome e verifique se o Modo de criação de sub-rede está definido como Personalizado. Em seguida, selecione Configurar um intervalo IPv6 interno ULA para esta rede VPC.

  4. Na guia Sub-redes, clique em Adicionar sub-rede. No painel que aparecerá, faça o seguinte:

    1. Forneça um Nome.
    2. Selecione uma Região.
    3. Em Tipo de pilha de IP, selecione IPv4 e IPv6 (pilha dupla).
    4. Digite um intervalo de IPv4. Esse é o intervalo IPv4 principal da sub-rede.
    5. Selecione o tipo de acesso IPv6.

      Se a opção Interno não estiver disponível e você precisar dela, verifique se um intervalo IPv6 interno foi atribuído na rede.

    6. Clique em Adicionar.

  5. Implante um serviço do Cloud Run, execute um job ou implante um pool de workers na sub-rede de pilha dupla que você criou. Ao inserir os detalhes do recurso necessário, selecione o novo intervalo de endereços IPv6 seguindo estas etapas:

    1. Clique em Contêineres, volumes, rede, segurança e selecione a guia Rede.
    2. Clique em Conectar a uma VPC para tráfego de saída e em Enviar tráfego diretamente para uma VPC.
    3. Selecione a rede que você criou na etapa anterior.
    4. Clique no campo Sub-rede para selecionar o intervalo de endereços IPv6 recém-criado.

    O recurso é provisionado automaticamente com o tipo de pilha da sub-rede.

gcloud

  1. Para criar uma rede de modo personalizado que ofereça suporte a sub-redes de pilha dupla, execute o comando gcloud compute networks create.

    Para configurar intervalos IPv6 internos em qualquer sub-rede nessa rede, use a sinalização --enable-ula-internal-ipv6. Essa opção atribui um prefixo ULA de /48 do intervalo fd20::/20 usado por Google Cloud para intervalos de sub-rede IPv6 internos.

    gcloud compute networks create NETWORK \
      --subnet-mode=custom \
      --enable-ula-internal-ipv6
    

    Substitua NETWORK pelo nome da rede VPC que vai conter a nova sub-rede.

  2. Para converter ou atualizar uma rede no modo personalizado para que ela seja compatível com sub-redes de pilha dupla, execute o seguinte comando:

    gcloud compute networks update NETWORK \
      --subnet-mode=custom \
      --enable-ula-internal-ipv6
    

    Substitua NETWORK pelo nome da rede VPC que vai conter a nova sub-rede.

  3. Para criar uma sub-rede de pilha dupla com um intervalo IPv6, execute o comando subnets create usando as configurações de pilha dupla:

    gcloud compute networks subnets create SUBNET \
      --network=NETWORK \
      --range=PRIMARY_IPv4_RANGE \
      --stack-type=IPV4_IPV6 \
      --ipv6-access-type=IPV6_ACCESS_TYPE \
      --region=REGION
    

    Substitua:

    • SUBNET: um nome para a nova sub-rede.
    • NETWORK: o nome da rede VPC que vai conter a nova sub-rede.
    • PRIMARY_IPv4_RANGE: o intervalo IPv4 principal da nova sub-rede, em notação CIDR. Saiba mais em Intervalos de sub-rede IPv4.
    • IPV6_ACCESS_TYPE: o tipo de acesso IPv6 da nova sub-rede, internal ou external.
    • REGION: a região do Google Cloud em que a nova sub-rede será criada.
  4. Implante um serviço do Cloud Run, execute um job ou implante um pool de workers na sub-rede de pilha dupla que você criou. O recurso é provisionado automaticamente com o tipo de pilha da sub-rede.

YAML

  1. Se você estiver criando um novo serviço, pule esta etapa. Se você estiver atualizando um serviço existente, faça o download da configuração YAML correspondente:

    gcloud run services describe SERVICE --format export > service.yaml
  2. 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

    Substitua:

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

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

  3. Crie ou atualize o serviço usando o seguinte comando:

    gcloud run services replace service.yaml

Terraform

Para saber como aplicar ou remover uma configuração do Terraform, consulte Comandos básicos do Terraform.

  1. Adicione a instrução a seguir ao seu arquivo main.tf:

    /**
     * Copyright 2024 Google LLC
     *
     * Licensed under the Apache License, Version 2.0 (the "License");
     * you may not use this file except in compliance with the License.
     * You may obtain a copy of the License at
     *
     *      http://www.apache.org/licenses/LICENSE-2.0
     *
     * Unless required by applicable law or agreed to in writing, software
     * distributed under the License is distributed on an "AS IS" BASIS,
     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     * See the License for the specific language governing permissions and
     * limitations under the License.
     */
    
    # Example configuration of a Cloud Run service with direct VPC
    
    resource "google_cloud_run_v2_service" "default" {
      name     = "cloudrun-service"
      location = "us-central1"
    
      deletion_protection = false # set to "true" in production
    
      template {
        containers {
          image = "us-docker.pkg.dev/cloudrun/container/hello"
        }
        vpc_access {
          network_interfaces {
            network    = "default"
            subnetwork = "default"
            tags       = ["tag1", "tag2", "tag3"]
          }
        }
      }
    }
    

Como opção, torne seu serviço público se você quiser permitir o acesso não autenticado ao serviço.

Mudar uma sub-rede de pilha única para pilha dupla

Para adicionar um intervalo de sub-rede IPv6 a uma sub-rede somente IPv4 em uma rede VPC de modo personalizado, consulte Mudar o tipo de pilha de uma sub-rede para pilha dupla. Em seguida, implante o serviço do Cloud Run, execute o job ou implante o pool de workers na sub-rede de pilha dupla.

Mudar uma sub-rede de pilha dupla para pilha única

Para mudar a sub-rede de pilha dupla de um recurso para uma sub-rede de pilha única, consulte Mudar uma sub-rede de pilha dupla para somente IPv4. Em seguida, implante o serviço do Cloud Run, execute o job ou implante o pool de workers na sub-rede de pilha dupla.

Verificar a rede e a sub-rede

Para verificar se o recurso está na rede VPC, execute o seguinte comando:

gcloud run services describe SERVICE_NAME --region=REGION

Substitua REGION pela região Google Cloud em que a nova sub-rede foi criada.

O exemplo de saída a seguir mostra sua rede e sub-rede:

  VPC Access:
    Network:        example-network
    Subnet:         example-subnet
    Egress:         private-ranges-only