CLI から Azure Arc 対応 PostgreSQL サーバーを作成する

このドキュメントでは、Azure Arc で PostgreSQL サーバーを作成し、それに接続する手順について説明します。

前提条件

この記事のタスクに進む前に、必要なツールを用意する必要があります。 すべてのデプロイに、次のツールが必要になります。

  • Azure Data Studio

  • Azure Data Studio 用の Azure Arc 拡張機能

  • Azure CLI (az)

  • Azure CLI 用の arcdata 拡張機能

  • kubectl

    環境に応じて追加のクライアント ツール。 より包括的なリストについては、「クライアント ツール」を参照してください。

必須のツールに加えて、タスクを完了するには、Azure Arc データ コントローラーが必要です。

Note

この記事で紹介しているテクノロジはプレビュー機能であり、「Microsoft Azure プレビューの追加利用規約」に従うことを条件として提供されます。

最新の更新プログラムについては、リリース ノートを参照してください。

作業の開始

下記のトピックについて既によく理解している場合は、この段落をスキップしてください。 作成に進む前に、次のような重要なトピックを参照してください。

お客様自身で完全な環境をプロビジョニングせずに試してみることを希望する場合は、Azure Kubernetes Service (AKS)、AWS Elastic Kubernetes Service (EKS)、Google Cloud Kubernetes Engine (GKE)、または Azure VM 上で Azure Arc Jumpstart をすぐに開始できます。

OpenShift ユーザー専用の暫定的および一時的な手順

この手順を実装してから、次の手順に進んでください。 既定以外のプロジェクトで PostgreSQL サーバーを Red Hat OpenShift にデプロイするには、クラスターに対して次のコマンドを実行して、セキュリティ制約を更新する必要があります。 このコマンドでは、PostgreSQL サーバーを実行するサービス アカウントに必要な特権が付与されます。 arc-data-scc というセキュリティ コンテキスト制約 (SCC) は、Azure Arc データ コントローラーのデプロイ時に追加したものです。

oc adm policy add-scc-to-user arc-data-scc -z <server-name> -n <namespace-name>

Server-name は、次の手順で作成するサーバーの名前です。

OpenShift の SCC の詳細については、OpenShift のドキュメントを参照してください。 次の手順に進みます。

Azure Arc 対応 PostgreSQL サーバーを作成する

Arc データ コントローラーで Azure Arc 対応 PostgreSQL サーバーを作成するには、いくつかのパラメーターを渡す az postgres server-arc create コマンドを使用します。

作成時に設定できるすべてのパラメーターの詳細については、コマンドの出力を確認してください。

az postgres server-arc create --help

検討する必要がある主なパラメーターは以下のとおりです。

  • デプロイしようとしているサーバーの名前--name または -n の後に名前を指定します。この名前は 11 文字以下にする必要があります。

  • サーバーで使おうとしているストレージ クラス。 ストレージ クラスの設定はデプロイ後に変更することはできないため、サーバーをデプロイする時点で設定することが重要です。 データ、ログ、バックアップ用に使用するストレージ クラスを指定することもできます。 既定では、ストレージ クラスを指定しない場合、データ コントローラーのストレージ クラスが使用されます。

    • バックアップ用のストレージ クラスを設定するには、パラメーター --storage-class-backups、その後にストレージ クラスの名前を指定します。 このパラメーターを除外すると、自動バックアップが無効になります
    • データ用のストレージ クラスを設定するには、パラメーター --storage-class-data、その後にストレージ クラスの名前を指定します。
    • ログ用のストレージ クラスを設定するには、パラメーター --storage-class-logs、その後にストレージ クラスの名前を指定します。

    重要

    デプロイ後にストレージ クラスを変更する必要がある場合、データの抽出、サーバーの削除、新しいサーバーの作成、データのインポートを行ってください。

作成コマンドを実行すると、管理ユーザーのユーザー名とパスワードを入力するよう求められます。 作成コマンドを実行する前に AZDATA_USERNAME および AZDATA_PASSWORD セッション環境変数を設定すると、対話型プロンプトをスキップすることができます。

データ コントローラーと同じストレージ クラスを使用する、postgres01 という名前の PostgreSQL サーバーをデプロイするには、次のコマンドを実行します

az postgres server-arc create -n postgres01 --k8s-namespace <namespace> --use-k8s

Note

  • 同じターミナル セッションで AZDATA_USERNAME および AZDATA_PASSWORD セッション環境変数を使用してデータ コントローラーをデプロイした場合は、PostgreSQL サーバーをデプロイするために AZDATA_PASSWORD の値も使用されます。 別のパスワードを使用する場合は、(1) AZDATA_USERNAME および AZDATA_PASSWORD の値を更新するか、(2) AZDATA_USERNAME および AZDATA_PASSWORD 環境変数を削除するか、(3) その値を削除すると、サーバーを作成するときに対話形式でユーザー名とパスワードの入力を求められます。
  • PostgreSQL サーバーを作成しても、リソースはすぐには Azure に登録されません。 リソース インベントリまたは利用状況データを Azure にアップロードするプロセスの一環として、Azure でリソースが作成され、そのリソースを Azure portal で確認できるようになります。

Arc データ コントローラーにデプロイされている PostgreSQL サーバーを一覧表示する

Arc データ コントローラーにデプロイされている PostgreSQL サーバーを一覧表示するには、次のコマンドを実行します。

az postgres server-arc list --k8s-namespace <namespace> --use-k8s
  {
    "name": "postgres01",
    "state": "Ready"
  }

Azure Arc 対応 PostgreSQL サーバーに接続するためのエンドポイントを取得する

PostgreSQL サーバーのエンドポイントを表示するには、次のコマンドを実行します。

az postgres server-arc endpoint list -n <server name> --k8s-namespace <namespace> --use-k8s

次に例を示します。

{
  "instances": [
    {
      "endpoints": [
        {
          "description": "PostgreSQL Instance",
          "endpoint": "postgresql://postgres:<replace with password>@123.456.78.912:5432"
        },
        {
          "description": "Log Search Dashboard",
        },
        {
          "description": "Metrics Dashboard",
          "endpoint": "https://98.765.432.11:3000/d/postgres-metrics?var-Namespace=arc&var-Name=postgres01"
        }
      ],
      "engine": "PostgreSql",
      "name": "postgres01"
    }
  ],
  "namespace": "arc"
}

PostgreSQL インスタンスのエンドポイントを使用すると、任意のツール (Azure Data Studiopgcli psql、pgAdmin など) から PostgreSQL サーバーに接続できます。

今回は、Azure Data Studio の Insider ビルドを使用します。

Azure 仮想マシンのデプロイに関する特別な注意事項

Azure 仮想マシンを使用している場合は、エンドポイントの IP アドレスにパブリック IP アドレスが表示されません。 パブリック IP アドレスを検索するには、次のコマンドを使用します。

az network public-ip list -g azurearcvm-rg --query "[].{PublicIP:ipAddress}" -o table

その後、パブリック IP アドレスとポートを組み合わせて接続できます。

また、ネットワーク セキュリティ ゲートウェイ (NSG) を使用して PostgreSQL サーバーのポートを公開する必要がある場合もあります。 (NSG) を経由したトラフィックを許可するには、規則を設定します。 規則を設定するには、NSG の名前を把握しておく必要があります。 次のコマンドを使用して、NSG を特定します。

az network nsg list -g azurearcvm-rg --query "[].{NSGName:name}" -o table

NSG の名前を取得したら、次のコマンドを使用してファイアウォール規則を追加できます。 この例の値は、ポート 30655 に対する NSG 規則を作成し、任意のソース IP アドレスからの接続を許可します。

警告

任意の発信元 IP アドレスからの接続を許可するようにルールを設定することはお勧めしません。 クライアントの IP アドレスや、チームまたは組織の IP アドレスが含まれる IP アドレス範囲に固有の -source-address-prefixes 値を指定すると、適切にロック ダウンできます。

次の --destination-port-ranges パラメーターの値を、上記の az postgres server-arc list コマンドから受け取ったポート番号に置き換えます。

az network nsg rule create -n db_port --destination-port-ranges 30655 --source-address-prefixes '*' --nsg-name azurearcvmNSG --priority 500 -g azurearcvm-rg --access Allow --description 'Allow port through for db access' --destination-address-prefixes '*' --direction Inbound --protocol Tcp --source-port-ranges '*'

Azure Data Studio で接続する

Azure Data Studio を開き、上記の外部エンドポイントの IP アドレスとポート番号、およびインスタンスの作成時に指定したパスワードを使用してインスタンスに接続します。 PostgreSQL が [接続の種類] ドロップダウンに表示されない場合は、[拡張] タブで PostgreSQL を検索して、PostgreSQL 拡張機能をインストールできます。

Note

接続パネルの [詳細] ボタンをクリックして、ポート番号を入力する必要があります。

Azure VM を使用している場合は、次のコマンドを使用してアクセスできるパブリック IP アドレスが必要であることを忘れないでください。

az network public-ip list -g azurearcvm-rg --query "[].{PublicIP:ipAddress}" -o table

psql を使用して接続する

PostgreSQL サーバーにアクセスするには、上記の手順で取得した PostgreSQL サーバーの外部エンドポイントを渡します。

この時点で、psql のいずれかに接続できます。

psql postgresql://postgres:<EnterYourPassword>@10.0.0.4:30655