共用方式為


在已啟用 Azure Arc 的 Kubernetes 上建立和管理自訂位置

自訂位置功能提供了一個方式,讓您將已啟用 Azure Arc 的 Kubernetes 叢集設定為部署 Azure 供應項目執行個體的目標位置。 可在自訂位置上部署的 Azure 供應項目範例包括資料庫 (例如由 Azure Arc 啟用的 SQL 受控執行個體以及已啟用 Azure Arc 的 PostgreSQL 伺服器) 或應用程式執行個體 (例如 App Services、Functions、Event Grid、Logic Apps 和 API 管理)。

自訂位置會一對一地對應至已啟用 Azure Arc 的 Kubernetes 叢集內的命名空間。 與 Azure 角色型存取控制 (Azure RBAC) 結合的自訂位置 Azure 資源可用來為應用程式開發人員或資料庫管理員授與精細的權限,讓他們能夠在多租用戶環境中已啟用 Arc 的 Kubernetes 叢集上部署資料庫或應用程式執行個體等資源。

在本文中,您將了解如何在已啟用 Arc 的 Kubernetes 叢集上啟用自訂位置,以及如何建立自訂位置。

必要條件

  • 安裝 Azure CLI 或升級至最新版本

  • 安裝下列 Azure CLI 延伸模組的最新版本:

    • connectedk8s

    • k8s-extension

    • customlocation

      az extension add --name connectedk8s
      az extension add --name k8s-extension
      az extension add --name customlocation
      

      如果已安裝 connectedk8sk8s-extensioncustomlocation 延伸模組,您可以使用下列命令更新至最新版本

      az extension update --name connectedk8s
      az extension update --name k8s-extension
      az extension update --name customlocation
      
  • 確認已完成 Microsoft.ExtendedLocation 的提供者註冊。

    1. 輸入下列命令:

      az provider register --namespace Microsoft.ExtendedLocation
      
    2. 監視註冊程序。 註冊最多可能需要 10 分鐘的時間。

      az provider show -n Microsoft.ExtendedLocation -o table
      

      註冊之後,RegistrationState 狀態將會有 Registered 值。

  • 驗證您已有已啟用 Azure Arc 的 Kubernetes 連線叢集,並已將代理程式更新為最新版本。 確認將執行本文所述命令的機器上具有指向此叢集的 kubeconfig 檔案。

在叢集上啟用自訂位置

提示

自訂位置功能相依於叢集連線功能。 這兩項功能都必須在叢集中啟用,自訂位置才能運作。 若要啟用自訂位置功能,請遵循下列步驟:

如果您是以 Microsoft Entra 使用者身分登入 Azure CLI,請使用下列命令:

az connectedk8s enable-features -n <clusterName> -g <resourceGroupName> --features cluster-connect custom-locations

如果您在使用服務主體登入 Azure CLI 時執行上述命令,可能會看到下列警告:

Unable to fetch oid of 'custom-locations' app. Proceeding without enabling the feature. Insufficient privileges to complete the operation.

發生此警告是因為服務主體缺少必要權限,無法擷取 Azure Arc 服務所用自訂位置的 oid (物件識別碼)。 若要避免此錯誤,請依照下列步驟執行:

  1. 透過使用者帳戶登入 Azure CLI。

  2. 執行下列命令來擷取自訂位置的 oid (物件識別碼),其中 --id 已預先定義並設定為 bc313c14-388c-4e7d-a58e-70017303ee3b

    重要! 確實複製並執行命令,如下所示。 請勿將傳遞至 --id 參數的值取代為不同的值。

    az ad sp show --id bc313c14-388c-4e7d-a58e-70017303ee3b --query id -o tsv
    
  3. 使用服務主體登入 Azure CLI。 執行下列命令以在叢集上啟用自訂位置功能,並針對 --custom-locations-oid 參數使用上一個步驟中的 oid (物件識別碼) 值:

    az connectedk8s enable-features -n <cluster-name> -g <resource-group-name> --custom-locations-oid <cl-oid> --features cluster-connect custom-locations
    

建立自訂位置

  1. 部署您想要在叢集上安裝的 Azure 服務執行個體的 Azure 服務叢集擴充功能:

  2. 取得已啟用 Azure Arc 的 Kubernetes 叢集的 Azure Resource Manager 識別碼,於稍後步驟中參考為 connectedClusterId

    az connectedk8s show -n <clusterName> -g <resourceGroupName>  --query id -o tsv
    
  3. 取得叢集擴充功能 (已部署至已啟用 Azure Arc 的 Kubernetes 叢集上) 的 Azure Resource Manager 識別碼,於稍後步驟中參考為 extensionId

    az k8s-extension show --name <extensionInstanceName> --cluster-type connectedClusters -c <clusterName> -g <resourceGroupName>  --query id -o tsv
    
  4. 藉由參考已啟用 Azure Arc 的 Kubernetes 叢集和延伸模組來建立自訂位置:

    az customlocation create -n <customLocationName> -g <resourceGroupName> --namespace <name of namespace> --host-resource-id <connectedClusterId> --cluster-extension-ids <extensionId> 
    
    • 必要參數:

      參數名稱 描述
      --name, --n 自訂位置的名稱。
      --resource-group, --g 自訂位置的資源群組。
      --namespace 繫結至要建立的自訂位置叢集中的命名空間。
      --host-resource-id 已啟用 Azure Arc 的 Kubernetes 叢集的 Azure Resource Manager 識別碼 (連線的叢集)。
      --cluster-extension-ids 安裝在已連線叢集上的叢集擴充功能執行個體的 Azure Resource Manager 識別碼。 針對多個擴充功能,提供以空格分隔的叢集擴充功能識別碼清單
    • 選擇性參數:

      參數名稱 描述
      --location, --l Azure 中 Azure Resource Manager 資源自訂位置的位置。 如果未指定,則會使用已連線叢集的位置。
      --tags 以空格分隔的標記清單,格式為 key[=value]。 請使用 '' 來清除現有的標記。
      --kubeconfig 叢集的管理員 kubeconfig

顯示自訂位置的詳細資料

若要顯示自訂位置的詳細資料,請使用下列命令:

az customlocation show -n <customLocationName> -g <resourceGroupName> 

列出自訂位置

若要列出資源群組中的所有自訂位置,請使用下列命令:

az customlocation list -g <resourceGroupName> 

建立自訂位置

使用 update 命令新增 --tags 的新值,或將新的 --cluster-extension-ids 與自訂位置產生關聯,同時保留現有的標記值和相關聯的叢集擴充功能。

az customlocation update -n <customLocationName> -g <resourceGroupName> --namespace <name of namespace> --host-resource-id <connectedClusterId> --cluster-extension-ids <extensionIds> 

修補自訂位置

使用 patch 命令來取代 --cluster-extension-ids--tags 的現有值。 先前的值不會保留。

az customlocation patch -n <customLocationName> -g <resourceGroupName> --namespace <name of namespace> --host-resource-id <connectedClusterId> --cluster-extension-ids <extensionIds> 

刪除自訂位置

若要刪除自訂位置,請使用下列命令:

az customlocation delete -n <customLocationName> -g <resourceGroupName> 

疑難排解

如果自訂位置建立失敗,並出現錯誤 Unknown proxy error occurred,請修改您的網路原則,以允許 azure-arc 命名空間內的 Pod 對 Pod 內部通訊。 請務必同時新增 azure-arc 命名空間,並納入已設定原則的無 Proxy 排除清單中。

下一步