Este documento explica como configurar a resolução de DNS para um novo domínio no Google Distributed Cloud (GDC) air-gapped através da utilização de zonas de DNS. Use uma zona de DNS para agrupar um conjunto de registos de DNS e controlar se esses registos são visíveis fora da sua nuvem privada virtual (VPC) no GDC.
O público-alvo pretendido para este documento são os administradores de plataformas e os operadores de aplicações responsáveis pela gestão da resolução de DNS da respetiva organização.
Pode criar zonas de DNS públicas ou privadas no seu ambiente do GDC para corresponder aos requisitos de visibilidade e acesso dos seus serviços:
- Para serviços que requerem visibilidade e acesso à rede externa: configure uma zona de DNS pública para permitir que os utilizadores e os sistemas fora da sua rede acedam ao seu serviço. Se tiver um Website, uma API pública ou qualquer serviço que precise de ser acessível a partir de fora do seu ambiente da nuvem do GDC, precisa de uma zona de DNS pública para mapear o nome do domínio para os endereços IP adequados.
- Para serviços que requerem acesso seguro e restrito a sistemas internos: configure uma zona de DNS privada para ocultar o nome do domínio interno e restringir o acesso aos seus serviços internos. Se tiver uma aplicação, uma base de dados ou um microsserviço interno que precise de comunicar com outros serviços internos através de protocolos seguros e endereços IP privados, precisa de uma zona de DNS privada para mapear o nome do domínio para os endereços IP adequados. Uma zona de DNS privada garante que estes serviços se podem encontrar através de nomes de domínios internos sem expor a respetiva existência ou endereços IP à rede externa. Isto melhora a segurança e simplifica a rede interna.
Para mais informações sobre a diferença entre zonas de DNS públicas e privadas, consulte Tipos de zonas para o Cloud DNS.
Antes de começar
Para configurar zonas de DNS no GDC e adicionar registos, tem de ter o seguinte:
- Um projeto existente. Para mais informações, consulte o artigo Crie um projeto.
- As autorizações de identidade e acesso necessárias. Para gerir as zonas de DNS do seu projeto, peça ao administrador de IAM do projeto para lhe atribuir a função Administrador do projeto de DNS gerido (
managed-dns-project-admin). - Para usar a CLI gdcloud, certifique-se de que a tem instalada. Para mais informações, consulte o artigo Instale a CLI gdcloud.
- Se estiver a usar o
kubectl, um ficheiro kubeconfig para o servidor da API global. Se ainda não gerou este ficheiro, consulte o artigo Inicie sessão. Para mais informações, consulte o artigo Servidores da API globais e zonais.
Crie uma zona de DNS pública
Depois de criar uma zona de DNS pública, tem de configurar o resolvedor de DNS da sua rede para encaminhar os pedidos para os servidores de nomes adequados.
Crie a zona
Pode criar uma zona de DNS pública através da CLI gdcloud ou da API Kubernetes.
gdcloud
Para criar uma zona de DNS pública, use o 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]
Substitua o seguinte:
DNS_ZONE_NAME: o nome da sua zona de DNS.DOMAIN_NAME: o nome do domínio da sua zona de DNS pública, comoexample.com.DESCRIPTION: uma descrição da sua zona de DNS. Por exemplo,Public DNS zone for example.com. Este campo é opcional.PROJECT_NAMESPACE: o espaço de nomes do seu projeto. Esta opção é opcional se tiver definido um projeto predefinido globalmente através do comandogdcloud config set project.--async: especifique esta opção se quiser que o comando seja devolvido imediatamente, em vez de aguardar a conclusão da operação. Pode usardescribepara verificar o estado de a operação.
API
Use a API Kubernetes no GDC para criar uma zona de DNS pública:
Crie e aplique um recurso
ManagedDNSZonepara criar uma zona de DNS acessível a partir de fora do 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 EOFSubstitua o seguinte:
GLOBAL_API_SERVER: o caminho kubeconfig do servidor da API global. Para mais informações, consulte o artigo Servidores da API globais e zonais. Se ainda não gerou um ficheiro kubeconfig para o servidor da API, consulte o artigo Inicie sessão para ver detalhes.DNS_ZONE_NAME: o nome da sua zona de DNS.PROJECT_NAMESPACE: o espaço de nomes do seu projeto.DOMAIN_NAME: o nome do domínio da sua zona de DNS pública, comoexample.com.DESCRIPTION: uma descrição da sua zona de DNS. Por exemplo,Public DNS zone for example.com. Este campo é opcional.
Tenha em atenção que
visibilitynão é sensível a maiúsculas e minúsculas e tem de ter o valor exatoPUBLIC.
Configure o resolvedor de DNS
Para uma zona de DNS pública, tem de configurar o resolvedor de DNS na sua rede para encaminhar os pedidos de DNS dessa zona de DNS para os servidores de nomes no GDC que alojam essa zona de DNS.
Obtenha os servidores de nomes da
ManagedDNSZoneque criou. Tem de usar okubectlpara este passo.kubectl --kubeconfig GLOBAL_API_SERVER get manageddnszones DNS_ZONE_NAME -n PROJECT_NAMESPACE -oyamlSubstitua o seguinte:
GLOBAL_API_SERVER: o caminho kubeconfig do servidor da API global. Para mais informações, consulte o artigo Servidores da API globais e zonais. Se ainda não gerou um ficheiro kubeconfig para o servidor da API, consulte o artigo Inicie sessão para ver detalhes.DNS_ZONE_NAME: o nome da sua zona de DNS.PROJECT_NAMESPACE: o espaço de nomes do seu projeto. Esta opção é opcional se tiver definido um projeto predefinido globalmente através do comandogdcloud config set project.
Os servidores de nomes são apresentados no resultado do estado:
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.comAtualize o resolvedor de DNS na sua rede para encaminhar os pedidos de DNS da nova zona. Para este exemplo, o resolvedor de DNS tem de ser atualizado para encaminhar os pedidos de
example.comparans.managed-dns-public.gdc1.staging.gpcdemolabs.com. Esta configuração pressupõe que o resolvedor já tem a configuração necessária para encaminhar adequadamente os pedidos de DNS da zona de DNS da infraestrutura do GDCgdc1.staging.gpcdemolabs.com.
Crie uma zona de DNS privada
Pode criar uma zona de DNS privada através da CLI gdcloud ou da API Kubernetes.
gdcloud
Para criar uma zona de DNS privada, use o
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]
Substitua o seguinte:
DNS_ZONE_NAME: o nome da sua zona de DNS.DOMAIN_NAME: o nome do domínio da sua zona de DNS privada, comoexample.com.DESCRIPTION: uma descrição da sua zona de DNS. Por exemplo,Private DNS zone for example.com. Este campo é opcional.PROJECT_NAMESPACE: o espaço de nomes do seu projeto. Esta opção é opcional se tiver definido um projeto predefinido globalmente através do comandogdcloud config set project.--async: especifique esta opção se quiser que o comando seja devolvido imediatamente, em vez de aguardar a conclusão da operação. Pode usardescribepara verificar o estado de a operação.
API
Use a API Kubernetes para criar uma zona de DNS privada:
Crie e aplique um recurso
ManagedDNSZonepara criar uma zona de DNS acessível apenas a partir da VPC do cliente predefinida: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 EOFSubstitua o seguinte:
GLOBAL_API_SERVER: o caminho kubeconfig do servidor da API global. Para mais informações, consulte o artigo Servidores da API globais e zonais. Se ainda não gerou um ficheiro kubeconfig para o servidor da API, consulte o artigo Inicie sessão para ver detalhes.DNS_ZONE_NAME: o nome da sua zona de DNS.PROJECT_NAMESPACE: o espaço de nomes do seu projeto.DOMAIN_NAME: o nome do domínio da sua zona de DNS privada, comoexample.com.DESCRIPTION: uma descrição da sua zona de DNS. Por exemplo,Private DNS zone for example.com. Este campo é opcional.
Tenha em atenção que
visibilitynão é sensível a maiúsculas e minúsculas e tem de ter o valor exatoPRIVATE.