Share via


使用 Azure 操作員服務管理員 (AOSM) CLI 擴充功能

在本操作指南中,網路函式發行者和服務設計工具會瞭解如何使用 Azure CLI 擴充功能來開始使用網路函式定義 (NFD) 和網路服務設計 (NSD)。

az aosm CLI 延伸模組旨在提供發佈 Azure Operator Service Manager 設計和定義的支援。 CLI 擴充功能有助於發佈網路函式定義 (NFD) 和網路服務設計 (NSD) 與 Azure 操作員服務管理員搭配使用的程式。

必要條件

請連絡您的 Microsoft 帳戶小組以註冊您的 Azure 訂用帳戶,以存取 Azure 操作員服務管理員(AOSM),或透過 合作夥伴註冊表單表達您的興趣。

下載並安裝 Azure CLI

在 Azure Cloud Shell 中使用 Bash 環境。 如需詳細資訊,請參閱 在 Azure Cloud Shell 中啟動 Cloud Shell 以使用 Bash 環境。

對於偏好在本機執行 CLI 參考命令的使用者,請參閱 如何安裝 Azure CLI

如果您是在 Window 或 macOS 上執行,請考慮在 Docker 容器中執行 Azure CLI。 如需詳細資訊,請參閱〈如何在 Docker 容器中執行 Azure CLI〉。

如果您使用本機安裝,請使用 az login 命令登入 Azure CLI,並完成終端機中顯示的提示以完成驗證。 如需更多登入選項,請參閱 使用 Azure CLI 登入。

安裝 Azure 操作員服務管理員 (AOSM) CLI 擴充功能

使用此指令安裝 Azure 操作員服務管理員 (AOSM) CLI 擴充功能:

az extension add --name aosm
  1. 執行 az version 以查看已安裝的版本和相依連結庫。
  2. 執行 az upgrade 以升級至目前版本的 Azure CLI。

註冊並驗證必要的資源提供者

開始使用 Azure 操作員服務管理員之前,請務必註冊必要的資源提供者。 執行下列命令。 此註冊程式最多可能需要 5 分鐘的時間。

# Register Resource Provider
az provider register --namespace Microsoft.HybridNetwork
az provider register --namespace Microsoft.ContainerRegistry

確認資源提供者的註冊狀態。 執行下列命令。

# Query the Resource Provider
az provider show -n Microsoft.HybridNetwork --query "{RegistrationState: registrationState, ProviderName: namespace}"
az provider show -n Microsoft.ContainerRegistry --query "{RegistrationState: registrationState, ProviderName: namespace}"

注意

資源提供者註冊可能需要幾分鐘的時間才能完成。 註冊成功之後,您就可以繼續使用 Azure 操作員服務管理員 (AOSM)。

容器化網路功能 (CNF) 需求

針對使用容器化網路函式的使用者,請務必確定下列套件會安裝在您執行 CLI 的電腦上:

  • 安裝 Helm,請參閱 安裝 Helm CLI
  • 在某些情況下, 請安裝 Docker,請參閱 安裝 Docker 引擎。 只有在來源映像位於本機 Docker 存放庫中,或您沒有推送圖表和映像所需的全訂用帳戶許可權時才需要。

權限

需要具有作用中訂用帳戶的 Azure 帳戶。 如果您沒有 Azure 訂用帳戶,請依照此處 的指示開始免費 建立帳戶,再開始。

您需要此訂用帳戶的參與者角色,才能建立資源群組,或具有參與者角色的現有資源群組。

發佈 CNF 的許可權

如果從現有的 ACR 採購 CNF 映像,您必須擁有 Reader/AcrPull 來自此 ACR 的許可權,而且在理想情況下, Contributor 角色 + AcrPush 角色(或允許 importImage 整個訂用帳戶的動作和 AcrPush的自定義角色)才能匯入到新的成品存放區。 如果您有這些,則不需要在本機安裝 Docker,而且映像複製很快。

如果您沒有全訂用帳戶的許可權,您可以使用 az aosm nfd publish 旗標執行 命令 --no-subscription-permissions ,將映像提取到本機計算機,然後使用僅限存放區的指令清單認證推送至成品存放區。 需要在本機安裝 Docker。

Azure 操作員服務管理員 (AOSM) CLI 擴充功能概觀

網路函式發行者和服務設計工具會使用 Azure CLI 擴充功能來協助發佈網路函式定義 (NFD) 和網路服務設計 (NSD)。

如角色和介面中所述,網路函式發行者具有各種責任。 CLI 擴充功能可協助以粗體顯示的專案:

  • 建立網路函式。
  • 在網路函式設計 (NFD) 中編碼。
  • 判斷要公開給服務設計工具的部署參數。
  • 將網路函式設計 (NFD) 上線至 Azure 操作員服務管理員 (AOSM)。
  • 上傳相關聯的成品
  • 驗證網路函式設計 (NFD)。

服務設計工具也有各種責任,其中 CLI 擴充功能會以粗體協助專案:

  • 選擇服務設計中包含的網路函式定義。
  • 將編碼為網路服務設計
  • 將 Azure 基礎結構結合至網路服務設計。
  • 藉由定義一或多個組態群組架構(CGSs)來判斷如何參數化服務。
  • 判斷服務操作員的輸入如何對應至網路函式定義 和 Azure 基礎結構所需的參數。
  • 將網路服務設計 (NSD) 上線至 Azure 操作員服務管理員 (AOSM)。
  • 上傳相關聯的成品
  • 驗證網路服務設計 (NSD)。

工作流程摘要

使用 CLI 延伸模組的一般工作流程為:

  1. 尋找使用案例所需的必要專案。

  2. generate-config執行命令以輸出後續命令的範例 JSON 組態檔。

  3. 填入組態檔。

  4. build執行命令來輸出一或多個 Bicep 範本,以用於網路函式定義或網路服務設計。

  5. 檢閱組建命令的輸出,視需要編輯輸出。

  6. publish執行命令以:

    • 建立所有必要條件資源,例如資源群組、發行者、成品存放區、群組。
    • 部署這些 bicep 範本。
    • 將成品上傳至成品存放區。

VNF 起點

針對 VNFs,您需要單一 ARM 範本來建立 VNF 的 Azure 資源,例如虛擬機、磁碟和 NIC。 ARM 樣本必須儲存在您執行 CLI 的電腦上。

針對虛擬化網路函式定義版本 (VNF NFDV),networkFunctionApplications 清單必須包含一個 VhdImageFile 和一個 ARM 範本。 包含多個 VhdImageFile 和多個 ARM 範本並不常見。 除非您有理由不這樣做,否則ARM範本應該部署單一 VM。 如果您想要部署多個 VM,服務設計工具應包含網路功能定義 (NFD) 與網路服務設計 (NSD) 的許多複本。 ARM 範本(適用於 AzureCore 和 Nexus)只能從下列資源提供者部署 ARM 資源:

  • Microsoft.Compute

  • Microsoft.Network

  • Microsoft.NetworkCloud

  • Microsoft.Storage

  • Microsoft.NetworkFabric

  • Microsoft.Authorization

  • Microsoft.ManagedIdentity

您也需要用於 VNF 虛擬機的 VHD 映像。 VHD 映像可以儲存在您執行 CLI 的電腦上,或儲存在可透過 SAS URI 存取的 Azure Blob 記憶體中。

CNF 起點

針對容器化網路函式 (CNFs) 的部署,請務必將下列內容儲存在您要執行 CLI 的電腦上:

  • 具有架構 的 Helm 套件 - 這些套件應該存在於本機記憶體上,並在組態檔內 input.json 參考。 遵循本快速入門時,您會下載必要的 helm 套件。

  • 建立範例組態檔 - 產生定義 CNF 部署的範例組態檔。 發出此命令,以產生 input.json 您需要填入特定組態的檔案。

    az aosm nfd generate-config
    
  • CNF 的影像 - 以下是選項:

    • 現有 Azure Container Registry 的參考,其中包含 CNF 的映像。 目前,每個 CNF 只支援一個 ACR 和命名空間。 要從這個 ACR 複製的映像會根據 helm 套件架構自動填入。 您必須擁有此 ACR 的讀者/AcrPull 許可權。 若要使用這個選項,請填入 source_registry input.json 檔案,並選擇性地 source_registry_namespace 填入 。
    • 來自本機計算機的來源 Docker 映像名稱。 此映像名稱適用於有限的使用案例,其中 CNF 只需要存在於本機 Docker 存放庫中的單一 Docker 映射。 若要使用此選項,請填入 source_local_docker_image input.json 檔案。 需要安裝 Docker。 本快速入門會引導您下載要用於此選項的 nginx Docker 映像。
  • 選擇性:對應檔案 (path_to_mappings):您可以選擇性地提供名為 path_to_mappings 的檔案(磁碟上)。 此檔案應該會鏡像 values.yaml,並將您選取的值取代為部署參數。 這樣做會將它們公開為 CNF 的參數。 或者,您可以在 中 input.json 保留此空白,而 CLI 會產生檔案。 在此案例中,中的每個值 values.yaml 預設都會公開為部署參數。 或者,使用 --interactive CLI 引數以互動方式做出選擇。 本快速入門會引導您建立此檔案。

設定 input.json 檔案時,請確定您依應部署的順序列出 Helm 套件。 例如,如果套件 「A」 必須部署在封裝 「B」 之前,您的 input.json 結構應該類似下列結構:

"helm_packages": [
    {
        "name": "A",
        "path_to_chart": "Path to package A",
        "path_to_mappings": "Path to package A mappings",
        "depends_on": [
            "Names of the Helm packages this package depends on"
        ]
    },
    {
        "name": "B",
        "path_to_chart": "Path to package B",
        "path_to_mappings": "Path to package B mappings",
        "depends_on": [
            "Names of the Helm packages this package depends on"
        ]
    }
]

遵循這些指導方針可確保使用 Helm 套件和相關聯的組態來部署容器化網路函式 (CNFs) 的有組織且結構化的方法。

NSD 起點

針對 NSD,您必須知道網路函式定義 (NFD) 的詳細資料,以納入您的設計:

  • NFD 發行者資源群組
  • NFD 發行者名稱和範圍
  • 網路函式定義群組的名稱
  • 網路函式定義版本的位置、類型和版本

您可以使用 az aosm nfd 命令來建立所有這些資源。

Azure 操作員服務管理員 (AOSM) 命令

在開始之前,請先使用這些命令:

  1. az login 用來登入 Azure CLI。

  2. az account set --subscription <subscription> 用來選擇您想要使用的訂用帳戶。

NFD 命令

取得命令引數的說明:

  • az aosm -h

  • az aosm nfd -h

  • az aosm nfd build -h

定義類型命令

所有這些命令都會採用 --definition-typecnfvnf 引數。

建立建置定義的範例組態檔:

  • az aosm nfd generate-config

此命令會輸出名為 input.json 的檔案,這個檔案必須填入。 一旦設定檔填入下列命令即可執行。

在本機建置 NFD 定義:

  • az aosm nfd build --config-file input.json

在本機建置 NFD 定義的詳細資訊:

  • 選擇您想要公開為 NFD 部署Parameters 的 VNF ARM 範本參數之一,並選擇以互動方式選擇每個參數的選項:

    • az aosm nfd build --config-file input.json --definition_type vnf --order_params
    • az aosm nfd build --config-file input.json --definition_type vnf --order_params --interactive

選擇您想要公開為 NFD 部署Parameters 的 CNF Helm 值參數:

  • az aosm nfd build --config-file input.json --definition_type cnf --interactive

發佈預先建置的定義:

  • az aosm nfd publish --config-file input.json

刪除已發佈的定義:

  • az aosm nfd delete --config-file input.json

刪除已發佈的定義和發行者、成品存放區和 NFD 群組:

  • az aosm nfd delete --config-file input.json --clean

NSD 命令

取得命令引數的說明:

  • az aosm -h

  • az aosm nsd -h

  • az aosm nsd build -h

建立建置定義的範例組態檔:

  • az aosm nsd generate-config

此命令會輸出名為 input.json 的檔案,這個檔案必須填入。 一旦設定檔填入下列命令即可執行。

在本機建置 NSD:

  • az aosm nsd build --config-file input.json

發佈預先建置的設計:

  • az aosm nsd publish --config-file input.json

刪除已發佈的設計:

  • az aosm nsd delete --config-file input.json

刪除已發佈的設計和發行者、成品存放區和 NSD 群組:

  • az aosm nsd delete --config-file input.json --clean

發佈前編輯組建輸出

az aosmCLI 延伸模組旨在提供發佈 Azure Operator Service Manager 設計和定義的支援。 它提供建置組塊來建立複雜的自訂設計和定義。 您可以在執行 publish 命令之前編輯命令輸出 build 的檔案,以新增更複雜的或自訂功能。

Azure 操作員服務管理員的完整 API 參考如下: Azure 混合式網路 REST API

下列各節說明在發佈之前,可用來編輯建置檔案的一些常見方式。

網路函式定義 (NFD)

  • versionStatenetworkfunctiondefinitionversions 將資源的 Preview 從 變更為 Active 。 使用中 NFDV 是不可變的,而預覽 NFDV 是可變且處於草稿狀態。
  • 針對 CNF,變更 releaseNamespacehelmMappingRuleProfile ,以變更圖表所部署的 kubernetes 命名空間。

網路服務設計 (NSD)

  • 將 Azure 基礎結構新增至您的網路服務設計 (NSD)。 將 Azure 基礎結構新增至您的專案包括:
    • 撰寫 ARM 範本以部署基礎結構。
    • 新增這些 ARM 範本的組態群組架構(CGSs)。
    • 將 類型的 ArmResourceDefinition (RET) 新增 ResourceElementTemplates 至您的 NSD。 RET 與欄位不同 type ,其外觀與 NetworkFunctionDefinition RET 相同。
    • 將基礎結構 ARM 範本新增至 artifact_manifest.bicep 檔案。
    • 編輯檔案以 configMappings 納入基礎結構範本的任何輸出作為 ResourceElementTemplates 的 NetworkFunctionDefinition 輸入。 例如:"customLocationId": "{outputparameters('infraretname').infraretname.customLocationId.value}"
    • 編輯 dependsOnProfile ResourceElementTemplates (RET) 的 NetworkFunctionDefinition ,以確保在 NF RET 之前部署基礎結構 RET。
  • versionStatenetworkservicedesignversions 將資源的 Preview 從 變更為 Active 。 使用中的 NSD 是不可變的,而預覽 NSD 是可變且處於草稿狀態。