使用私人連結 (預覽版) 的已啟用 Arc 之 Kubernetes 叢集的私人連線能力

Azure Private Link 可讓您使用私人端點,將 Azure 服務安全地連結至您的虛擬網路。 這表示您可以使用 Azure Arc 連線內部部署的 Kubernetes 叢集,並透過 Azure ExpressRoute 或站對站 VPN 連線來傳送所有流量,而不是使用公用網路。 在 Azure Arc 中,您可以使用私人連結範圍模型來允許多個 Kubernetes 叢集使用單一私人端點與其 Azure Arc 資源進行通訊。

本文會說明 Azure Arc Private Link (預覽版) 的使用時機以及設定方法。

重要

除了東南亞以外,目前所有推出已啟用 Azure Arc 的 Kubernetes 的地區中,Azure Arc Private Link 功能皆處於預覽狀態。 請參閱 Microsoft Azure 預覽版增補使用規定,以了解適用於 Azure 功能 (搶鮮版 (Beta)、預覽版,或尚未正式發行的版本) 的法律條款。

優點

有了私人連結,您可以:

  • 私下連線至 Azure Arc,而不需要開啟任何公用網路存取。
  • 請確保已啟用 Azure Arc 的機器或伺服器中的資料只能透過授權的私人網路存取。
  • 定義特定已啟用 Azure Arc 的 Kubernetes 叢集和其他透過私人端點進行連線的 Azure 服務資源線 (如 Azure 監視器),以防止資料從您的私人網路外泄。
  • 使用 ExpressRoute 和 Private Link,將您的私人內部部署網路安全地連線至 Azure Arc。
  • 讓所有的流量都在 Microsoft Azure 骨幹網路內。

如需詳細資訊,請參閱 Azure Private Link 的主要優點

運作方式

Azure Arc 私人連結範圍將私人端點 (及其所包含的虛擬網路) 連線至 Azure 資源,在本例中,啟用 Azure Arc 的 Kube 叢集。 當您啟用任何一個已啟用 Arc 的 Kubernetes 叢集所支援的擴充功能時 (如 Azure 監視器),您可能需要連線至其他 Azure 資源。 以 Azure 監視器為例,從叢集收集到的記錄會傳送至 Log Analytics 工作區。

要將前面列出的已啟用 Arc 的 Kubernetes 叢集與其他 Azure 資源連線,則需要為每個服務設定私人連結。 如需範例,請參閱 Azure 監視器適用的 Private Link

目前的限制

在規劃您的 Private Link 設定時,請考慮這些當前限制。

  • 最多只能將一個 Azure Arc 私人連結範圍與虛擬網路建立關聯。

  • 啟用 Azure Arc 的 Kubernetes 叢集設定只能連結到一個 Azure Arc 私人連結範圍。

  • 所有內部部署的 Kubernetes 叢集都必須使用相同的私人端點,方法是使用相同的 DNS 轉寄站來解析出正確的私人端點資訊 (FQDN 記錄名稱和私人 IP 位址)。 如需詳細資訊,請參閱 Azure 私人端點 DNS 設定。 已啟用 Azure Arc 的 Kubernetes 叢集、Azure Arc 私人連結範圍和虛擬網路必須位於相同的 Azure 區域中。 私人端點和虛擬網路也必須位於相同的 Azure 區域,但該區域可以和您的 Azure Arc 私人連結範圍和已啟用 Arc 的 Kubernetes 叢集所在的區域不同。

  • 在預覽期間,您必須透過內部部署網路的防火牆來允許 Microsoft Entra ID、Azure Resource Manager 和 Microsoft Container Registry 服務標籤的流量。

  • 其他您將使用的 Azure 服務 (如 Azure 監視器) 在虛擬網路中都需要自己的私人端點。

    注意

    已啟用 Azure Arc 的 Kubernetes 叢集若啟用了私人連線,則不支援叢集連線功能 (因此也不支援自訂位置功能)。 這是規劃中的功能,未來才會新增。 目前也不支援利用 Azure Arc 服務 (如已啟用 Azure Arc 的資料服務) 或使用這些功能的已啟用 Azure Arc 之應用程式服務來進行連線。 如需支援透過私人連結之網路連線的叢集擴充功能或 Azure Arc 服務的清單,請參閱下一節。

在透過私人連結設定的已啟用 Azure Arc 的 Kubernetes 叢集上,下列擴充功能可支援透過私人連結的端對端連線。 如需其他設定步驟和私人連結支援的詳細資料,請參閱連結到各個叢集擴充功能的指南。

若要透過私人連結將 Kubernetes 叢集連線到 Azure Arc,您必須設定網路來完成下列作業:

  1. 使用站對站 VPNExpressRoute 線路建立內部部署網路與 Azure 虛擬網路之間的連線。
  2. 部署 Azure Arc 私人連結範圍 (負責控制哪些 Kubernetes 叢集可透過私人端點與 Azure Arc 通訊),然後使用私人端點將它與您的 Azure 虛擬網路產生關聯。
  3. 更新區域網路上的 DNS 設定以解析私人端點位址。
  4. 設定本機防火牆以允許存取 Microsoft Entra ID、Azure Resource Manager 和 Microsoft Container Registry。
  5. 建立已啟用 Azure Arc 的 Kubernetes 叢集和 Azure Arc 私人連結範圍的關聯。
  6. 或者,為管理您已啟用 Azure Arc 之 Kubernetes 叢集的其他 Azure 服務 (如 Azure 監視器) 部署私人端點。 本文件的其餘部分假設您已設定 ExpressRoute 線路或站對站 VPN 連線。

網路組態

已啟用 Azure Arc 的 Kubernetes 會與數個 Azure 服務整合,將雲端管理和治理帶入混合式 Kubernetes 叢集。 這些服務大多提供私人端點,但您必須設定您的防火牆和路由規則以允許透過網際網路存取 Microsoft Entra ID 和 Azure Resource Manager,直到這些服務提供私人端點為止。 您也需要允許存取 Microsoft Container Registry (和 AzureFrontDoor.FirstParty 作為 Microsoft Container Registry 的前身) 來提取映像及 Helm 圖表,以便啟用 Azure 監視器等服務,並在 Kubernetes 叢集上初始設定 Azure Arc 代理程式。

做法有二:

  • 如果您的網路是透過 Azure VPN 或 ExpressRoute 線路路由傳送所有網際網路流量,您可以使用服務標籤來設定與 Azure 中子網路相關聯的網路安全性群組 (NSG),以允許輸出 TCP 443 (HTTPS) 存取 Microsoft Entra ID、Azure Resource Manager、Azure Front Door 和 Microsoft Container Registry。 NSG 規則看起來應該像這樣:

    設定 Microsoft Entra ID 規則 Azure Resource Manager 規則 AzureFrontDoorFirstParty 規則 Microsoft Container Registry 規則
    來源 虛擬網路 虛擬網路 虛擬網路 虛擬網路
    來源連接埠範圍 * * * *
    目的地 服務標籤 服務標籤 服務標籤 服務標籤
    目的地服務標籤 AzureActiveDirectory AzureResourceManager AzureFrontDoor.FirstParty MicrosoftContainerRegistry
    目的地連接埠範圍 443 443 443 443
    通訊協定 TCP TCP TCP TCP
    動作 允許 允許 允許 (輸入和輸出) 允許
    優先順序 150 (必須低於任何阻止網際網路存取的規則) 151 (必須低於任何阻止網際網路存取的規則) 152 (必須低於任何阻止網際網路存取的規則) 153 (必須低於任何阻止網際網路存取的規則)
    名稱 AllowAADOutboundAccess AllowAzOutboundAccess AllowAzureFrontDoorFirstPartyAccess AllowMCROutboundAccess
  • 設定您區域網路上的防火牆,以允許輸出 TCP 443 (HTTPS) 存取 Microsoft Entra ID、Azure Resource Manager 和 Microsoft Container Registry,並允許使用可下載的服務標籤檔案對 AzureFrontDoor.FirstParty 進行輸入及輸出存取。 JSON 檔案中包含 Microsoft Entra ID、Azure Resource Manager、AzureFrontDoor.FirstParty 和 Microsoft Container Registry 所使用的所有公用 IP 位址範圍,並且會每月更新以反映任何變更。 Microsoft Entra 的服務標籤是 AzureActiveDirectory,Azure Resource Manager 的服務標籤是 AzureResourceManager、Microsoft Container Registry 的服務標籤是 MicrosoftContainerRegistry,而 Azure Front Door 的服務標籤是 AzureFrontDoor.FirstParty。 請洽詢您的網路系統管理員和網路防火牆廠商以了解如何設定防火牆規則。

  1. 登入 Azure 入口網站

  2. 移至 Azure 入口網站中的 [建立資源],然後搜尋 [Azure Arc 私人連結範圍]。 或者,您也可以直接移至入口網站中的 [Azure Arc 私人連結範圍] 頁面

  3. 選取 建立

  4. 選取訂用帳戶和資源群組。 在預覽期間,您的虛擬網路和已啟用 Azure Arc 的 Kubernetes 叢集必須位於和 Azure Arc 私人連結範圍相同的訂閱中。

  5. 為 Azure Arc 私人連結範圍命名。

  6. 您可以選擇性地要求每一個與此 Azure Arc 私人連結範圍相關聯的已啟用 Arc 之 Kubernetes 叢集透過私人端點將資料傳送至服務。 如果您選取 [啟用公用網路存取],則與此 Azure Arc 私人連結範圍相關聯的 Kubernetes 叢集可以透過私人或公用網路與服務通訊。 您可以在建立範圍後根據需要變更此設定。

  7. 選取 [檢閱 + 建立] 。

    Screenshot of the Azure Arc Private Link Scope creation screen in the Azure portal.

  8. 驗證完成後,選取 [建立]

建立私人端點

建立 Azure Arc 私人連結範圍之後,您必須使用私人端點將其連線到一或多個虛擬網路。 私人端點會公開對於您虛擬網路位址空間中私人 IP 上 Azure Arc 服務的存取權。

虛擬網路上的私人端點可讓您透過您網路集區的私人 IP,而不是使用這些端點的公用 IP 來連線到已啟用 Azure Arc 的 Kubernetes 叢集端點。 這可讓您繼續使用已啟用 Azure Arc 的 Kubernetes 叢集,而無須向未請求的輸出流量開啟放 VNet。 從私人端點到您資源的流量將會通過 Microsoft Azure,而不會路由傳送至公用網路。

  1. 在您的範圍資源中,選取左側資源功能表中的 [私人端點連線]。 選取 [新增] 以啟動端點建立流程。 您也可以選取在 Private Link 中心啟動的連線,然後選取 [核准] 來核准連線。

    Screenshot of the Private Endpoint connections screen in the Azure portal.

  2. 挑選訂閱、資源群組、端點名稱和您想使用的區域。 它必須與您的虛擬網路位於相同的區域中。

  3. 選取 [下一步:資源]。

  4. 在 [資源] 頁面上執行下列動作:

    1. 選取包含您 Azure Arc 私人連結範圍資源的訂閱。
    2. [資源類型] 請選擇 Microsoft.HybridCompute/privateLinkScopes。
    3. 在 [資源] 下拉式選單中選擇您稍早建立的 Azure Arc 私人連結範圍。
    4. 選取 [下一步:設定]
  5. 在 [設定] 頁面上執行下列步驟:

    1. 選擇您要連線到已啟用 Azure Arc 的 Kubernetes 叢集的虛擬網路和子網路。

    2. 在 [與私人 DNS 區域整合] 中,選取 [是]。 這將會建立一個新的私人 DNS 區域。 實際的 DNS 區域可能與下列螢幕擷取畫面所示不同。

      Screenshot of the Configuration step to create a private endpoint in the Azure portal.

      注意

      如果您選擇 [否],並偏好手動管理 DNS 記錄,請先完成設定您的 Private Link,其中包括此私人端點和私人範圍設定。 接下來,根據 Azure 私人端點 DNS 設定中的指示來設定您的 DNS。 在準備您的私人連結設定時,請務必不要建立空白記錄。 您所建立的 DNS 記錄可以覆寫現有的設定,並影響您與已啟用 Arc 之 Kubernetes 叢集的連線能力。

    3. 選取 [檢閱 + 建立]。

    4. 讓驗證通過。

    5. 選取 建立

設定內部部署 DNS 轉送

您的內部部署 Kubernetes 叢集必須能夠將私人連結 DNS 記錄解析為私人端點 IP 位址。 您設定的方式取決於您是使用 Azure 私人 DNS 區域還是自己的 DNS 伺服器內部部署來維護 DNS 記錄,以及您設定的叢集數目。

使用 Azure 整合式私人 DNS 區域的 DNS 設定

如果您在建立私人端點時為已啟用 Azure Arc 的 Kubernetes 叢集設定了私人 DNS 區域,您的內部部署 Kubernetes 叢集必須要能將 DNS 查詢轉接到內建的 Azure DNS 伺服器,才能正確解析私人端點位址。 您的 Azure 中需要一個 DNS 轉寄站 (專門建立的 VM 或已啟用 DNS Proxy 的 Azure 防火牆執行個體),之後您可以設定內部部署 DNS 伺服器來將查詢轉送至 Azure 以解析私人端點 IP 位址。

私人端點文件提供了使用 DNS 轉寄站設定內部部署工作負載的指引。

手動設定 DNS 伺服器

如果您在私人端點建立時選擇不使用 Azure 私人 DNS 區域,您必須在內部部署 DNS 伺服器中建立必要的 DNS 記錄。

  1. 前往 Azure 入口網站。

  2. 瀏覽至與您的虛擬網路和 Azure Arc 私人連結範圍相關聯的私人端點資源。

  3. 從左側窗格中,選取 [DNS 設定] 以查看 DNS 記錄和您需要在 DNS 伺服器上設定的對應 IP 位址的清單。 FQDN 和 IP 位址會根據您為私人端點選取的區域和子網路中的可用 IP 位址而變更。

    Screenshot showing manual DNS server configuration in the Azure portal.

  4. 請遵循 DNS 伺服器廠商的指引,新增必要的 DNS 區域和 A 記錄,以符合入口網站中的資料表。 請務必選取適用於您網路的 DNS 伺服器。 每個使用此 DNS 伺服器的 Kubernetes 叢集現在可以解析私人端點 IP 位址,而且它們必須與 Azure Arc 私人連結範圍相關聯,否則連線將遭到拒絕。

注意

connectedk8s CLI 擴充功能 1.3.0 版開始,支援設定已啟用 Azure Arc 之 Kubernetes 叢集的私人連結,前提是 Azure CLI 版本必須為 2.3.0 以上。 如果您使用的是 1.3.0 版以上的 connectedk8s CLI 擴充功能,我們引進了驗證功能,以確保您只有在執行 2.3.0 版以上的 Azure CLI 時,才能成功將叢集連線至 Azure Arc。

第一次將 Kubernetes 叢集上線至 Azure Arc,或者在為現有已啟用 Azure Arc 的 Kubernetes 叢集設定私人連結時,您可以使用以下命令:

az connectedk8s connect -g <resource-group-name> -n <connected-cluster-name> -l <location> --enable-private-link true --private-link-scope-resource-id <pls-arm-id>
參數名稱 描述
--enable-private-link 啟用/停用私人連結功能的屬性。 將它設定為 "True" 以啟用私人連結的連線能力。
--private-link-scope-resource-id 稍早建立之私人連結範圍資源的識別碼。 如:/subscriptions//resourceGroups//providers/Microsoft.HybridCompute/privateLinkScopes/

對於在設定 Azure Arc 私人連結範圍之前便已設定的已啟用 Azure Arc 的 Kubernetes 叢集,您可以使用下列步驟,透過 Azure 入口網站來設定私人連結:

  1. 在 Azure 入口網站中,瀏覽至您的 Azure Arc 私人連結範圍資源。

  2. 從左側窗格中,選取 [Azure Arc 資源],然後選取 [+ 新增]

  3. 從清單上選取您想要與私人連結範圍建立關聯的 Kubernetes 叢集,然後選取 [選取] 以儲存變更。

    注意

    此清單只會顯示與您的私人連結範圍位於相同訂閱和區域內的已啟用 Azure Arc 的 Kubernetes 叢集。

    Screenshot of the list of Kubernetes clusters for the Azure Arc Private Link Scope.

疑難排解

如果您遇到問題,以下建議可能會有所幫助:

  • 檢查您的內部部署 DNS 伺服器以確認它是否有轉接至 Azure DNS,或者它在您的私人連結區域中是否設有適當的 A 記錄。 這些查閱命令應該會傳回您 Azure 虛擬網路中的私人 IP 位址。 如果命令已解析了公用 IP 位址,請仔細檢查您的電腦或伺服器,以及網路的 DNS 設定。

    nslookup gbl.his.arc.azure.com
    nslookup agentserviceapi.guestconfiguration.azure.com
    nslookup dp.kubernetesconfiguration.azure.com
    
  • 如果您在將 Kubernetes 叢集上線時遇到問題,請確認您已將 Microsoft Entra ID、Azure Resource Manager、AzureFrontDoor.FirstParty 和 Microsoft Container Registry 服務標籤新增至您的區域網路防火牆。

下一步