Connettersi a un cluster con accesso privato in Azure Cosmos DB for PostgreSQL

SI APPLICA A: Azure Cosmos DB for PostgreSQL (con tecnologia basata su estensione di database Citus per PostgreSQL)

Questa esercitazione crea una macchina virtuale e un cluster Azure Cosmos DB for PostgreSQL e stabilisce un accesso privato tra di essi.

Prerequisiti

Creare una rete virtuale

Prima di tutto, configurare un gruppo di risorse e una rete virtuale per contenere il cluster e la macchina virtuale.

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

Creare una macchina virtuale

Per una dimostrazione, creare una macchina virtuale che esegue Debian Linux e il client 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"

Creare un cluster di Azure Cosmos DB for PostgreSQL nel portale di Azure.

  1. Nel portale di Azure selezionare Crea una risorsa nell'angolo superiore sinistro.

  2. Nella pagina Crea una risorsa selezionare Database e quindi Azure Cosmos DB.

  3. Nella pagina Seleziona opzione API, nel riquadro PostgreSQL, selezionare Crea.

  4. Nella pagina Creare un account Azure Cosmos DB for PostgreSQL, immettere le informazioni seguenti:

    • Gruppo di risorse: selezionare Nuovo, quindi immettere link-demo.

    • Nome cluster: immettere link-demo-sg.

      Nota

      Il nome del cluster deve essere univoco a livello globale in Azure perché crea una voce DNS. Se link-demo-sg non è disponibile, immettere un altro nome e modificare i passaggi seguenti di conseguenza.

    • Località: selezionare Stati Uniti orientali.

    • Password: immettere e quindi confermare una password.

  5. Al termine, selezionare Avanti: Rete.

  6. Nella scheda Rete selezionare Accesso privato in Metodo di connettività.

  7. Nella schermata Crea endpoint privato immettere o selezionare i valori seguenti:

    • Gruppo di risorse: link-demo
    • Posizione: (US) East US
    • Nome: link-demo-sg-c-pe1
    • Sottorisorsa di destinazione: coordinator
    • Rete virtuale: link-demo-net
    • Subnet: link-demo-subnet
    • Integrare con la zona DNS privato: Sì
  8. Seleziona OK.

  9. Dopo aver creato l'endpoint privato, selezionare Rivedi e crea e quindi selezionare Crea per creare il cluster.

Accedere al cluster privatamente dalla macchina virtuale

Il collegamento privato consente alla macchina virtuale di connettersi al cluster e impedisce l'esecuzione di host esterni. In questo passaggio si verifica che il client di database psql nella macchina virtuale possa comunicare con il nodo coordinatore del cluster.

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

Nota

Nella stringa di connessione sostituire {your_password} con la password del cluster o il token ID Microsoft Entra. Per ulteriori informazioni consultare Opzioni di autenticazione.

Nell'output dovrebbe essere visualizzato un numero di versione per Citus. In questo caso, psql è stato in grado di eseguire il comando e il collegamento privato ha funzionato.

Pulire le risorse

Si è visto come creare un collegamento privato tra una macchina virtuale e un cluster. È ora possibile effettuare il deprovisioning delle risorse.

Eliminare il gruppo di risorse: le risorse all'interno verranno sottoposte a deprovisioning:

az group delete --resource-group link-demo

# press y to confirm

Passaggi successivi