共用方式為


快速入門:將 Nginx 容器發佈為容器化網路功能 (CNF)

本快速入門說明如何使用 az aosm Azure CLI 延伸模組來建立及發佈基本網路功能定義。 其用途為示範發行者 Azure 運算子服務管理員 (AOSM) 資源的工作流程。 這裡呈現的基本概念旨在讓使用者準備好建立更令人興奮的服務。

必要條件

建立輸入檔

建立用於發佈網路功能定義的輸入檔。 執行下列命令來產生網路功能定義 (NFD) 的輸入組態檔。

az aosm nfd generate-config --definition-type cnf

執行上述命令會產生 cnf-input.jsonc 檔案。

注意

編輯 cnf-input.jsonc 檔案。 將其取代為下列範例中顯示的值。 將檔案儲存為 input-cnf-nfd.jsonc

如果您使用現有的資源群組,請變更 publisher_resource_group_name 欄位使其符合。

提示

您可以使用多個容器登錄做為 AOSM CLI 中映像的來源。 要從這個這些登錄複製的映像會根據 Helm 套件結構描述自動選取。 來源登錄是在 cnf-input.jsonc 檔案的 image_sources 清單中設定。

使用 ACR 時,您必須在 ACR 上擁有讀者和 AcrPull 角色。 使用非 ACR 登錄時,您必須先執行 docker login 來向每個私人登錄進行驗證後,才能執行 az aosm nfd build 命令。 在本快速入門中,我們會使用 docker.io 做為映像來源登錄。 這是公用登錄,不需要驗證。

以下是範例 input-cnf-nfd.jsonc 檔案:

{
  // Azure location to use when creating resources e.g uksouth
  "location": "uksouth",
  // Name of the Publisher resource you want your definition published to.
  // Will be created if it does not exist.
  "publisher_name": "nginx-publisher",
  // Resource group for the Publisher resource.
  // Will be created if it does not exist.
  "publisher_resource_group_name": "nginx-publisher-rg",
  // Name of the ACR Artifact Store resource.
  // Will be created if it does not exist.
  "acr_artifact_store_name": "nginx-nsd-acr",
  // Name of NF definition.
  "nf_name": "nginx",
  // Version of the NF definition in 1.1.1 format (three integers separated by dots).
  "version": "1.0.0",
  // List of registries from which to pull the image(s).
  // For example ["sourceacr.azurecr.io/test", "myacr2.azurecr.io", "ghcr.io/path"].
  // For non Azure Container Registries, ensure you have run a docker login command before running build.
  //
  "image_sources": ["docker.io"],
  // List of Helm packages to be included in the CNF.
  "helm_packages": [
    {
      "name": "nginxdemo",
      "path_to_chart": "nginxdemo-0.3.0.tgz",
      "default_values": ""
    }
  ]
}
  • publisher_name - 您想要發佈定義之發行者資源的名稱。 如果尚未存在,請加以建立。
  • publisher_resource_group_name - 發行者資源的資源群組。 如果尚未存在,請加以建立。
  • acr_artifact_store_name - Azure Container Registry (ACR) 成品存放區資源的名稱。 如果尚未存在,請加以建立。
  • location - 建立資源時要使用的 Azure 位置。
  • nf_name - NF 定義的名稱。
  • version - NF 定義的版本,格式為 A.B.C。
  • image_sources - 要從中提取映像的登錄清單。
  • helm_packages
    • name - Helm 套件的名稱。
    • path_to_chart - 本機磁碟上 Helm 圖表的檔案路徑。 接受 .tgz、.tar 或 .tar.gz。 即使在 Windows 上執行,仍使用 Linux 斜線 (/) 檔案分隔符號。 路徑應該是絕對路徑或 cnf-input.jsonc 檔案位置的相對路徑。
    • default_values - 所使用的本機磁碟上 YAML 值檔案的檔案路徑 (絕對或相對於 cnf-input.jsonc),而非使用 helm 圖表中的 values.yaml 檔案。
    • depends_on - 此套件相依的 Helm 套件名稱。 如果沒有相依性,請保留空白陣列。

建置網路功能定義 (NFD)

若要建構網路功能定義 (NFD),請起始建置流程。

az aosm nfd build -f input-cnf-nfd.jsonc --definition-type cnf

Az CLI AOSM 延伸模組會產生名為 cnf-cli-output 的目錄。 此目錄包含 BICEP 檔案,定義發佈 NFDV 所需的 AOSM 資源,並將部署至 AOSM 受控儲存體所需的映像上傳。 請檢查產生的檔案,以進一步了解網路功能定義 (NFD) 結構。

目錄/檔案 描述
nfDefinition/deployParameters.json 定義從這個網路功能定義版本 (NFDV) 建立網路功能 (NF) 所需部署參數的結構描述。
nfDefinition/nginxdemo-mappings.json 將網路功能定義版本 (NFDV) 的部署參數對應至 helm 圖表所需的值。
nfDefinition/deploy.bicep 用於建立網路功能定義版本 (NFDV) 本身的 Bicep 範本。
artifacts/artifacts.json NF 所需 Helm 套件和容器映像的清單。
artifactManifest/deploy.bicep 用於建立成品資訊清單的 Bicep 範本。
base/deploy.bicep 用於建立發行者、網路功能定義群組和成品存放區的 Bicep 範本

發佈網路功能定義並上傳成品

執行下列命令來發佈網路功能定義 (NFD),並上傳相關聯的成品:

注意

如果您使用 Windows,則必須在發佈步驟期間執行 Docker Desktop。

注意

發行者名稱在區域內必須是唯一的。 範例組態檔中定義的 'nginx-publisher' 很可能已經存在。

如果您收到表示「提供的區域中已存在名稱為 'nginx-publisher' 的私人發行者資源」的錯誤,請編輯組態檔中的 publisher_name 欄位,使其成為唯一的 (例如新增隨機字串後置詞)、重新執行 build 命令 (如上),然後重新執行此 publish 命令。

如果您繼續建立網路服務設計,則必須在 resource_element_templates 陣列中使用這個新的發佈名稱。

az aosm nfd publish -b cnf-cli-output --definition-type cnf

當命令完成時,請檢查發行者資源群組內的資源,以檢閱已建立的元件和成品。

下一步