Azure Cosmos DB for PostgreSQL のプライベート アクセスを使用してクラスターに接続する

適用対象: Azure Cosmos DB for PostgreSQL (PostgreSQL の Citus データベース拡張機能を利用)

このチュートリアルでは、仮想マシン (VM) と Azure Cosmos DB for PostgreSQL クラスターを作成し、それらの間にプライベート アクセスを確立します。

前提条件

仮想ネットワークの作成

最初に、クラスターと 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

仮想マシンの作成

デモンストレーション用に、Debian Linux を実行する VM と、psql PostgreSQL クライアントを作成します。

# 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"

Azure Portal で Azure Cosmos DB for PostgreSQL クラスターを作成します。

  1. ポータルの左上隅にある [リソースの作成] を選択します。

  2. [リソースの作成] ページで、[データベース] を選択してから、[Azure Cosmos DB] を選択します。

  3. [API オプションの選択] ページの [PostgreSQL] タイルで、[作成] を選択します。

  4. [Azure Cosmos DB for PostgreSQL クラスターの作成] ページで、次の情報を入力します。

    • [リソース グループ]: [新規] を選択してから、「link-demo」と入力します。

    • [クラスター名]: 「link-demo-sg」と入力します。

      Note

      クラスター名によって DNS エントリが作成されるため、クラスター名は Azure 全体で一意のものにしてください。 link-demo-sg を使用できない場合は、別の名前を入力し、それに応じて以下の手順を調整してください。

    • [場所]: [米国東部] を選択します。

    • [パスワード]: パスワードを入力して確認します。

  5. [次へ: ネットワーク] を選択します。

  6. [ネットワーク] タブの [接続方法] で、[プライベート アクセス] を選択します。

  7. [プライベート エンドポイントの作成] 画面で、次の値を入力または選択します。

    • リソース グループ: link-demo
    • 場所: (US) East US
    • 名前: link-demo-sg-c-pe1
    • 対象サブリソース: coordinator
    • 仮想ネットワーク: link-demo-net
    • サブネット: link-demo-subnet
    • プライベート DNS ゾーンと統合する: はい
  8. [OK] を選択します。

  9. プライベート エンドポイントを作成したら、[確認と作成] を選択し、[作成] を選択してクラスターを作成します。

VM からクラスターにプライベートにアクセスする

プライベート リンクを使用すると、VM からクラスターに接続でき、外部ホストがそうするのを防止します。 この手順では、VM 上の psql データベース クライアントがクラスターのコーディネーター ノードと通信できることを確認します。 コードで、{your_password} をお使いのクラスター パスワードに置き換えます。

# 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

Citus のバージョン番号が出力に表示されるはずです。 その場合は、psql がコマンドを実行でき、プライベート リンクが機能しました。

リソースをクリーンアップする

VM とクラスターの間にプライベート リンクを作成する方法を確認しました。 これで、リソースをプロビジョニング解除できるようになりました。

リソース グループを削除すると、内部のリソースがプロビジョニング解除されます。

az group delete --resource-group link-demo

# press y to confirm

次のステップ