Configura vinculaciones de DNS
En esta página, se describe cómo configurar vinculaciones de DNS para las redes de VMware Engine estándar.
Cada nube privada implementa un servidor de Cloud DNS que se usa para la resolución de todos los dispositivos de administración. Puedes configurar este servidor como el servidor DNS para todas las cargas de trabajo de VMware configurando vinculaciones de DNS. Para ello, debes hacer lo siguiente:
- Obtén la dirección IP del servidor DNS de la nube privada
- Configura permisos de vinculación de DNS para permitir que un principal de usuario se vincule a la VPC de la intranet
- Configura el DNS para tus cargas de trabajo de VMware o el parámetro de configuración de DNS de DHCP del segmento de NSX
Antes de comenzar
Solo puedes configurar vinculaciones de DNS con la herramienta gcloud
o la API.
Requisitos de gcloud y la API
Para usar la herramienta de línea de comandos de gcloud
o la API para administrar tus recursos de VMware Engine, te recomendamos que configures las herramientas como se describe a continuación.
gcloud
Establece tu ID del proyecto predeterminado:
gcloud config set project PROJECT_ID
Configura una región y una zona predeterminadas:
gcloud config set compute/region REGION
gcloud config set compute/zone ZONE
Para obtener más información sobre la herramienta gcloud vmware
, consulta la documentación de referencia del SDK de Cloud.
API
En los ejemplos de la API de este conjunto de documentación, se usa la herramienta de línea de comandos de cURL
para consultar la API. Se requiere un token de acceso válido como parte de la solicitud de cURL
. Existen muchas formas de obtener un token de acceso válido. Los siguientes pasos usan la herramienta gcloud
para generar un token de acceso:
Accede a Google Cloud:
gcloud auth login
Genera el token de acceso y expórtalo a TOKEN:
export TOKEN=`gcloud auth print-access-token`
Verifica que TOKEN esté configurado correctamente:
echo $TOKEN
Ahora, usa el token de autorización en tus solicitudes a la API. Por ejemplo:
curl -X GET -H "Authorization: Bearer \"$TOKEN\"" -H "Content-Type: application/json; charset=utf-8" https://vmwareengine.googleapis.com/v1/projects/PROJECT_ID/locations
Python
Las muestras de código de Python en esta documentación usan la biblioteca de VMware Engine para comunicarse con la API. Para poder usar este enfoque, se debe instalar la biblioteca y configurar las Credenciales predeterminadas de la aplicación.
Descarga e instala la biblioteca de Python:
pip install google-cloud-vmwareengine
Configura la información de ADC ejecutando esos comandos en tu shell:
gcloud auth application-default login
O bien, usa un archivo de claves de la cuenta de servicio:
export GOOGLE_APPLICATION_CREDENTIALS="FILE_PATH"
Para obtener más información sobre la biblioteca, visita la página de referencia o consulta las muestras de código en GitHub.
Obtén la IP de un servidor DNS de carga de trabajo de nube privada
Console
Para obtener la dirección IP del servidor DNS de tu nube privada, sigue estos pasos.
En la consola de Google Cloud , ve a la página Nubes privadas.
Haz clic en Seleccionar un proyecto y, luego, selecciona la organización, la carpeta o el proyecto que contiene la nube privada a la que deseas conectarte.
Haz clic en el nombre de la nube privada.
En la página Summary de la nube privada, en Private Cloud DNS servers, haz clic en Copy para copiar la dirección IP del servidor DNS de la nube privada.
gcloud
Para obtener la dirección IP del servidor DNS de tu nube privada con Google Cloud CLI, usa el comando gcloud vmware private-clouds describe
:
gcloud vmware private-clouds describe PRIVATE_CLOUD_ID \ --project=PROJECT_ID \ --location=REGION
Reemplaza lo siguiente:
PRIVATE_CLOUD_ID
: Es el nombre de la nube privada para esta solicitud.PROJECT_ID
: Es el ID del proyecto de esta solicitud.REGION
: Es la región de la nube privada. Si se trata de una nube privada ampliada, especifica la zona de esta nube privada.
API
Para obtener la dirección IP del servidor DNS de tu nube privada con la API de VMware Engine, realiza una solicitud GET
:
curl -X GET -H "Authorization: Bearer TOKEN" -H "Content-Type: application/json; charset=utf-8" "https://vmwareengine.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/privateCloud/PRIVATE_CLOUD_ID"
Reemplaza lo siguiente:
PROJECT_ID
: Es el ID del proyecto de esta solicitud.REGION
: Es la región de la nube privada. Si se trata de una nube privada extendida, especifica la zona de esta nube privada.PRIVATE_CLOUD_ID
: Es el nombre de la nube privada para esta solicitud.
Configura los permisos de vinculación de DNS
Solo puedes configurar y administrar los permisos de vinculación de DNS con la herramienta gcloud
o directamente con la API de REST. No es posible configurar vinculaciones a través de la consola.
Otorga permiso de vinculación de DNS
Para que un usuario configure vinculaciones de DNS, debes otorgarle al principal del usuario permiso para vincularse a la VPC de la intranet. En este caso, el principal del usuario es la dirección de correo electrónico del usuario que vinculará la zona DNS privada con la VPC de la intranet.
gcloud
gcloud vmware dns-bind-permission grant \ --user=USER
Reemplaza USER por el correo electrónico del usuario que vinculará la zona de DNS privada con la VPC de la intranet. Por ejemplo, example1@gmail.com
API
Realiza una solicitud POST
al método dnsBindPermissions:grant
y proporciona la dirección de correo electrónico del usuario en el cuerpo de la solicitud.
curl -X POST -H "Authorization: Bearer TOKEN" -H "Content-Type: application/json; charset=utf-8" https://vmwareengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/dnsBindPermission:grant -d ' { "principal": { "user": "USER" } }'
Reemplaza lo siguiente:
PROJECT_ID
: Es el proyecto de esta solicitud.USER
: Es el correo electrónico del usuario al que le quieres revocar los permisos. Por ejemplo,example1@gmail.com
Revoca el permiso de vinculación de DNS
Revoca el permiso de vinculación de DNS que se le otorgó anteriormente al usuario.
gcloud
gcloud vmware dns-bind-permission revoke \ --user=USER
Reemplaza USER por el correo electrónico del usuario al que deseas revocar los permisos. Por ejemplo, example1@gmail.com
API
Realiza una solicitud POST
a dnsBindPermissions:revoke
y proporciona la dirección de correo electrónico del usuario en el cuerpo de la solicitud.
curl -X POST -H "Authorization: Bearer TOKEN" -H "Content-Type: application/json; charset=utf-8" https://vmwareengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/dnsBindPermission:revoke -d ' { "principal": { "user": "USER" } }'
Reemplaza lo siguiente:
PROJECT_ID
: Es el proyecto de esta solicitud.USER
: Es el correo electrónico del usuario al que le quieres revocar los permisos. Por ejemplo,example1@gmail.com
Describe el permiso de vinculación de DNS
Describe los permisos de vinculación de DNS para un proyecto y qué principal de usuario tiene acceso para configurar las vinculaciones de DNS.
gcloud
gcloud vmware dns-bind-permission describe
API
Realiza una solicitud GET
al recurso dnsBindPermissions
.
curl -X GET -H "Authorization: Bearer TOKEN" -H "Content-Type: application/json; charset=utf-8" https://vmwareengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/dnsBindPermission
Reemplaza PROJECT_ID
por el proyecto para esta solicitud.
Vincula la zona de DNS privada de la nube privada con la VPC de la intranet de la red de VMware Engine
Una vez que le otorgas a un principal de usuario los permisos para configurar vinculaciones de DNS, el usuario puede crear una vinculación entre la zona de DNS privado en Cloud DNS y la VPC de intranet de la red de VMware Engine. VMware Engine usa el intercambio de tráfico de DNS para facilitar la resolución de Cloud DNS.
Cómo encontrar la URL de la VPC de intranet
Necesitas la URL de la VPC de intranet de la red para crear la nueva vinculación. Puedes encontrar la VPC de intranet de la red de VMware Engine si enumeras los detalles de la red de VMware Engine.
Console
Para ubicar la URL de la VPC de la intranet con la consola de Google Cloud , sigue estos pasos:
En la consola de Google Cloud , ve a la página Redes de VMware Engine.
Haz clic en Seleccionar un proyecto y, luego, selecciona la organización, la carpeta o el proyecto que contiene la red de VMware Engine.
Busca la red de VMware Engine, haz clic en la opción Acción y selecciona Copiar URL de la red de VPC de intranet.
gcloud
gcloud vmware networks describe VMWARE_ENGINE_NETWORK
Reemplaza VMWARE_ENGINE_NETWORK
por la red que deseas describir. Como parte de la respuesta, gcloud
devuelve los detalles de la red que contiene la URL de la VPC de la intranet.
API
Realiza una solicitud GET
al recurso vmwareEngineNetworks
y proporciona el nombre de la red:
curl -X GET -H "Authorization: Bearer TOKEN" -H "Content-Type: application/json; charset=utf-8" https://vmwareengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/vmwarenEngineNetworks/NETWORK_ID
Reemplaza lo siguiente:
PROJECT_ID
: Es el proyecto de esta solicitud.NETWORK_ID
: Es la red que se debe describir.
Vinculación
El flujo de trabajo previsto, una vez que se configuran los permisos de vinculación, es agregar un intercambio de tráfico de DNS a la VPC de intranet de la red de VMware Engine en tu proceso estándar de administración de zonas de Cloud DNS para cada zona.
gcloud
gcloud dns managed-zones create peering-DOMAIN \ --dns-name="DOMAIN" \ --visibility="private" \ --networks="INTRANET_VPC_URL" \ --target-project="PROJECT_ID" \ --target-network="EXISTING_VPC" \ --description="DESCRIPTION"
Reemplaza lo siguiente:
DOMAIN
: Es el dominio que se extenderá, por ejemplo,zone1.example.com
.INTRANET_VPC_URL
: Es la URL de la VPC de intranet para la red de VMware Engine.EXISTING_VPC
: Es la URL de la red de VPC existente a la que ya está vinculada laDOMAIN
.PROJECT_ID
: Es el ID del proyecto de esta solicitud.
API
Realiza una solicitud PATCH
al recurso managedZones
y proporciona el nombre de la zona:
curl -X POST -H "Authorization: Bearer TOKEN" -H "Content-Type: application/json; charset=utf-8" https://dns.googleapis.com/v1/projects/PROJECT_ID/managedZones -d "{ "name": "peering-DOMAIN", "description": "", "dnsName": DOMAIN, "peeringConfig": { "targetNetwork": { "networkUrl": EXISTING_VPC } }, "privateVisibilityConfig": { "networks": [ { "networkUrl": INTRANET_VPC_URL } ] } }"
Reemplaza lo siguiente:
PROJECT_ID
: Es el ID del proyecto de esta solicitud.DOMAIN
: Es el dominio que se extenderá, por ejemplo,zone1.example.com
.INTRANET_VPC_URL
: Es la URL de la VPC de la intranet para la red de VMware Engine.EXISTING_VPC
: URL de la red de VPC existente a la que ya está vinculada la DOMAIN
Ejemplo de vinculaciones de DNS
A continuación, se incluyen algunos ejemplos de vinculaciones de DNS que puedes usar.
Autorizado
gcloud dns managed-zones create zone1 \ --dns-name="zone1.example.com." \ --visibility="private" \ --description="DESCRIPTION" \ --networks="EXISTING_VPC"
gcloud dns managed-zones create peering-zone1 \ --dns-name="zone1.example.com." \ --visibility="private" \ --networks="INTRANET_VPC_URL" \ --target-project="PROJECT_ID" \ --target-network="EXISTING_VPC" \ --description="DESCRIPTION"
Reenvío condicional
gcloud dns managed-zones create zone1 \ --description="DESCRIPTION" \ --dns-name="zone1.example.com." \ --visibility="private" \ --networks=EXISTING_VPC \ --forwarding-targets="DNS_SERVER_IP1","DNS_SERVER_IP2"
gcloud dns managed-zones create peering-zone1 \ --dns-name="zone1.example.com." \ --visibility="private" \ --networks="INTRANET_VPC_URL" \ --target-project="PROJECT_ID" \ --target-network="EXISTING_VPC" \ --description="DESCRIPTION"
Reenviar todo
gcloud dns managed-zones create forward-all \ --description="" --dns-name="." \ --visibility="private" \ --networks="EXISTING_VPC" \ --forwarding-targets="DNS_SERVER_IP1","DNS_SERVER_IP2"
gcloud dns managed-zones create peering-forward-all \ --dns-name="." \ --visibility="private" \ --networks="INTRANET_VPC_URL" \ --target-project="PROJECT_ID" \ --target-network="EXISTING_VPC" \ --description="DESCRIPTION"
API privada de Google
gcloud dns managed-zones create googleapis \ --dns-name="googleapis.com." \ --visibility="private" \ --description="Direct GCVE traffic to Private IPs for Google API Access" \ --networks="EXISTING_VPC"
gcloud dns managed-zones create peering-googleapis \ --dns-name="googleapis.com." \ --visibility="private" \ --networks="INTRANET_VPC_URL" \ --target-project="PROJECT_ID" \ --target-network="EXISTING_VPC" \ --description="DESCRIPTION"
gcloud dns record-sets create private.googleapis.com. \ --zone="googleapis" \ --type="A" \ --ttl="300" \ --rrdatas="199.36.153.8,199.36.153.9,199.36.153.10,199.36.153.11"
gcloud dns record-sets create *.googleapis.com. \ --zone="googleapis" \ --type="CNAME" \ --ttl="300" \ --rrdatas="private.googleapis.com."
API restringida de Google
gcloud dns managed-zones create googleapis \ --dns-name="googleapis.com." \ --visibility="private" \ --description="Direct GCVE traffic to Private IPs for Google API Access" \ --networks="EXISTING_VPC"
gcloud dns managed-zones create peering-googleapis \ --dns-name="googleapis.com." \ --visibility="private" \ --networks="INTRANET_VPC_URL" \ --target-project="PROJECT_ID" \ --target-network="EXISTING_VPC" \ --description="DESCRIPTION"
gcloud dns record-sets create restricted.googleapis.com. \ --zone="googleapis" \ --type="A" \ --ttl="300" \ --rrdatas="199.36.153.4, 199.36.153.5, 199.36.153.6, 199.36.153.7"
gcloud dns record-sets create *.googleapis.com. \ --zone="googleapis" \ --type="CNAME" \ --ttl="300" \ --rrdatas="restricted.googleapis.com."