快速入門:將 Nginx 容器發佈為容器化網路功能 (CNF)
本快速入門說明如何使用 az aosm
Azure CLI 延伸模組來建立及發佈基本網路功能定義。 其用途為示範發行者 Azure 運算子服務管理員 (AOSM) 資源的工作流程。 這裡呈現的基本概念旨在讓使用者準備好建立更令人興奮的服務。
必要條件
需要具作用中訂用帳戶的 Azure 帳戶。 如果您沒有 Azure 訂用帳戶,請在開始之前遵循這裡的指示 (開始免費使用) 建立帳戶。
您擁有參與者角色的現有資源群組,或透過此訂用帳戶的參與者角色,讓 AOSM CLI 延伸模組可以建立資源群組。
建立輸入檔
建立用於發佈網路功能定義的輸入檔。 執行下列命令來產生網路功能定義 (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
當命令完成時,請檢查發行者資源群組內的資源,以檢閱已建立的元件和成品。