在已啟用 Azure Arc 的 Kubernetes 叢集上安裝事件方格延伸模組

本文引導您完成在已啟用 Azure Arc 的 Kubernetes 叢集上安裝事件方格的步驟。

為了簡潔起見,本文將「Kubernetes 上的事件方格延伸模組」稱為「Kubernetes 上的事件方格」或「事件方格」。

重要

具有 Azure Arc 的 Kubernetes 上的事件方格目前處於公開預覽狀態。 此預覽版本是在沒有服務等級協定的情況下提供,不建議用於生產工作負載。 可能不支援特定功能,或可能已經限制功能。 如需詳細資訊,請參閱 Microsoft Azure 預覽版增補使用條款

支援的 Kubernetes 散發套件

以下是可部署及執行事件方格的支援 Kubernetes 散發套件。

  1. Azure AKS 支援的 Kubernetes 散發套件
  2. RedHat OpenShift 容器平台

事件方格延伸模組

在 Kubernetes 叢集上安裝事件方格服務執行個體的作業是建立 Azure Arc 叢集延伸模組,這會同時部署事件方格訊息代理程式事件方格操作員。 如需訊息代理程式和操作員的函式詳細資訊,請參閱 Kubernetes 元件上的事件方格Azure Arc 叢集延伸模組功能使用 Azure Resource Manager (ARM) 控制平面作業,對部署至已啟用 Azure Arc 的 Kubernetes 叢集的事件方格提供生命週期管理。

注意

服務的預覽版本僅支援 Kubernetes 叢集上事件方格延伸模組的單一執行個體,因為事件方格延伸模組目前已定義為叢集範圍的延伸模組。 事件方格不支援命名空間範圍的部署,但允許將多個執行個體部署到叢集。 如需詳細資訊,請參閱延伸模組範圍

必要條件

繼續安裝事件方格之前,請先確定符合下列必要條件。

  1. 在其中一個支援的 Kubernetes 散發套件上執行的叢集。
  2. Azure 訂用帳戶
  3. PKI 憑證要用於與事件方格訊息代理程式建立 HTTPS 連線。
  4. 將叢集連線至 Azure Arc

取得支援

如果您遇到問題,請參閱疑難排解一節以取得常見情況的說明。 如果仍有問題,請建立 Azure 支援要求

PKI 憑證需求

事件方格訊息代理程式 (伺服器) 提供兩種用戶端。 伺服器驗證是使用憑證來完成。 用戶端驗證是根據用戶端類型使用憑證或 SAS 金鑰來完成。

  • 對事件方格訊息代理程式提出控制平面要求的事件方格操作員會使用憑證進行驗證。
  • 將事件發佈至事件方格主題的事件方格發行者會使用主題的 SAS 金鑰進行驗證。

若要建立與事件方格訊息代理程式和事件方格操作員的安全 HTTPS 通訊,我們會在安裝事件方格延伸模組期間使用 PKI 憑證。 以下是這些 PKI 憑證的一般需求:

  1. 憑證和金鑰必須為 X.509 憑證和隱私權增強式郵件 PEM 編碼。

  2. 若要在安裝期間設定事件方格訊息代理程式 (伺服器) 憑證,您必須提供:

    1. CA 憑證
    2. 公開憑證
    3. 私密金鑰
  3. 若要設定事件方格操作員 (用戶端) 憑證,您必須提供:

    1. CA 憑證
    2. 公開憑證
    3. 私密金鑰

    發佈用戶端可以使用事件方格訊息代理程式 CA 憑證,在將事件發佈至主題時驗證服務器。

    重要

    雖然與用戶端相關聯的網域可能有多個由不同憑證授權單位簽發的公用憑證,但 Kubernetes 上的事件方格只允許在安裝事件方格時上傳用戶端的單一 CA 憑證。 因此,事件方格操作員的憑證應該由相同的 CA 發行 (簽署),以便憑證鏈結驗證成功,並成功建立 TLS 工作階段。

  4. 設定伺服器和用戶端憑證的通用名稱 (CN) 時,請確定其與針對憑證授權單位憑證提供的 CN 不同。

    重要

    在早期概念證明階段,自我簽署憑證可能是一個選項,但一般而言,應購買和使用憑證授權單位 (CA) 所簽署的適當 PKI 憑證。

使用 Azure 入口網站進行安裝

  1. 在 Azure 入口網站上,搜尋 (頂端的欄位) Azure Arc

  2. 在 [基礎結構] 區段的左側功能表上,選取 [Kuberntes 叢集]

  3. 在叢集清單底下,找出您要安裝事件方格的叢集,然後加以選取。 叢集的 [概觀] 頁面隨即顯示。

    Select your Kubernetes cluster

  4. 選取左側功能表上 [設定] 群組中的 [延伸模組]

  5. 選取 + 新增。 顯示可用 Azure Arc Kubernetes 延伸模組的頁面隨即顯示。

    Cluster extensions - Add button

  6. 在 [新增資源] 頁面上,選取 [Kubernetes 延伸模組上的事件方格]

    Select Event Grid on Kubernetes extension

  7. 在 [Kubernetes 延伸模組上的事件方格] 頁面上,選取 [建立]

    Select Create Kubernetes extension

  8. [安裝事件方格] 頁面的 [基本] 索引標籤,請遵循下列步驟。

    1. [專案詳細資料] 區段會顯示唯讀訂用帳戶和資源群組值,因為 Azure Arc 延伸模組會部署在其安裝所在已連線叢集的相同 Azure 訂用帳戶和資源群組之下。

    2. 在 [事件方格延伸模組名稱] 欄位中提供名稱。 此名稱在其他已部署至相同 Azure Arc 連線叢集的 Azure Arc 延伸模組之間應該是唯一的。

    3. 針對 [發行命名空間],您可提供將部署事件方格元件的 Kubernetes 命名空間名稱。 例如,您可能想針對已啟用 Azure Arc 且部署至叢集的所有服務,使用單一命名空間。 預設值為 eventgrid-system。 如果提供的命名空間不存在,就會為您加以建立。

    4. [事件方格訊息代理程式] 詳細資料區段上會顯示服務類型。 事件方格訊息代理程式是公開事件送達之主題端點的元件,其會公開為 Kubernetes 服務類型 ClusterIP。 因此,指派給所有主題的 IP 會使用針對叢集設定的私人 IP 空間。

    5. 提供您想用於訊息代理程式和 Kubernetes 散發套件所支援的儲存體類別名稱。 例如,如果您使用 AKS,則可使用 azurefile,其使用 Azure 標準儲存體。 如需 AKS 所支援的預先定義儲存體類別詳細資訊,請參閱 AKS 中的儲存體類別。 如果您使用其他 Kubernetes 散發套件,請參閱支援的預先定義儲存體類別或您可提供的儲存體類別的 Kubernetes 散發套件文件。

    6. 儲存體大小。 預設值為 1 GiB。 判斷儲存體的大小時,請考慮擷取速率。 以 MiB/秒為單位的擷取速率是配置儲存體時的關鍵因素,其測量方式為事件大小乘以事件方格訊息代理程式上所有主題的發佈速率 (每秒事件數)。 事件本質上是暫時的,一旦傳遞事件,這些事件就不會耗用任何儲存體。 雖然擷取速率是儲存體使用的主要驅動因子,但這不是唯一的驅動因子。 保存主題和事件訂閱設定的中繼資料也會耗用儲存空間,但通常需要的儲存空間量比事件方格所內嵌和傳遞的事件還要低。

    7. 記憶體限制。 預設值為 1 GiB。

    8. 記憶體要求。 預設值為 200 MiB。 此欄位不可編輯。

      Install Event Grid extension - Basics page

    9. 選取頁面底部的 [下一步: 設定]

  9. 在 [安裝事件方格] 頁面的 [設定] 索引標籤中,執行下列步驟:

    1. 啟用 HTTP (不安全) 通訊. 如果您想要在用戶端與事件方格訊息代理程式通訊時使用不安全的通道,請核取此方塊。

      重要

      啟用此選項會讓事件方格訊息代理程式的通訊都使用 HTTP 作為傳輸。 因此,任何發佈用戶端和事件方格操作員都不會安全地與事件方格訊息代理程式通訊。 您應該只在開發初期階段使用此選項。

    2. 如果您未啟用 HTTP 通訊,請選取您取得的每個 PKI 憑證檔案,並符合 PKI 憑證需求

      Install Event Grid extension - Configuration page

    3. 選取頁面底部的 [下一步: 監視]

  10. 在 [安裝事件方格] 頁面的 [監視] 索引標籤中,執行下列步驟:

    1. 選取 [啟用計量] (選擇性)。 如果您選取此選項,Kubernetes 上的事件方格會使用 Prometheus 公開格式來公開主題和事件訂閱的計量。

      Install Event Grid extension - Monitoring page

    2. 選取 [下一步:標籤] 以瀏覽至 [標籤] 頁面。

  11. 在 [標籤] 頁面上,進行下列步驟:

    1. 如有必要,定義標籤

      Install Event Grid extension - Tags page

    2. 選取頁面底部的 [檢閱 + 建立] 。

  12. [檢閱 + 建立] 索引標籤中,選取 [建立]

    Install Event Grid extension - Review and Create page

    重要

    安裝事件方格是非同步作業,在 Kubernetes 叢集上執行的時間可能會比 Azure 入口網站告知部署完成的通知上顯示的時間還要長。 在您看到「您的部署已完成」通知之後,請等候至少 5 分鐘,再嘗試建立自訂位置 (下一個步驟)。 如果您有 Kubernetes 叢集的存取權,您可在 bash 工作階段上執行下列命令,驗證事件方格訊息代理程式和事件方格操作員 Pod 是否處於執行中狀態,這表示安裝已完成:

    kubectl get pods -n \<release-namespace-name\>
    

    以下是範例輸出:

    NAME                                  READY   STATUS    RESTARTS   AGE
    eventgrid-broker-568f75976-wxkd2      1/1     Running   0          2m28s
    eventgrid-operator-6c4c6c675d-ttjv5   1/1     Running   0          2m28s    
    

    重要

    在嘗試部署事件方格主題前,必須先建立自訂位置。 若要建立自訂位置,您可以在顯示 [您的部署完成] 通知之後 5 分鐘,選取底部的 [內容] 頁面。 或者,您可使用 Azure 入口網站建立自訂位置。 如需詳細資訊,請參閱自訂位置文件

  13. 部署成功之後,您就能夠在 [延伸模組] 頁面上看到一個項目,其具有您提供給事件方格延伸模組的名稱。 如果您看到 [安裝狀態] 為 [擱置],請等候幾分鐘,然後選取工具列上的 [重新整理]

    Event Grid extension - installed

使用 Azure CLI 進行安裝

  1. 啟動殼層工作階段。 您可以在電腦上啟動工作階段,也可以將瀏覽器開啟至 https://shell.azure.com

  2. 建立組態檔 protected-settings-extension.json。 建立事件方格延伸模組時,此檔案會當作參數傳遞。

    在下列命令和每個設定行中,將 filename 取代為包含操作員 (用戶端) 或訊息代理程式 (伺服器) 的公開憑證、CA 憑證或金鑰的名稱。 提供的所有憑證都應該以 base64 編碼,而且沒有換行符號。 因此,使用 base64 --wrap=0 命令。

    echo "{ 
        \"eventgridoperator.identityCert.base64EncodedIdentityCert\":\"$(base64 <filename> --wrap=0)\",
        \"eventgridoperator.identityCert.base64EncodedIdentityKey\":\"$(base64 <filename> --wrap=0)\",
        \"eventgridoperator.identityCert.base64EncodedIdentityCaCert\":\"$(base64 <filename> --wrap=0)\",
        \"eventgridbroker.service.tls.base64EncodedServerCert\":  \"$(base64 <filename> --wrap=0)\" ,
        \"eventgridbroker.service.tls.base64EncodedServerKey\":  \"$(base64 <filename> --wrap=0)\" ,
        \"eventgridbroker.service.tls.base64EncodedServerCaCert\":  \"$(base64 <filename> --wrap=0)\" 
    }" > protected-settings-extension.json 
    

    例如,如果訊息代理程式的公用憑證稱 (上方第一個設定項目) 為 client.cer,則第一個設定行看起來應如下所示:

    \"eventgridoperator.identityCert.base64EncodedIdentityCert\":\"$(base64 client.cer --wrap=0)\",    
    
  3. 建立組態檔 settings-extension.json。 建立事件方格延伸模組時,此檔案會當作參數傳遞。

    重要

    您可能不會變更 ServiceAccountserviceType 的值。 在預覽版本中,唯一支援的 Kubernetes 服務類型是 ClusterIP

    針對 storageClassName,提供您想用於訊息代理程式且 Kubernetes 散發套件支援的儲存體類別。 例如,如果您使用 AKS,則可使用 azurefile ,其使用 Azure 標準儲存體。 如需 AKS 所支援的預先定義儲存體類別詳細資訊,請參閱 AKS 中的儲存體類別。 如果您使用其他 Kubernetes 散發套件,請參閱支援的預先定義儲存體類別或您可提供的儲存體類別的 Kubernetes 散發套件文件。

    reporterType 設定為 prometheus,以使用 Prometheus 公開格式來啟用主題和事件訂閱的計量。

    重要

    在預覽版本中,使用 Prometheus 用戶端是取得計量的唯一支援機制。

    echo "{
        \"Microsoft.CustomLocation.ServiceAccount\":\"eventgrid-operator\",
        \"eventgridbroker.service.serviceType\": \"ClusterIP\",
        \"eventgridbroker.dataStorage.storageClassName\": \"<storage_class_name>\",
        \"eventgridbroker.diagnostics.metrics.reporterType\":\"prometheus\"
    }" > settings-extension.json
    
  4. 建立 Kubernetes 延伸模組,以在叢集上安裝事件方格元件。

    針對 cluster-nameresource-group 參數,您必須使用當您將叢集連線至 Azure Arc 時提供的相同名稱。

    release-namespace 是事件方格元件將部署到其中的命名空間。 預設值為 eventgrid-system。 您可以提供值來覆寫預設值。 例如,您可能想針對已啟用 Azure Arc 且部署至叢集的所有服務,使用單一命名空間。 如果提供的命名空間不存在,就會為您加以建立。

    重要

    在預覽版本中,cluster 是建立或更新事件方格延伸模組時唯一支援的範圍。 這表示服務只支援 Kubernetes 叢集上事件方格延伸模組的單一。尚未支援命名空間範圍的部署。 如需詳細資訊,請參閱延伸模組範圍

    az k8s-extension create \
        --cluster-type connectedClusters \
        --cluster-name <connected_cluster_name> \
        --resource-group <resource_group_of_connected_cluster> \
        --name <event_grid_extension_name> \
        --extension-type Microsoft.EventGrid \
        --scope cluster \
        --auto-upgrade-minor-version true \
        --release-train Stable \
        --release-namespace <namespace_name> \
        --configuration-protected-settings-file protected-settings-extension.json \
        --configuration-settings-file settings-extension.json    
    

    如需 CLI 命令的詳細資訊,請參閱 az k8s-extension create。 請注意,您可以使用 --config-file 參數來傳遞 json 檔案的名稱,其中包含與事件方格相關的組態資訊。 若要支援 HTTP,請包含下列設定。

    "eventgridbroker.service.supportedProtocols[0]": "http" 
    

    以下是具有上述設定的範例 settings-extension.json。

    {
        "Microsoft.CustomLocation.ServiceAccount": "eventgrid-operator",
        "eventgridbroker.service.serviceType": "ClusterIP",
        "eventgridbroker.service.supportedProtocols[0]": "http",
        "eventgridbroker.dataStorage.storageClassName": "default",
        "eventgridbroker.diagnostics.metrics.reporterType": "prometheus"
    }    
    
  5. 驗證事件方格延伸模組是否已安裝成功。

    az k8s-extension show  --cluster-type connectedClusters --cluster-name <connected_cluster_name> --resource-group <resource_group_of_connected_cluster> --name <event_grid_extension_name>
    

    如果成功部署事件方格延伸模組元件,則 installedState 屬性應該是 Installed

自訂位置

重要

在嘗試部署事件方格主題前,必須先建立自訂位置。 您可以使用 Azure 入口網站建立自訂位置。

疑難排解

Azure Arc connect 叢集問題

問題:瀏覽至 [Azure Arc] 並選取左側功能表上的 [Kubernetes 叢集] 時,顯示的頁面不會顯示我打算安裝事件方格的 Kubernetes 叢集。

解決方案:您的 Kubernetes 叢集未向 Azure 註冊。 遵循將現有 Kubernetes 叢集連線至 Azure Arc 一文中的步驟。如果您在此步驟期間發生問題,請向已啟用 Azure Arc 的 Kubernetes 小組提出支援要求

事件方格延伸模組問題

問題:嘗試安裝「事件方格延伸模組」時,您會收到下列訊息:「作業無效 - 事件方格的執行個體已經安裝在此連線的 Kubernetes 叢集上。 事件方格延伸模組的範圍在叢集層級,這表示叢集上只能安裝一個執行個體。」

說明:您已安裝事件方格。 事件方格的預覽版本僅支援一個部署至叢集的事件方格延伸模組執行個體。

下一步

建立自訂位置,然後遵循在 Kubernetes 上使用 Azure 事件方格將雲端事件路由傳送至 Webhook 快速入門中的指示。