Configura risorse dual-stack

Le subnet a doppio stack consentono alle risorse Cloud Run di inviare traffico IPv4 e IPv6 a una rete VPC con uscita VPC diretto. Puoi modificare una subnet solo IPv4 (stack singolo) esistente in una subnet dual-stack.

Tipi di subnet

Le reti VPC supportano i seguenti tipi di subnet Compute Engine:

Limitazioni del doppio stack

Prima di modificare il tipo di stack su una risorsa Cloud Run esistente, tieni presente le seguenti limitazioni:

  • Il supporto del doppio stack è disponibile solo con le subnet in una rete VPC in modalità personalizzata. Per rendere disponibile il tipo di accesso interno per le subnet a doppio stack, è necessario abilitare l'intervallo IPv6 interno della rete VPC. Configura o converti la rete VPC in modalità personalizzata.

  • Rispetto alle subnet solo IPv4, le subnet a doppio stack potrebbero riscontrare latenze di avvio a freddo più elevate, limitando la velocità con cui la tua applicazione può scalare.

  • NAT64 non è supportato.

Prima di iniziare

Assicurati che l'agente di servizio Cloud Run disponga del ruolo Amministratore IP pubblico Compute (roles/compute.publicIpAdmin) per utilizzare la subnet con IPv6 esterno.

Aggiungi una subnet dual-stack a una risorsa

Le subnet a doppio stack hanno intervalli di indirizzi sia IPv4 che IPv6.

Per aggiungere una subnet dual-stack a una risorsa Cloud Run:

Console

  1. Nella console Google Cloud :

    1. Abilita l'API Compute Engine:

      Abilita l'API Compute Engine

    2. Vai alla pagina Reti VPC:

      Vai a Reti VPC

  2. Fai clic su Crea rete VPC se stai creando una nuova rete in modalità personalizzata. Se utilizzi una rete VPC esistente, fai clic sul nome della rete VPC per visualizzare la pagina Dettagli rete VPC.

  3. Se stai creando una nuova rete o convertendone una esistente, inserisci il nome e assicurati che la modalità di creazione della subnet sia impostata su Personalizzata, quindi seleziona Configura un intervallo IPv6 interno ULA per questa rete VPC.

  4. Nella scheda Subnet, fai clic su Aggiungi subnet. Nel riquadro visualizzato:

    1. Fornisci un nome.
    2. Seleziona una Regione.
    3. Per Tipo di stack IP, seleziona IPv4 e IPv6 (stack doppio).
    4. Inserisci un intervallo IPv4. Questo è l'intervallo IPv4 principale per la subnet.
    5. Seleziona il tipo di accesso IPv6.

      Se l'opzione Interno non è disponibile e ti serve, verifica che alla rete sia assegnato un intervallo IPv6 interno.

    6. Fai clic su Aggiungi.

  5. Esegui il deployment di un servizio Cloud Run, esegui un job o esegui il deployment di un pool di worker nella subnet dual-stack che hai creato. Man mano che inserisci i dettagli della risorsa necessari, seleziona il nuovo intervallo di indirizzi IPv6 seguendo questi passaggi:

    1. Fai clic su Container, volumi, networking, sicurezza e seleziona la scheda Networking.
    2. Fai clic su Connettiti a un VPC per il traffico in uscita e poi su Invia il traffico direttamente a un VPC.
    3. Seleziona la rete che hai creato nel passaggio precedente.
    4. Fai clic sul campo Subnet per selezionare l'intervallo di indirizzi IPv6 appena creato.

    La risorsa viene sottoposta a provisioning automatico con il tipo di stack della subnet.

gcloud

  1. Per creare una rete in modalità personalizzata che supporti le subnet dual-stack, esegui il comando gcloud compute networks create.

    Per configurare gli intervalli IPv6 interni su qualsiasi subnet di questa rete, utilizza il flag --enable-ula-internal-ipv6. Questa opzione assegna un prefisso ULA /48 all'interno dell'intervallo fd20::/20 utilizzato da Google Cloud per gli intervalli di subnet IPv6 interni.

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

    Sostituisci NETWORK con il nome della rete VPC che conterrà la nuova subnet.

  2. Per convertire o aggiornare una rete in modalità personalizzata in modo che supporti le subnet a doppio stack, esegui il comando seguente:

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

    Sostituisci NETWORK con il nome della rete VPC che conterrà la nuova subnet.

  3. Per creare una subnet a doppio stack con un intervallo IPv6, esegui il comando subnets create utilizzando le impostazioni dual-stack:

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

    Sostituisci quanto segue:

    • SUBNET: un nome per la nuova subnet.
    • NETWORK: il nome della rete VPC che conterrà la nuova subnet.
    • PRIMARY_IPv4_RANGE: l'intervallo IPv4 principale per la nuova subnet, in notazione CIDR. Per saperne di più, vedi Intervalli di subnet IPv4.
    • IPV6_ACCESS_TYPE: il tipo di accesso IPv6 per la nuova subnet, internal o external.
    • REGION: la Google Cloud regione in cui verrà creata la nuova subnet.
  4. Esegui il deployment di un servizio Cloud Run, esegui un job o esegui il deployment di un pool di worker nella subnet dual-stack che hai creato. La risorsa viene sottoposta a provisioning automatico con il tipo di stack della subnet.

YAML

  1. Se stai creando un nuovo servizio, salta questo passaggio. Se stai aggiornando un servizio esistente, scarica la relativa configurazione YAML:

    gcloud run services describe SERVICE --format export > service.yaml
  2. Aggiorna i seguenti attributi:

    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

    Sostituisci:

    • SERVICE_NAME con il nome del tuo servizio Cloud Run. I nomi dei servizi devono contenere al massimo 49 caratteri e devono essere univoci per regione e progetto.
    • REGION con la regione del tuo servizio Cloud Run, che deve corrispondere alla regione della tua subnet.
    • NETWORK con il nome della tua rete VPC.
    • SUBNET con il nome della subnet. Puoi eseguire il deployment o l'esecuzione di più servizi, job o pool di worker nella stessa subnet.
    • (Facoltativo) NETWORK_TAG_NAMES con i nomi dei tag di rete che vuoi associare a un servizio. Per i servizi, i tag di rete vengono specificati a livello di revisione. Ogni revisione del servizio può avere tag di rete diversi, ad esempio network-tag-2.
    • EGRESS_SETTING con un valore di impostazione di uscita:
      • all-traffic: invia tutto il traffico in uscita tramite la rete VPC.
      • private-ranges-only: Invia solo il traffico agli indirizzi interni tramite la rete VPC.
    • IMAGE con l'URL dell'immagine container del servizio.

    Puoi anche specificare una configurazione più dettagliata, ad esempio variabili di ambiente o limiti di memoria.

  3. Crea o aggiorna il servizio utilizzando il seguente comando:

    gcloud run services replace service.yaml

Terraform

Per scoprire come applicare o rimuovere una configurazione Terraform, consulta Comandi Terraform di base.

  1. Aggiungi quanto segue al tuo file 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"]
          }
        }
      }
    }
    

(Facoltativo) Rendi pubblico il servizio se vuoi consentire l'accesso non autenticato al servizio.

Modificare una subnet da stack singolo a doppio stack

Per aggiungere un intervallo di subnet IPv6 a una subnet solo IPv4 esistente in una rete VPC in modalità personalizzata, consulta Modificare il tipo di stack di una subnet in doppio stack. Dopodiché, esegui il deployment del servizio Cloud Run, esegui il job o esegui il deployment del pool di worker nella subnet dual-stack.

Modificare una subnet da doppio stack a singolo stack

Per modificare la subnet a doppio stack di una risorsa in una subnet a stack singolo, vedi Modificare una subnet a doppio stack in solo IPv4. Dopodiché, esegui il deployment del servizio Cloud Run, esegui il job o esegui il deployment del pool di worker nella subnet dual-stack.

Verifica la rete e la subnet

Per verificare che la risorsa si trovi sulla rete VPC, esegui questo comando:

gcloud run services describe SERVICE_NAME --region=REGION

Sostituisci REGION con la regione Google Cloud in cui è stata creata la nuova subnet.

L'output di esempio seguente mostra la rete e la subnet:

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