Conexión a un clúster con acceso privado en Azure Cosmos DB for PostgreSQL

SE APLICA A: Azure Cosmos DB for PostgreSQL (con tecnología de la extensión de base de datos de Citus en PostgreSQL)

En este tutorial se crea una máquina virtual (VM) y un clúster de Azure Cosmos DB for PostgreSQL, y se establece el acceso privado entre ellos.

Prerrequisitos

Creación de una red virtual

En primer lugar, configure un grupo de recursos y una red virtual para almacenar el clúster y la VM.

az group create \
	--name link-demo \
	--location eastus

az network vnet create \
	--resource-group link-demo \
	--name link-demo-net \
	--address-prefix 10.0.0.0/16

az network nsg create \
	--resource-group link-demo \
	--name link-demo-nsg

az network vnet subnet create \
	--resource-group link-demo \
	--vnet-name link-demo-net \
	--name link-demo-subnet \
	--address-prefixes 10.0.1.0/24 \
	--network-security-group link-demo-nsg

Creación de una máquina virtual

Para la demostración, crearemos una VM que ejecuta Debian Linux y el cliente PostgreSQL psql.

# provision the VM

az vm create \
	--resource-group link-demo \
	--name link-demo-vm \
	--vnet-name link-demo-net \
	--subnet link-demo-subnet \
	--nsg link-demo-nsg \
	--public-ip-address link-demo-net-ip \
	--image Debian11 \
	--admin-username azureuser \
	--generate-ssh-keys

# install psql database client

az vm run-command invoke \
	--resource-group link-demo \
	--name link-demo-vm \
	--command-id RunShellScript \
	--scripts \
		"sudo touch /home/azureuser/.hushlogin" \
		"sudo DEBIAN_FRONTEND=noninteractive apt-get update" \
		"sudo DEBIAN_FRONTEND=noninteractive apt-get install -q -y postgresql-client"

Cree un clúster de Azure Cosmos DB for PostgreSQL en Azure Portal.

  1. Seleccione Crear un recurso en la esquina superior izquierda del portal.

  2. En la página Crear un recurso, seleccione Bases de datos y, luego, seleccione Azure Cosmos DB.

  3. En la página Selección de opción de API, en el mosaico de PostgreSQL, seleccione Crear.

  4. En la página Creación de un clúster de Azure Cosmos DB for PostgreSQL, rellene la siguiente información:

    • Grupo de recursos: seleccione Nuevo y escriba link-demo.

    • Nombre del clúster: escriba link-demo-sg.

      Nota

      El nombre del clúster debe ser único globalmente en Azure porque crea una entrada DNS. Si link-demo-sg no está disponible, escriba otro nombre y ajuste los pasos siguientes según sea necesario.

    • Ubicación: seleccione Este de EE. UU.

    • Contraseña: escriba y confirme una contraseña.

  5. Seleccione Siguiente: Redes.

  6. En la pestaña Redes, en Método de conectividad, seleccione Acceso privado.

  7. En la pantalla Crear punto de conexión privado, escriba o seleccione los valores siguientes:

    • Grupo de recursos: link-demo
    • Ubicación: (US) East US.
    • Nombre: link-demo-sg-c-pe1
    • Target sub resource (Subrecurso de destino) : coordinator
    • Red virtual: link-demo-net
    • Subred: link-demo-subnet
    • Integrar con la zona DNS privada: sí
  8. Seleccione Aceptar.

  9. Después de crear el punto de conexión privado, seleccione Revisar y crear y, luego, seleccione Crear para crear el clúster.

Acceso al clúster de forma privada desde la VM

El vínculo privado permite que la VM se conecte al clúster e impide que los hosts externos lo hagan. En este paso, comprobaremos que el cliente de la base de datos psql de nuestra VM puede comunicarse con el nodo de coordinación del clúster. En el código, reemplace {your_password} por la contraseña del clúster.

# replace {your_password} in the string with your actual password

PG_URI='host=c-link-demo-sg.12345678901234.postgres.cosmos.azure.com port=5432 dbname=citus user=citus password={your_password} sslmode=require'

# Attempt to connect to cluster with psql in the VM

az vm run-command invoke \
	--resource-group link-demo \
	--name link-demo-vm \
	--command-id RunShellScript \
	--scripts "psql '$PG_URI' -c 'SHOW citus.version;'" \
	--query 'value[0].message' \
	| xargs printf

Debería ver un número de versión para Citus en la salida. Si es así, psql pudo ejecutar el comando y el vínculo privado funcionó.

Limpieza de recursos

Ha visto cómo crear un vínculo privado entre una VM y un clúster. Ahora puede desaprovisionar los recursos.

Elimine el grupo de recursos y sus recursos se desaprovisionarán:

az group delete --resource-group link-demo

# press y to confirm

Pasos siguientes