透過 CLI 建立已啟用 Azure Arc 的 PostgreSQL 伺服器

本文件說明在 Azure Arc 上建立 PostgreSQL 伺服器並與其連線的步驟。

必要條件

您必須先具備必要的工具,才能繼續進行本文中的工作。 所有部署都需要下列工具:

  • Azure Data Studio

  • 適用於 Azure Data Studio 的 Azure Arc 延伸模組

  • Azure CLI (az)

  • Azure CLI 的 arcdata 延伸模組

  • kubectl

    視您的環境而定的其他用戶端工具。 如需更完整的清單,請參閱用戶端工具

除了必要的工具之外,若要完成工作,您需要 Azure Arc 資料控制器

注意

作為預覽功能,本文所述的技術受限於 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 伺服器的服務帳戶。 資訊安全內容限制式 (SCC) arc-data-scc 是您部署 Azure Arc 資料控制器時新增的資訊安全內容限制式。

oc adm policy add-scc-to-user arc-data-scc -z <server-name> -n <namespace-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_USERNAMEAZDATA_PASSWORD 工作階段環境變數,以略過互動式提示。

範例

若要部署名為 postgres01 的 PostgreSQL 伺服器,其使用的儲存類別與資料控制器相同,請執行下列命令

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

注意

  • 如果您在相同的終端機工作階段中使用 AZDATA_USERNAMEAZDATA_PASSWORD 工作階段環境變數部署資料控制器,則系統也會使用 AZDATA_PASSWORD 的值來部署 PostgreSQL 伺服器。 如果您想要使用另一個密碼,(1) 更新 AZDATA_USERNAMEAZDATA_PASSWORD 的值,或 (2) 刪除 AZDATA_USERNAMEAZDATA_PASSWORD 環境變數,或 (3) 刪除其值,以在建立伺服器時收到提示,要求您以互動方式輸入使用者名稱和密碼。
  • 建立 PostgreSQL 伺服器並不會立即在 Azure 中註冊資源。 在將資源庫存使用量資料上傳至 Azure 的過程中,系統也會在 Azure 中建立資源,而您將能夠在 Azure 入口網站中看到資源。

列出在 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 執行個體端點,從您慣用的工具連線到 PostgreSQL 伺服器:Azure Data Studiopgcli psql、pgAdmin 等。

此時,請使用 Azure Data Studio 的測試人員組建

關於 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 延伸模組。

注意

您必須按一下連線面板中的 [進階] 按鈕,才能輸入連接埠號碼。

請記住,如果您使用的是 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