Conectar-se a um cluster com acesso privado no Azure Cosmos DB for PostgreSQL

APLICA-SE A: Azure Cosmos DB for PostgreSQL (da plataforma da extensão de dados Citus para PostgreSQL)

Este tutorial cria uma VM (máquina virtual) e um cluster do Azure Cosmos DB for PostgreSQL e estabelece acesso privado entre eles.

Pré-requisitos

Criar uma rede virtual

Primeiro, configure um grupo de recursos e uma rede virtual para armazenar o cluster e a 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

Criar uma máquina virtual

Para demonstração, crie uma VM que execute o Debian Linux e o 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"

Crie o cluster do Azure Cosmos DB for PostgreSQL no portal do Azure.

  1. No portal, selecione Criar um recurso no canto superior esquerdo.

  2. Na página Criar recurso, selecione Bancos de dados, e, em seguida, Azure Cosmos DB.

  3. Na página de opções Selecionar API, no bloco PostgreSQL, selecione Criar.

  4. Na página Criar um cluster do Azure Cosmos DB for PostgreSQL, preencha as seguintes informações:

    • Grupo de recursos: selecione Novo e, em seguida, insira link-demo.

    • Nome do cluster: Insira link-demo-sg.

      Observação

      O nome do cluster deve ser globalmente exclusivo no Azure porque ele cria uma entrada DNS. Se link-demo-sg não estiver disponível, insira outro nome e ajuste as etapas a seguir adequadamente.

    • Localização: selecione Leste dos EUA.

    • Senha: insira e confirme uma senha.

  5. Selecione Avançar: Rede.

  6. Na guia Rede, em Método de conectividade, selecione Acesso privado.

  7. Na tela Criar ponto de extremidade privado, insira ou selecione os seguintes valores:

    • Grupo de recursos: link-demo
    • Local: (US) East US
    • Nome: link-demo-sg-c-pe1
    • Sub-recurso de destino: coordinator
    • Rede virtual: link-demo-net
    • Sub-rede: link-demo-subnet
    • Integrar com a zona DNS privada: sim
  8. Selecione OK.

  9. Depois de criar o ponto de extremidade privado, selecione Examinar + criar e depois Criar para criar o cluster.

Acessar o cluster de maneira privada pela VM

O link privado permite que a VM se conecte ao cluster e impede que hosts externos façam isso. Nesta etapa, você verificará se o cliente de banco de dados psql em sua máquina virtual pode se comunicar com o nó coordenador do cluster. No código, substitua {your_password} pela senha do cluster.

# 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

Você deverá ver um número de versão do Citus na saída. Se for esse o caso, o psql conseguiu executar o comando e o link privado funcionou.

Limpar os recursos

Você viu como criar um link privado entre uma VM e um cluster. Agora você pode desprovisionar os recursos.

Exclua o grupo de recursos e os recursos dentro dele serão desprovisionados:

az group delete --resource-group link-demo

# press y to confirm

Próximas etapas