Configure recursos de pilha dupla

As sub-redes de pilha dupla permitem que os recursos do Cloud Run enviem tráfego IPv4 e IPv6 para uma rede VPC com saída da VPC direta. Pode alterar uma sub-rede apenas IPv4 (única pilha) para uma sub-rede de pilha dupla.

Tipos de sub-redes

As redes VPC suportam os seguintes tipos de sub-redes do Compute Engine:

Limitações de pilha dupla

Antes de alterar o tipo de pilha num recurso do Cloud Run existente, considere as seguintes limitações:

  • O suporte de pilha dupla só está disponível com sub-redes numa rede VPC de modo personalizado. Para ter o tipo de acesso interno disponível para sub-redes de pilha dupla, tem de ativar o intervalo IPv6 interno da rede VPC. Configure ou converta a rede VPC para o modo personalizado.

  • Em comparação com as sub-redes apenas IPv4, as sub-redes de pilha dupla podem sofrer latências de início a frio elevadas, o que limita a rapidez com que a sua aplicação pode ser dimensionada.

  • O NAT64 não é suportado.

Antes de começar

Certifique-se de que o agente de serviço do Cloud Run tem a função de administrador de IP público do Compute (roles/compute.publicIpAdmin) para usar a sub-rede com IPv6 externo.

Adicione uma sub-rede de pilha dupla a um recurso

As 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:

Consola

  1. Na Google Cloud consola:

    1. Ative a API Compute Engine:

      Ative a API Compute Engine

    2. Aceda à página Redes de VPC:

      Aceda a redes de VPC

  2. Clique em Criar rede VPC se estiver a criar uma nova rede de modo personalizado. Se estiver a usar uma rede de VPC existente, clique no nome da rede de VPC para mostrar a respetiva página de detalhes da rede de VPC.

  3. Se estiver a criar uma nova rede ou a converter uma existente, introduza o nome e certifique-se de que o Modo de criação de sub-redes está definido como Personalizado. Em seguida, selecione Configurar um intervalo IPv6 interno de ULA para esta rede VPC.

  4. No separador Sub-redes, clique em Adicionar sub-rede. No painel apresentado:

    1. Indique um Nome.
    2. Selecione uma região.
    3. Para o Tipo de pilha de IP, selecione IPv4 e IPv6 (pilha dupla).
    4. Introduza um intervalo de IPv4. Este é o intervalo IPv4 principal para a sub-rede.
    5. Selecione o tipo de acesso IPv6.

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

    6. Clique em Adicionar.

  5. Implemente um serviço do Cloud Run, execute uma tarefa ou implemente um conjunto de trabalhadores na sub-rede de pilha dupla que criou. À medida que introduz os detalhes dos recursos necessários, selecione o novo intervalo de endereços IPv6 seguindo estes passos:

    1. Clique em Recipientes, volumes, rede, segurança e selecione o separador Rede.
    2. Clique em Ligar a uma VPC para tráfego de saída e, de seguida, em Enviar tráfego diretamente para uma VPC.
    3. Selecione a rede que criou no passo anterior.
    4. Clique no campo Sub-rede para selecionar o intervalo de endereços IPv6 recém-criado.

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

gcloud

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

    Para configurar intervalos IPv6 internos em quaisquer sub-redes nesta rede, use a flag --enable-ula-internal-ipv6. Esta opção atribui um /48prefixo ULA a partir do intervalo fd20::/20usado pelo Google Cloud para intervalos de sub-redes 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 de modo personalizado para que suporte 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 com as definiçõ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 o seguinte:

    • 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 para a nova sub-rede, na notação CIDR. Para mais informações, consulte os intervalos de sub-redes IPv4.
    • IPV6_ACCESS_TYPE: o tipo de acesso IPv6 para a nova sub-rede, internal ou external.
    • REGION: a Google Cloud região na qual a nova sub-rede vai ser criada.
  4. Implemente um serviço do Cloud Run, execute uma tarefa ou implemente um conjunto de trabalhadores na sub-rede de pilha dupla que criou. O recurso é aprovisionado automaticamente com o tipo de pilha da sub-rede.

YAML

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

    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.
    • NETWORK com o nome da sua rede VPC.
    • SUBNET com o nome da sua sub-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.

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

  1. Adicione o seguinte ao ficheiro 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"]
          }
        }
      }
    }
    

Opcionalmente, torne o seu serviço público se quiser permitir o acesso não autenticado ao serviço.

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

Para adicionar um intervalo de sub-rede IPv6 a uma sub-rede apenas IPv4 existente numa rede VPC de modo personalizado, consulte o artigo Altere o tipo de pilha de uma sub-rede para pilha dupla. Em seguida, implemente o serviço do Cloud Run, execute a tarefa ou implemente o conjunto de trabalhadores na sub-rede de pilha dupla.

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

Para alterar a sub-rede de pilha dupla de um recurso para uma sub-rede de pilha única, consulte o artigo Altere uma sub-rede de pilha dupla apenas para IPv4. Em seguida, implemente o serviço do Cloud Run, execute a tarefa ou implemente o conjunto de trabalhadores na sub-rede de pilha dupla.

Valide a rede e a sub-rede

Para verificar se o seu 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 seguinte mostra a sua rede e sub-rede:

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