快速入門:將 Nginx 容器發佈為容器化網路函式 (CNF)
本快速入門說明如何使用 az aosm
Azure CLI 擴充功能來建立及發佈基本網路函式定義。 其目的是要示範發行者 Azure 操作員服務管理員 (AOSM) 資源的工作流程。 這裡提供的基本概念旨在讓使用者建立更令人興奮的服務。
必要條件
需要具作用中訂用帳戶的 Azure 帳戶。 如果您沒有 Azure 訂用帳戶,請依照此處 的指示開始免費 建立帳戶,再開始。
此訂用帳戶上的參與者和 AcrPush 角色,以便建立資源群組,或您擁有參與者角色的現有資源群組。
完成快速入門:完成在 Azure 操作員服務管理員中部署容器化網路函式的必要條件。
建立輸入檔
建立用於發佈網路函式定義的輸入檔。 執行下列命令來產生網路函數定義 (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
當命令完成時,請檢查發行者資源群組內的資源,以檢閱已建立的元件和成品。