Questo documento ti guida nella configurazione della risoluzione DNS per un nuovo dominio in Google Distributed Cloud (GDC) air-gapped tramite l'utilizzo di zone DNS. Utilizza una zona DNS per raggruppare un insieme di record DNS e controllare se questi record sono visibili al di fuori del tuo Virtual Private Cloud (VPC) in GDC.
Il pubblico di destinazione di questo documento è costituito da amministratori di piattaforme 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 pubblica o qualsiasi 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 interna, un database o un microservizio 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 utilizzando nomi di dominio interni senza esporre la loro esistenza o i loro indirizzi IP alla rete esterna. Ciò migliora la sicurezza e semplifica la rete interna.
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:
- Un progetto esistente. Per saperne di più, consulta Creare un progetto.
- I ruoli di identità e accesso necessari. Per gestire le zone DNS per il tuo progetto, chiedi all'amministratore IAM progetto di concederti il ruolo Amministratore progetto DNS gestito (
managed-dns-project-admin). - Per utilizzare la CLI gdcloud, assicurati di averla installata. Per saperne di più, consulta Installare la CLI gdcloud.
- Se utilizzi
kubectl, un file kubeconfig per il server API globale. Se non hai ancora generato questo file, consulta Accedere. Per saperne di più, consulta Server API globali e di zona.
Creare una zona DNS pubblica
Dopo aver creato una zona DNS pubblica, devi configurare il resolver DNS della rete per inoltrare le richieste ai server dei nomi appropriati.
Creare 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 gdcloud dns managed-zones create
comando:
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 zona DNS pubblica, ad esempioexample.com.DESCRIPTION: una descrizione della 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 di l'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 Accedere per maggiori dettagli.DNS_ZONE_NAME: il nome della zona DNS.PROJECT_NAMESPACE: lo spazio dei nomi del progetto.DOMAIN_NAME: il nome di dominio della zona DNS pubblica, ad esempioexample.com.DESCRIPTION: una descrizione della 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.
Configurare il resolver DNS
Per una zona DNS pubblica, devi configurare il resolver DNS nella tua rete per inoltrare le richieste DNS per quella zona DNS ai server dei nomi in GDC che ospitano la zona DNS.
Recupera i server dei nomi per la
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 Accedere per maggiori 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. In 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 abbia già la configurazione necessaria per inoltrare correttamente le richieste DNS per la zona DNS dell'infrastruttura GDCgdc1.staging.gpcdemolabs.com.
Creare 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
gdcloud dns managed-zones create
comando:
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 zona DNS privata, ad esempioexample.com.DESCRIPTION: una descrizione della 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 di l'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 cliente predefinito: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 Accedere per maggiori dettagli.DNS_ZONE_NAME: il nome della zona DNS.PROJECT_NAMESPACE: lo spazio dei nomi del progetto.DOMAIN_NAME: il nome di dominio della zona DNS privata, ad esempioexample.com.DESCRIPTION: una descrizione della 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.