Share via


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

本快速入門說明如何使用 az aosm Azure CLI 擴充功能來建立及發佈基本網路函式定義。 其用途是示範發行者 Azure 操作員服務管理員 (AOSM) 資源的工作流程。 這裡提供的基本概念旨在讓使用者建立更令人興奮的服務。

必要條件

建立輸入檔

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

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

執行上述命令會產生 input.json 檔案。

注意

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

注意

在本快速入門中,我們使用 source_local_docker_image。 若要進一步進行 CNF,您可以選擇使用現有 Azure Container Registry 的參考,其中包含 CNF 的映射。 目前,每個 CNF 只支援一個 ACR 和命名空間。 要從這個 ACR 複製的映射會根據 helm 套件架構自動填入。 若要在未來使用此選項,請填入 source_registry input.json 檔案,並選擇性地 source_registry_namespace 填入 。 您必須擁有此 ACR 的讀者/AcrPull 許可權。

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

{
    "publisher_name": "nginx-publisher",
    "publisher_resource_group_name": "nginx-publisher-rg",
    "nf_name": "nginx",
    "version": "1.0.0",
    "acr_artifact_store_name": "nginx-nsd-acr",
    "location": "uksouth",
    "images": {
        "source_local_docker_image": "nginx:stable"
    },
    "helm_packages": [
        {
            "name": "nginxdemo",
            "path_to_chart": "nginxdemo-0.1.0.tgz",
            "path_to_mappings": "",
            "depends_on": []
        }
    ]
}
  • publisher_name - 您想要發佈定義之發行者資源的名稱。 如果它不存在,則建立。
  • publisher_resource_group_name - 發行者資源的資源群組。 如果它不存在,則建立。
  • acr_artifact_store_name - ACR 成品存放區資源的名稱。 如果它不存在,則建立。
  • location - 建立資源時要使用的 Azure 位置。
  • nf_name - NF 定義的名稱。
  • version - A.B.C 格式的 NF 定義版本。
  • images
    • source_local_docker_image - 選擇性。 來自本機電腦的來源 Docker 映射名稱。 針對有限的使用案例,CNF 只需要存在於本機 Docker 存放庫中的單一 Docker 映射。
  • helm_packages:
    • name - Helm 套件的名稱。
    • path_to_chart - 本機磁片上 Helm Chart 的檔案路徑。 接受 .tgz、.tar 或 .tar.gz。 即使在 Windows 上執行,仍使用 Linux 斜線 (/) 檔案分隔符號。 路徑應該是相對於檔案位置的 input.json 絕對路徑或路徑。
    • path_to_mappings - 本機磁片上值對應的檔案路徑(絕對或相對於 input.json ),其中所選值會取代為 deploymentParameter 預留位置。 接受 .yaml 或 .yml。 如果保留為空白字串,就會產生值對應檔案,且每個值都對應至部署參數。 使用空白字串,並在 --interactive 建置命令上以互動方式選擇要對應的值。
    • depends_on - 此套件相依的 Helm 套件名稱。 如果沒有相依性,請保留空白陣列。

建置網路函式定義 (NFD)

若要建構網路函式定義 (NFD),請在互動式模式中起始建置程式。 此模式可讓您選擇性地公開作為 values.yaml deploymentParameters 的值。

az aosm nfd build -f input-cnf-nfd.json --definition-type cnf --interactive

在互動式程式中,您可以回應下列兩個選項以外的所有選項 'n' (否):

  • 若要公開 參數 serviceAccount_create ,請使用 'y' 回應 (是)
  • 若要公開 參數 service_port ,請使用 'y' 回應 (是)

建置完成後,請檢查產生的檔案,以進一步瞭解網路函式定義 (NFD) 結構。 這些檔案會建立:

目錄/檔案 描述
configMappings 地圖網路函式定義版本 (NFDV) 的部署參數到 helm 圖表所需的值。
generatedValuesMappings 建立 configMappings 之互動式模式的 yaml 輸出。 視需要編輯並重新執行命令。
schemas 定義從這個網路函式定義版本 (NFDV) 建立網路函式所需的部署參數。
cnfartifactmanifests.bicep 用於建立成品資訊清單的 Bicep 範本。
cnfdefinition.bicep 用於建立網路函式定義版本 (NFDV) 本身的 Bicep 範本。

如果在互動式選項期間發生錯誤,有兩個選項可以修正它們:

  1. 使用正確的選取專案重新執行命令。
  2. 手動調整資料夾內 generatedValuesMappings 產生的值對應。 然後編輯 path_to_mappings_file 中的 input.json ,以參考修改過的檔案路徑。

發佈網路函式定義並上傳成品

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

az aosm nfd publish -f input-cnf-nfd.json --definition-type cnf

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

下一步