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:
Subnet solo IPv4 (stack singolo), con solo intervalli di subnet IPv4
Subnet IPv4 e IPv6 (doppio stack), con intervalli di subnet IPv4 e IPv6
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
Nella console Google Cloud :
Abilita l'API Compute Engine:
Vai alla pagina Reti VPC:
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.
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.
Nella scheda Subnet, fai clic su Aggiungi subnet. Nel riquadro visualizzato:
- Fornisci un nome.
- Seleziona una Regione.
- Per Tipo di stack IP, seleziona IPv4 e IPv6 (stack doppio).
- Inserisci un intervallo IPv4. Questo è l'intervallo IPv4 principale per la subnet.
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.
Fai clic su Aggiungi.
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:
- Fai clic su Container, volumi, networking, sicurezza e seleziona la scheda Networking.
- Fai clic su Connettiti a un VPC per il traffico in uscita e poi su Invia il traffico direttamente a un VPC.
- Seleziona la rete che hai creato nel passaggio precedente.
- 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
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/48all'interno dell'intervallofd20::/20utilizzato da Google Cloud per gli intervalli di subnet IPv6 interni.gcloud compute networks create NETWORK \ --subnet-mode=custom \ --enable-ula-internal-ipv6
Sostituisci
NETWORKcon il nome della rete VPC che conterrà la nuova subnet.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
NETWORKcon il nome della rete VPC che conterrà la nuova subnet.Per creare una subnet a doppio stack con un intervallo IPv6, esegui il comando
subnets createutilizzando 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,internaloexternal.REGION: la Google Cloud regione in cui verrà creata la nuova subnet.
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
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
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.
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.
Aggiungi quanto segue al tuo file
main.tf:
(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