Este documento explica como atualizar a política de DNS interno para usar o DNS zonal em novos projetos. O DNS zonal melhora a confiabilidade do aplicativo isolando falhas nas zonas, evitando interrupções em serviços essenciais, como a criação de instâncias e a autocorreção.
Antes de começar
-
Configure a autenticação, caso ainda não tenha feito isso.
A autenticação é
o processo de verificação da sua identidade para acesso a serviços e APIs do Google Cloud .
Para executar códigos ou amostras de um ambiente de desenvolvimento local, autentique-se no
Compute Engine selecionando uma das seguintes opções:
Select the tab for how you plan to use the samples on this page:
Console
When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.
gcloud
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- Set a default region and zone.
-
Verifique a política de DNS global padrão:
Administrador de políticas da organização (
roles/orgpolicy.policyAdmin
) na pasta ou organização - Determine se uma pasta está pronta para migrar para o DNS zonal:
Navegador (
roles/browser
) na pasta ou na organização -
Defina uma restrição de política da organização:
orgpolicy.*
-
Determine se uma pasta está pronta para migrar para o DNS zonal:
-
resourcemanager.folders.get
-
resourcemanager.folders.list
-
resourcemanager.organizations.get
-
resourcemanager.projects.get
-
resourcemanager.projects.list
-
-
Verifique nomes de DNS globais e metadados de VM:
compute.projects.get
- Coletar uma lista de projetos e pastas: compile uma lista de todos os projetos e pastas associadas na sua organização.
- Identificar pastas para isenção: localize as pastas que contêm os projetos incompatíveis identificados na etapa 1. Essas pastas vão precisar ser temporariamente isentas da política de DNS zonal.
- Definir a política da organização: aplique a política de DNS zonal no nível da organização.
- Isentar pastas específicas: aplique isenções às pastas identificadas na Etapa 3. Isso permite que eles continuem usando o DNS global enquanto você resolve os projetos incompatíveis.
- Ambiente flexível do App Engine, Google Kubernetes Engine e Contêineres em execução no Compute Engine
- Cloud SQL, funções do Cloud Run e Batch
- Dataproc e Dataflow
A data de criação da organização:
- Criada após 6 de setembro de 2018: sua organização usa o DNS zonal por padrão. Você não precisa fazer mais nada.
- Criada antes de 6 de setembro de 2018: sua organização usa o DNS global por padrão. Considere migrar para o DNS zonal.
A existência e a aplicação de uma restrição de política da organização:
Mesmo que sua organização tenha sido criada antes de 6 de setembro de 2018, um administrador pode ter aplicado uma política para usar o DNS zonal em todos os novos projetos criados na organização. Para verificar se essa política existe, use o console do Google Cloud ou a CLI do Google Cloud.
Acesse a página IAM e administrador> Identidade e organização no console.
Verifique a data de inscrição da organização.
Se a organização foi criada antes de 6 de setembro de 2018, verifique se uma restrição da política da organização define o tipo de DNS padrão em todos os projetos recém-criados como DNS zonal.
- Acesse a página IAM e administrador>Políticas da organização no console do Google Cloud.
- No campo Filtro, digite
constraints/compute.setNewProjectDefaultToZonalDNSOnly
. - Se a restrição estiver configurada, clique no nome Define a configuração do DNS interno para novos projetos como "Somente DNS zonal".
- Na página Detalhes da política, verifique o Status.
- Se o status for Aplicado, o tipo de DNS interno padrão será DNS zonal para todos os novos projetos criados na organização.
- Caso contrário, o tipo de DNS padrão para o projeto ainda será determinado pelo horário de criação da organização.
- Se a restrição não tiver sido configurada para a organização, o tipo de DNS padrão do projeto será determinado pela data de criação da organização.
Verifique o valor dos metadados
creationTime
da organização.gcloud organizations describe ORGANIZATION_ID
Substitua ORGANIZATION_ID pelo número do ID ou nome de domínio da organização.
Se a organização foi criada antes de 6 de setembro de 2018, determine se uma restrição da política da organização está configurada para definir o tipo de DNS padrão em todos os projetos recém-criados como DNS zonal.
gcloud resource-manager org-policies list --organization=ORGANIZATION_ID \ --filter="constraints/compute"
Na saída, procure
constraints/compute.setNewProjectDefaultToZonalDNSOnly
.- Se a restrição estiver presente e
Status
forEnforced
, todos os novos projetos criados na organização vão usar o DNS zonal por padrão. - Se a restrição não estiver presente ou não for aplicada, o tipo de DNS padrão será determinado pela data de criação da organização, conforme descrito na primeira etapa.
- Se a restrição estiver presente e
- crie um conjunto de dados do BigQuery;
Exporte os metadados do recurso da sua organização para uma tabela do BigQuery.
- Verifique se a API Cloud Asset Inventory está ativada.
- Configure as permissões necessárias para usar a API Cloud Asset Inventory.
Use o seguinte comando da CLI gcloud para exportar o recurso
compute.googleapis.com/Project
:gcloud asset export \ --content-type resource \ --organization 'ORGANIZATION_ID' \ --bigquery-table 'projects/PROJECT_ID/datasets/DATASET_ID/tables/TABLE_NAME' \ --asset-types='compute.googleapis.com/Project' \ --output-bigquery-force
Substitua:
- ORGANIZATION_ID: o número do ID da organização
- PROJECT_ID: o ID do projeto;
- DATASET_ID: o nome do conjunto de dados do BigQuery.
- TABLE_NAME: a tabela para a qual você está exportando os metadados. Se a tabela não existir, o BigQuery vai criar a tabela.
Vá para a página BigQuery no console do Google Cloud.
Selecione
Criar uma nova consulta.Na área de texto do editor de consultas, insira a seguinte consulta do GoogleSQL e clique em
Executar.SELECT JSON_VALUE(SAFE.PARSE_JSON(resource.data).vmDnsSetting) AS vmDnsSetting, count(*) as project_count FROM PROJECT_ID.DATASET_ID.TABLE_NAME GROUP BY 1
Substitua:
- PROJECT_ID: o ID do projeto;
- DATASET_ID: o nome do conjunto de dados do BigQuery.
- TABLE_NAME: a tabela que contém os metadados exportados, da etapa 2.
Os projetos com o valor
ZONAL_ONLY
paravmDnsSetting
têm o DNS zonal configurado. Caso contrário, os projetos usam o DNS global por padrão.Opcional: para ter acesso a uma visualização detalhada de
vmDnsSetting
para cada projeto, insira a seguinte consulta do GoogleSQL e clique em Executar.SELECT SUBSTR(name,35) as project_id, JSON_VALUE(SAFE.PARSE_JSON(resource.data).vmDnsSetting) AS vmDnsSetting FROM PROJECT_ID.DATASET_ID.TABLE_NAME
- A pasta estará pronta se nenhum dos projetos tiver feito consultas incompatíveis com o DNS zonal nos últimos 30 dias.
- Se uma pasta não estiver pronta para migração, o script vai responder com os IDs do projeto na pasta que estão impedindo que ela esteja pronta para a migração. Os projetos nesta lista de resultados ainda não são compatíveis com DNS zonal e exigem mais ações.
- Consiga o ID da pasta. Se você não souber o ID da pasta, faça o seguinte:
- No console do Google Cloud, acesse a página Recursos gerenciados.
- Aplique o filtro
Name:FOLDER_NAME
para conseguir o ID da pasta.
Consultar a tabela do BigQuery com os dados
compute.Project assets
exportados.Para ver instruções sobre como criar a tabela do BigQuery, consulte Determinar quais projetos em uma pasta ou organização usam o DNS global.
Digite a seguinte consulta do GoogleSQL e clique em
Executar:SELECT SUBSTR(name,35) AS project_id, FROM PROJECT_ID.DATASET_ID.TABLE_NAME WHERE CONTAINS_SUBSTR(ancestors, 'FOLDER_NUMBER')
Substitua:
- PROJECT_ID: o ID do projeto;
- DATASET_ID: o nome do conjunto de dados do BigQuery.
- TABLE_NAME: a tabela que contém os metadados exportados.
- FOLDER_NUMBER: o número do ID da pasta.
Copie a lista de IDs de projetos e salve-a em um arquivo.
Execute o script
bash
a seguir. O script faz a iteração dos IDs do projeto no arquivo salvo para determinar se uma pasta está pronta para migração.- Para pastas e projetos com segurança para migração, notifique os proprietários do projeto que eles podem começar a migrar projetos prontos.
- No caso de pastas que contenham projetos que não podem ser migrados, instrua os proprietários de projetos a corrigir consultas incompatíveis.
- Faça login no console do Google Cloud como superadministrador do Google Workspace ou do Cloud Identity.
No console, acesse a página Políticas da organização.
Clique em Selecionar e escolha as pastas que você quer isentar da política da organização.
O console do Google Cloud mostra uma lista de restrições de políticas da organização para essa pasta em uma ou mais páginas.
Para encontrar a restrição da política da organização que aplica o DNS zonal:
- Clique em Filtrar.
- Selecionar {NOME}
- Defina o nome do filtro como Define a configuração do DNS interno para novos projetos como Somente DNS zonal.
Clique no nome da restrição da política da organização para abrir a página Detalhes da política.
Clique em Editar.
Na página Editar, selecione Personalizar.
Em Aplicação, selecione Desativada para desativar a aplicação da restrição. Isso significa que o tipo de DNS interno padrão para todos os projetos na pasta é determinado pela data de criação da organização.
Clique em Salvar.
Faça login no console do Google Cloud como superadministrador do Google Workspace ou do Cloud Identity.
No console, acesse a página Políticas da organização.
Selecione a pasta ou a organização que contém as políticas da organização que você quer visualizar. O console do Google Cloud exibe uma lista das restrições da política da organização disponíveis. A lista pode abranger várias páginas.
Para encontrar a política para aplicar DNS por zona, clique em Filtrar e selecione Nome. Em seguida, defina o nome do filtro como Define a configuração de DNS interno para novos projetos somente para DNS por zona.
Clique no nome da política para ver os detalhes dela.
A página de detalhes da política fornece informações sobre a restrição e como a restrição é aplicada no momento.
Por padrão, a aplicação é indefinida para uma pasta ou organização. No entanto, se uma pasta pai tiver uma aplicação definida, ela será herdada da pasta mãe mais próxima que tem uma aplicação definida. Para mais informações, consulte Noções básicas sobre a avaliação da hierarquia.
Para personalizar a política da organização, clique em Editar.
Na página de edição, selecione Personalizar.
Em Aplicação, selecione Ativada.
Isso define o tipo de DNS interno padrão para todos os novos projetos na organização como DNS zonal.
Clique em Salvar.
Desative a política da organização
constraints/compute.setNewProjectDefaultToZonalDNSOnly
no nível da organização ou da pasta. Para instruções sobre como modificar essa política, consulte Aplicar DNS zonal por padrão para novos projetos.Defina a aplicação de Define a configuração do DNS interno para novos projetos como Somente DNS zonal como Desativada.
Se você quiser voltar a usar o DNS global para toda a organização, verifique se nenhuma das pastas na organização está aplicando a política da organização
constraints/compute.setNewProjectDefaultToZonalDNSOnly
.Para verificar se o DNS global está configurado para seus projetos e instâncias, consulte Determinar quais projetos em uma pasta ou organização usam o DNS global.
- Todos os projetos que usam o DNS global precisam ser migrados separadamente. Para mais informações, consulte Atualizar seus projetos para usar o DNS zonal.
REST
Para usar as amostras da API REST nesta página em um ambiente de desenvolvimento local, use as credenciais fornecidas para gcloud CLI.
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
Para mais informações, consulte Autenticar para usar REST na documentação de autenticação do Google Cloud.
Funções exigidas
Para ter as permissões necessárias para conferir o uso de DNS interno em toda a organização e atualizar a política padrão, peça ao administrador para conceder a você os seguintes papéis do IAM:
Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.
Esses papéis predefinidos contêm as permissões necessárias para conferir o uso de DNS interno em toda a organização e atualizar a política padrão. Para conferir as permissões exatas necessárias, expanda a seção Permissões necessárias:
Permissões necessárias
As permissões a seguir são necessárias para conferir o uso de DNS interno em toda a organização e atualizar a política padrão:
Essas permissões também podem ser concedidas com funções personalizadas ou outros papéis predefinidos.
Visão geral da configuração
Quando você define uma política da organização para substituir o tipo de DNS interno padrão, os projetos recém-criados usam o DNS zonal por padrão. A política da organização não afeta os projetos atuais em que a API Compute Engine já está ativada. Para alternar projetos atuais para que usem DNS por zona, consulte Como alternar projetos atuais para o DNS zonal.
Recomendamos aplicar uma política de DNS zonal no nível da organização. Essa abordagem garante que todos os novos projetos criados na sua organização usem o DNS zonal, melhorando a confiabilidade e a resiliência. No entanto, talvez seja necessário isentar algumas pastas dessa política da organização. A isenção de pastas é necessária quando novos projetos nessas pastas dependem de projetos existentes que são incompatíveis com o DNS zonal.
O processo de aplicação de uma política de DNS zonal no nível da organização inclui as seguintes etapas:
Essa abordagem garante que novos projetos usem o DNS zonal para melhorar a confiabilidade, além de acomodar dependências atuais em projetos mais antigos que talvez não estejam prontos para a migração imediata.
Limitações
Ativar nomes de DNS zonais em toda a organização aplica as configurações de DNS zonais a instâncias em outros serviços, como:
Verifique se os aplicativos usam algum desses serviços e use a análise de consultas para identificar problemas de compatibilidade com o DNS zonal nas pastas e nos projetos associados a esses aplicativos.
Verificar se a organização usa o DNS global por padrão
A configuração de DNS padrão da sua organização depende de dois fatores:
Console
gcloud
Use os comandos
organizations describe
eresource-manager org-policies list
para determinar o tipo de DNS padrão de uma organização.Determinar quais projetos em uma pasta ou organização usam DNS global
Para determinar quais projetos estão usando o DNS global, recomendamos usar o BigQuery para criar uma tabela que liste os projetos relativos à organização e os metadados deles. Em seguida, use essa tabela para executar uma consulta
Determinar a prontidão para a migração de uma pasta
Esta etapa usa um script
bash
e a tabela do BigQuery criadas na seção anterior para determinar a prontidão da migração da pasta.Siga estas etapas:
#!/bin/bash inaccessible_projects=() unready_projects=() for project in $(cat ~/FILENAME | tr '\n' ' '); do echo -e "Checking project $project..." ERROR=`curl -s --request POST "https://monitoring.googleapis.com/v3/projects/$project/timeSeries:query" -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Accept: application/json" -H "Content-Type: application/json" --data '{"query":"fetch compute.googleapis.com/Location | metric '"'"'compute.googleapis.com/global_dns/request_count'"'"' | filter metric.zonal_dns_readiness = '"'"'zonal_dns_risky'"'"' | every 30d | within 30d"}' --compressed | jq --raw-output '.error'` if ! [[ "$ERROR" -eq "null" ]]; then inaccessible_projects+=($project) continue fi QUERY_COUNT=`curl -s --request POST "https://monitoring.googleapis.com/v3/projects/$project/timeSeries:query" -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Accept: application/json" -H "Content-Type: application/json" --data '{"query":"fetch compute.googleapis.com/Location | metric '"'"'compute.googleapis.com/global_dns/request_count'"'"' | filter metric.zonal_dns_readiness = '"'"'zonal_dns_risky'"'"' | every 30d | within 30d"}' --compressed | jq --raw-output '.timeSeriesData[0].pointData[0].values[0].int64Value'` if [[ "$QUERY_COUNT" -ne "null" ]] && [[ "$QUERY_COUNT" -ne "0" ]]; then unready_projects+=($project) fi done error_len=${#inaccessible_projects[@]} unready_len=${#unready_projects[@]} echo -e "$error_len projects were inaccessible" echo -e "$unready_len projects were not ready for migration" if [ $error_len -ne 0 ]; then echo "Unable to access the following projects:" for project in "${inaccessible_projects[@]}"; do echo "$project" done fi if [ $unready_len -ne 0 ]; then echo "The following projects are not ready for migration:" for project in "${unready_projects[@]}"; do echo "$project" done fi if (( $error_len + $unready_len > 0 )); then echo "This folder is NOT ready for gDNS -> zDNS migration." else echo "This folder is ready for gDNS -> zDNS migration." fi
Substitua FILENAME pelo nome do arquivo em que você salvou a lista de IDs do projeto.
Transmita os resultados da análise de prontidão para migração aos proprietários do projeto:
As pastas isentas não estão prontas para migrar para o DNS zonal
Para isentar uma pasta da política da organização, conclua as etapas a seguir para definir a opção de aplicação da política no nível da pasta como
Off
.Para mais informações sobre como personalizar as restrições da política da organização, consulte Como personalizar políticas para restrições booleanas na documentação do Resource Manager.
Aplicar DNS zonal por padrão para novos projetos
Siga os seguintes passos para definir a política da organização para uma pasta ou organização:
Para validar a alteração da política da organização, crie um novo projeto na pasta ou organização, depois crie e inicie uma instância de VM e verifique se a VM está ativada para DNS por zona.
Se o DNS global interno for necessário para resolver uma consulta de nome DNS integrada à carga de trabalho, é possível reverter essa alteração no nível da organização ou da pasta desativando a aplicação.
Reverter para o uso de DNS global em uma organização ou pasta
Para reverter uma organização ou pasta para o uso do DNS global, interrompa a aplicação da política organizacional para o DNS zonal. Siga as etapas a seguir.
A seguir
Exceto em caso de indicação contrária, o conteúdo desta página é licenciado de acordo com a Licença de atribuição 4.0 do Creative Commons, e as amostras de código são licenciadas de acordo com a Licença Apache 2.0. Para mais detalhes, consulte as políticas do site do Google Developers. Java é uma marca registrada da Oracle e/ou afiliadas.
Última atualização 2025-02-20 UTC.
-