共用方式為


快速入門:將 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

注意

您可以使用多個容器登錄作為 AOSM CLI 中映像的來源。 要從這些登錄複製的映像會根據 helm 套件架構自動填入。 若要設定這些來源登錄,請在 cnf-input.jsonc 檔案中填入 image_sources 清單。 使用 ACR 時,您必須具有讀者/AcrPull 許可權。 使用其他私人登錄時,您必須先執行 docker login 來向所有非 ACR 登錄進行驗證,才能執行 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.
  // You should create this before running the publish command
  "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.1.0.tgz",
      "default_values": "",
      "depends_on": []
    }
  ]
}
  • publisher_name - 您要發佈定義之發行者資源的名稱。 如果它不存在,則建立。
  • publisher_resource_group_name - 發行者資源的資源群組。 如果它不存在,則建立。
  • acr_artifact_store_name - Azure Container Registry (ACR) 成品存放區資源的名稱。 如果它不存在,則建立。
  • location - 建立資源時要使用的 Azure 位置。
  • nf_name - NF 定義的名稱。
  • version - A.B.C 格式的 NF 定義版本。
  • image_sources - 要從中提取映射的登錄清單。
  • helm_packages:
    • name - Helm 套件的名稱。
    • path_to_chart - 本機磁碟上 Helm Chart 的檔案路徑。 接受 .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) 所需的部署參數架構。
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。

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

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

下一步