Questo documento spiega come configurare la risoluzione DNS per un nuovo dominio in Google Distributed Cloud (GDC) con air gap tramite l'utilizzo di zone DNS. Utilizza una zona DNS per raggruppare un insieme di record DNS e controllare se questi record sono visibili all'esterno del tuo virtual private cloud (VPC) in GDC.
Il pubblico di destinazione di questo documento è costituito da amministratori della piattaforma e operatori di applicazioni responsabili della gestione della risoluzione DNS per la propria organizzazione.
Puoi creare zone DNS pubbliche o private nel tuo ambiente GDC per soddisfare i requisiti di visibilità e accesso dei tuoi servizi:
- Per i servizi che richiedono visibilità e accesso alla rete esterna: configura una zona DNS pubblica per consentire a utenti e sistemi esterni alla tua rete di accedere al tuo servizio. Se hai un sito web, un'API rivolta al pubblico o un servizio che deve essere raggiungibile dall'esterno del tuo ambiente GDC Cloud, hai bisogno di una zona DNS pubblica per mappare il tuo nome di dominio agli indirizzi IP appropriati.
- Per i servizi che richiedono un accesso sicuro e limitato ai sistemi interni: configura una zona DNS privata per nascondere il nome di dominio interno e limitare l'accesso ai servizi interni. Se hai un'applicazione, un database o un microservizio interno che deve comunicare con altri servizi interni utilizzando solo protocolli sicuri e indirizzi IP privati, hai bisogno di una zona DNS privata per mappare il tuo nome di dominio agli indirizzi IP appropriati. Una zona DNS privata garantisce che questi servizi possano trovarsi l'un l'altro utilizzando nomi di dominio interni senza esporre la loro esistenza o i loro indirizzi IP alla rete esterna. In questo modo, la sicurezza viene migliorata e il networking interno semplificato.
Per saperne di più sulla differenza tra zone DNS pubbliche e private, consulta Tipi di zone per Cloud DNS.
Prima di iniziare
Per configurare le zone DNS in GDC e aggiungere record, devi disporre di quanto segue:
- Un progetto esistente. Per saperne di più, consulta Crea un progetto.
- I ruoli di identità e accesso necessari. Per gestire le zone DNS per il tuo progetto, chiedi all'amministratore IAM del progetto di concederti il ruolo Managed DNS Project Admin (
managed-dns-project-admin). - Per utilizzare la CLI gdcloud, assicurati di averla installata. Per saperne di più, consulta Installa la CLI gdcloud.
- Se utilizzi
kubectl, un file kubeconfig per il server API globale. Se non hai ancora generato questo file, consulta Accedi. Per saperne di più, consulta Server API globali e di zona.
Crea una zona DNS pubblica
Dopo aver creato una zona DNS pubblica, devi configurare il resolver DNS della tua rete in modo che inoltri le richieste ai server dei nomi appropriati.
Crea la zona
Puoi creare una zona DNS pubblica utilizzando la CLI gdcloud o l'API Kubernetes.
gdcloud
Per creare una zona DNS pubblica, utilizza il comando gdcloud dns managed-zones create:
gdcloud dns managed-zones create DNS_ZONE_NAME \
--dns-name=DOMAIN_NAME \
--visibility=PUBLIC \
--description="DESCRIPTION" \
[--project=PROJECT_NAMESPACE] \
[--async]
Sostituisci quanto segue:
DNS_ZONE_NAME: il nome della zona DNS.DOMAIN_NAME: il nome di dominio della tua zona DNS pubblica, ad esempioexample.com.DESCRIPTION: una descrizione per la zona DNS. Ad esempio,Public DNS zone for example.com. Questo campo è facoltativo.PROJECT_NAMESPACE: lo spazio dei nomi del progetto. Questo flag è facoltativo se hai impostato un progetto predefinito a livello globale utilizzandogdcloud config set project.--async: specifica questo valore se vuoi che il comando venga restituito immediatamente, anziché attendere il completamento dell'operazione. Puoi utilizzaredescribeper controllare lo stato dell'operazione.
API
Utilizza l'API Kubernetes in GDC per creare una zona DNS pubblica:
Crea e applica una risorsa
ManagedDNSZoneper creare una zona DNS accessibile dall'esterno di GDC:kubectl --kubeconfig GLOBAL_API_SERVER apply -f - <<EOF apiVersion: networking.global.gdc.goog/v1 kind: ManagedDNSZone metadata: name: DNS_ZONE_NAME namespace: PROJECT_NAMESPACE spec: dnsName: DOMAIN_NAME description: DESCRIPTION visibility: PUBLIC EOFSostituisci quanto segue:
GLOBAL_API_SERVER: il percorso kubeconfig del server API globale. Per saperne di più, consulta Server API globali e di zona. Se non hai ancora generato un file kubeconfig per il server API, consulta Accedi per i dettagli.DNS_ZONE_NAME: il nome della zona DNS.PROJECT_NAMESPACE: lo spazio dei nomi del progetto.DOMAIN_NAME: il nome di dominio della tua zona DNS pubblica, ad esempioexample.com.DESCRIPTION: una descrizione per la zona DNS. Ad esempio,Public DNS zone for example.com. Questo campo è facoltativo.
Tieni presente che
visibilityè sensibile alle maiuscole e deve avere il valore esattoPUBLIC.
Configura il resolver DNS
Per una zona DNS pubblica, devi configurare il resolver DNS nella tua rete in modo che inoltri le richieste DNS per quella zona DNS ai server dei nomi in GDC che ospitano quella zona DNS.
Recupera i server dei nomi per il
ManagedDNSZoneche hai creato. Per questo passaggio devi utilizzarekubectl.kubectl --kubeconfig GLOBAL_API_SERVER get manageddnszones DNS_ZONE_NAME -n PROJECT_NAMESPACE -oyamlSostituisci quanto segue:
GLOBAL_API_SERVER: il percorso kubeconfig del server API globale. Per saperne di più, consulta Server API globali e di zona. Se non hai ancora generato un file kubeconfig per il server API, consulta Accedi per i dettagli.DNS_ZONE_NAME: il nome della zona DNS.PROJECT_NAMESPACE: lo spazio dei nomi del progetto. Questo flag è facoltativo se hai impostato un progetto predefinito a livello globale utilizzandogdcloud config set project.
I server dei nomi verranno elencati nell'output dello stato:
apiVersion: networking.global.gdc.goog/v1 kind: ManagedDNSZone metadata: name: DNS_ZONE_NAME namespace: PROJECT_NAMESPACE spec: dnsName: example.com description: "Public DNS zone for example.com" visibility: PUBLIC status: … nameServers: - ns.managed-dns-public.gdc1.staging.gpcdemolabs.comAggiorna il resolver DNS nella tua rete per inoltrare le richieste DNS per la nuova zona. Per questo esempio, il resolver DNS deve essere aggiornato per inoltrare le richieste per
example.comans.managed-dns-public.gdc1.staging.gpcdemolabs.com. Questa configurazione presuppone che il resolver disponga già della configurazione necessaria per inoltrare in modo appropriato le richieste DNS per la zona DNS dell'infrastruttura di GDCgdc1.staging.gpcdemolabs.com.
Crea una zona DNS privata
Puoi creare una zona DNS privata utilizzando la CLI gdcloud o l'API Kubernetes.
gdcloud
Per creare una zona DNS privata, utilizza il comando gdcloud dns managed-zones create:
gdcloud dns managed-zones create DNS_ZONE_NAME \
--dns-name=DOMAIN_NAME \
--visibility=PRIVATE \
--description="DESCRIPTION" \
[--project=PROJECT_NAMESPACE] \
[--async]
Sostituisci quanto segue:
DNS_ZONE_NAME: il nome della zona DNS.DOMAIN_NAME: il nome di dominio della tua zona DNS privata, ad esempioexample.com.DESCRIPTION: una descrizione per la zona DNS. Ad esempio,Private DNS zone for example.com. Questo campo è facoltativo.PROJECT_NAMESPACE: lo spazio dei nomi del progetto. Questo flag è facoltativo se hai impostato un progetto predefinito a livello globale utilizzandogdcloud config set project.--async: specifica questo valore se vuoi che il comando venga restituito immediatamente, anziché attendere il completamento dell'operazione. Puoi utilizzaredescribeper controllare lo stato dell'operazione.
API
Utilizza l'API Kubernetes per creare una zona DNS privata:
Crea e applica una risorsa
ManagedDNSZoneper creare una zona DNS accessibile solo dall'interno del VPC predefinito del cliente:kubectl --kubeconfig GLOBAL_API_SERVER apply -f - <<EOF apiVersion: networking.global.gdc.goog/v1 kind: ManagedDNSZone metadata: name: DNS_ZONE_NAME namespace: PROJECT_NAMESPACE spec: dnsName: DOMAIN_NAME description: DESCRIPTION visibility: PRIVATE EOFSostituisci quanto segue:
GLOBAL_API_SERVER: il percorso kubeconfig del server API globale. Per saperne di più, consulta Server API globali e di zona. Se non hai ancora generato un file kubeconfig per il server API, consulta Accedi per i dettagli.DNS_ZONE_NAME: il nome della zona DNS.PROJECT_NAMESPACE: lo spazio dei nomi del progetto.DOMAIN_NAME: il nome di dominio della tua zona DNS privata, ad esempioexample.com.DESCRIPTION: una descrizione per la zona DNS. Ad esempio,Private DNS zone for example.com. Questo campo è facoltativo.
Tieni presente che
visibilityè sensibile alle maiuscole e deve avere il valore esattoPRIVATE.