Le subnet a doppio stack consentono alle risorse App Engine di inviare traffico IPv4 e IPv6 a una rete VPC con traffico in uscita VPC diretto. Puoi modificare una subnet solo IPv4 (stack singolo) esistente in una subnet a doppio 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 (stack doppio), con intervalli di subnet IPv4 e IPv6
Limitazioni del doppio stack
Prima di modificare il tipo di stack su una risorsa App Engine esistente, tieni presente le seguenti limitazioni:
Il supporto dual-stack è disponibile solo con le subnet in una rete VPC in modalità personalizzata. Affinché il tipo di accesso interno sia disponibile 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 elevate, limitando la velocità con cui la tua applicazione può fare lo scale up.
NAT64 non è supportato.
Prima di iniziare
Assicurati che l'agente di servizio App Engine disponga del ruolo Amministratore IP pubblico Compute (roles/compute.publicIpAdmin) per utilizzare la subnet con IPv6 esterno.
Configurare una subnet a doppio stack
Le subnet a doppio stack hanno intervalli di indirizzi IPv4 e IPv6.
Per configurare una subnet a doppio stack, puoi utilizzare la Google Cloud console o il Google Cloud CLI:
Console
Vai alla Google Cloud console e 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 convertendo una rete 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 ne hai bisogno, verifica che sia assegnato un intervallo IPv6 interno alla rete.
Fai clic su Aggiungi.
gcloud
Per creare una rete in modalità personalizzata che supporti le subnet a doppio stack, esegui il comando
gcloud compute networks create.Per configurare gli intervalli IPv6 interni su qualsiasi subnet in questa rete, utilizza il flag
--enable-ula-internal-ipv6. Questa opzione assegna un prefisso ULA/48dall'intervallofd20::/20utilizzato per Google Cloud 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.
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 \ --switch-to-custom-subnet-mode \ --enable-ula-internal-ipv6
Sostituisci NETWORK con il nome della rete VPC che conterrà la nuova subnet.
Per creare una subnet a doppio stack con un intervallo IPv6, esegui il
subnets createcomando utilizzando le impostazioni a doppio 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 ulteriori informazioni, 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.
Aggiungere la subnet a doppio stack a una risorsa App Engine
Dopo aver creato una subnet a doppio stack, configura il servizio App Engine in modo che utilizzi la subnet:
Nel file
app.yaml, specifica la rete e la subnet nel campovpc_access:vpc_access: network_interface: network: NETWORK subnet: SUBNET vpc_egress: EGRESS_SETTING
Sostituisci quanto segue:
NETWORK: il nome della rete creata nel passaggio precedente.
SUBNET: il nome della subnet creata nel passaggio precedente.
(Facoltativo) EGRESS_SETTING: controlla come viene indirizzato il traffico in uscita. Questo campo supporta le seguenti impostazioni di configurazione:
all-traffic: tutte le richieste in uscita vengono indirizzate tramite la rete VPC.private-ranges-only(impostazione predefinita): solo il traffico verso gli indirizzi IP interni viene indirizzato tramite la rete VPC. Il traffico internet utilizza il percorso App Engine predefinito.
Esegui il deployment su App Engine eseguendo il comando seguente:
gcloud beta app deploy
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, vedi Modificare il tipo di stack di una subnet in doppio stack. Quindi, esegui il deployment del servizio App Engine sulla subnet a doppio stack.
Modificare una subnet da doppio stack a stack singolo
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. Quindi, esegui il deployment del servizio App Engine sulla subnet a doppio stack.
Verificare la rete e la subnet
Per verificare che la risorsa si trovi nella rete VPC, esegui il comando seguente:
gcloud beta app versions describe VERSION --service=SERVICE
Sostituisci quanto segue:
- VERSION: la versione di cui è stato eseguito il deployment del servizio
- SERVICE: il servizio di cui è stato eseguito il deployment
L'esempio di output seguente mostra la rete e la subnet:
vpcAccess:
networkInterfaces:
- network: projects/YOUR_PROJECT/global/networks/YOUR_NETWORK
subnet: projects/YOUR_PROJECT/regions/YOUR_REGION/subnetworks/YOUR_SUBNET
vpcEgress: ALL_TRAFFIC/PRIVATE_RANGES_ONLY