이 방법 가이드에서 네트워크 함수 게시자 및 서비스 디자이너는 Azure CLI AOSM 확장을 사용하여 컨테이너화된 네트워크 함수를 AOSM에 온보딩하는 방법을 알아봅니다. CNF는 나중에 Azure Arc에 연결된 Kubernetes 클러스터, Azure 옵레이터 넥서스 클러스터를 포함하여 배포할 수 있습니다.
온보딩은 다단계 프로세스입니다. 필수 구성 요소를 충족하면 Azure CLI AOSM 확장을 사용하여 다음을 수행합니다.
- Helm 차트 및 values.yaml을 기반으로 NFD(네트워크 함수 정의 그룹 및 버전)를 정의하는 Bicep 파일을 생성합니다.
- NFD를 게시하고 CNF 이미지 및 차트를 아티팩트 저장소(AOSM 관리형 ACR(Azure Container Registry))에 업로드합니다.
- 게시된 NFD를 NSD(네트워크 서비스 디자인 그룹 및 버전)를 정의하는 Bicep 파일에 추가합니다.
- NSD를 게시합니다.
필수 조건
- Azure 구독에서 AOSM 사용으로 설정했습니다.
- CNF가 Azure Operator Nexus에서 실행되도록 의도된 경우 Azure Operator Nexus 인스턴스에 액세스할 수 있으며 워크로드 배포를 위한 필수 구성 요소를 완료했습니다.
비고
헬름 패키지가 대상 Arc 연결 Kubernetes 환경에서 성공하는지를 테스트하는 것이 강력히 권고됩니다.
권한 구성
- 리소스 그룹 또는 기여자 역할이 있는 기존 리소스 그룹을 만들려면 구독에 대한 기여자 역할이 필요합니다.
- 이미지를 포함하는 원본 ACR에 대한 역할 할당이 필요합니다
Reader/AcrPull. - 구독에 포함될 AOSM 관리 아티팩트 저장소에 대해
Contributor및AcrPush역할 할당이 필요합니다. 이러한 권한을 사용하면 Azure CLI AOSM 확장에서 직접 ACR-ACR 복사를 수행할 수 있습니다. 직접 복사는 한 ACR에서 다른 ACR로 이미지를 전송하는 가장 빠른 방법입니다.- 회사 정책으로 인해 구독 범위 사용 권한이 없는 것일 수 있습니다. 명령
--no-subscription-permissions와az aosm nfd publish에서 사용할 수 있는az aosm nsd publish매개변수는 AOSM 서비스에서 파생된 엄격한 범위의 권한을 사용하여 로컬 컴퓨터로의 2단계 복사를 조정합니다. 이 2단계 복사는 느리지만 구독 범위 권한이 필요하지 않습니다.
- 회사 정책으로 인해 구독 범위 사용 권한이 없는 것일 수 있습니다. 명령
Helm 패키지
- 온보딩하려는 Helm 패키지는 CLI를 실행하는 컴퓨터의 로컬 스토리지에 있어야 합니다.
- Azure CLI AOSM 확장은 기본적으로 Helm 패키지의 파일을 사용합니다
values.yaml. CLI는 대체values.yaml방법으로 이 동작을 재정의할 수 있습니다. 이 대체 파일은 CLI를 실행하는 컴퓨터의 로컬 스토리지에 있어야 합니다.
- Azure CLI AOSM 확장은 기본적으로 Helm 패키지의 파일을 사용합니다
비고
Helm 패키지에는 helm 값에 대한 스키마가 포함되는 것이 바람직하며, AOSM에 온보딩할 때 사용하려는 values.yaml을 사용하여 helm template를 실행할 때 Helm 패키지 템플릿이 예상대로 작동하는 것이 강력히 권장됩니다.
컨테이너 이미지
- 컨테이너 이미지는 기존 ACR 또는 Docker API를 지원하는 대체 컨테이너 레지스트리에 있습니다. 컨테이너 이미지는 Helm 차트에 정의된 이미지 위치와 일치하는 구조로 원본 레지스트리에 저장되어야 합니다. 이 요구 사항은 CLI CNF 이미지 검색 및 업로드에 설명되어 있습니다.
-
docker login명령을 사용하여 컨테이너 이미지를 호스팅하는 비 Azure 컨테이너 레지스트리에 로그인한 후az aosm명령을 실행합니다. ACR을 사용하는 경우 이 단계가 필요하지 않습니다. Azure CLI AOSM 확장은 자동으로 로그인됩니다.
Helm 및 Docker 엔진
Azure CLI 다운로드 및 설치
Azure CLI를 로컬로 설치하려면 Azure CLI 설치 방법을 참조하세요.
Azure CLI에 로그인하려면 az login 명령을 사용하고 터미널에 표시되는 프롬프트를 완료하여 인증을 완료합니다. 더 많은 로그인 옵션을 보려면 Azure CLI로 로그인을 참조하세요.
비고
Windows 또는 macOS에서 실행하는 경우 Docker 컨테이너에서 Azure CLI를 실행하는 것이 좋습니다. 자세한 내용은 Docker 컨테이너에서 Azure CLI를 실행하는 방법을 참조하세요. Azure Cloud Shell에서 Bash 환경을 사용할 수도 있습니다. 자세한 내용은 Azure Cloud Shell에서 Bash 환경을 사용하려면 Cloud Shell 시작을 참조하세요.
AOSM CLI 확장 설치
Az CLI AOSM 확장에는 Azure CLI 버전 2.54.0 이상이 필요합니다.
- 설치된 버전과 종속 라이브러리를 보려면
az version을 실행합니다. - 현재 버전의 Azure CLI로 업그레이드하려면
az upgrade를 실행합니다.
다음 명령을 사용하여 AOSM CLI 확장을 설치합니다.
az extension add --name aosm
네트워크 함수 정의 그룹 및 버전 빌드
이 단계에서는 네트워크 함수 정의 그룹 및 버전, 아티팩트 저장소를 정의하는 AOSM 리소스의 Bicep 파일이 포함된 cnf-cli-output라는 이름의 작업 디렉토리에 폴더가 생성됩니다. 이러한 리소스는 궁극적으로 네트워크 서비스 디자인에 포함됩니다.
CNF에 대한 Azure CLI AOSM 확장 입력 파일을 생성합니다.
az aosm nfd generate-config --definition-type cnf --output-file <filename.jsonc>이전 단계에서 생성한 입력 파일을 열고 인라인 주석을 사용하여 필요한 값을 입력합니다. 이 예제에서는 가상의 Contoso CNF에 대한 Az CLI AOSM 확장 입력 파일을 보여줍니다.
비고
Azure CLI AOSM 확장은 기본적으로 입력
values.yaml에 기본값이 없는 필수 매개 변수만 노출합니다. 네트워크 함수 정의 버전(NFDV) 및 구성 그룹 스키마(CGS)에서 모든 Helm 값을 노출하기 위해서는expose_all_parameters를true로 설정할 수 있습니다. 자세한 내용은 AOSM CLI 확장을 사용하여 매개 변수 노출을 참조하세요.{ // Azure location to use when creating resources e.g uksouth "location": "eastus", // Name of the Publisher resource you want your definition published to. // Will be created if it does not exist. "publisher_name": "contoso", // Resource group for the Publisher resource. // You should create this before running the publish command "publisher_resource_group_name": "contoso", // Name of the ACR Artifact Store resource. // Will be created if it does not exist. "acr_artifact_store_name": "contoso-artifact-store", // Name of NF definition. "nf_name": "contoso-cnf-nfd", // Version of the NF definition in 1.1.1 format (three integers separated by dots). "version": "1.0.0", // If set to true, all NFD configuration parameters are made available to the designer, including optional parameters and those with defaults. // If not set or set to false, only required parameters without defaults will be exposed. "expose_all_parameters": false, // 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": ["contoso.azuercr.io/contoso", "docker.io"], // List of Helm packages to be included in the CNF. "helm_packages": [ { // The name of the Helm package. "name": "contoso-helm-package", // The file path to the helm chart on the local disk, relative to the directory from which the command is run. // Accepts .tgz, .tar or .tar.gz, or an unpacked directory. Use Linux slash (/) file separator even if running on Windows. "path_to_chart": "/home/cnf-onboard/contoso-cnf-helm-chart-0-1-0.tgz", // The file path (absolute or relative to this configuration file) of YAML values file on the local disk which will be used instead of the values.yaml file present in the helm chart. // Accepts .yaml or .yml. Use Linux slash (/) file separator even if running on Windows. "default_values": "", } ] }다음 명령을 실행하여 네트워크 함수 정의 그룹 및 버전 Bicep 파일을 빌드합니다.
az aosm nfd build --definition-type cnf --config-file <filename.jsonc>
폴더 및 파일 구조를 검토하고 필요한 경우 수정할 수 있습니다.
네트워크 함수 정의 그룹 및 버전 게시
이 단계에서는 네트워크 함수 정의 및 네트워크 함수의 컨테이너 이미지를 저장하는 데 사용할 아티팩트 저장소를 정의하는 AOSM 리소스를 만듭니다. 또한 원본 ACR에서 이미지를 직접 복사하여 아티팩트 저장소에 업로드하거나, 구독 범위 및 Contributor 및 AcrPush 역할이 없는 경우에는 Docker 이미지를 로컬에서 다시 태깅하여 AOSM 서비스에서 생성된 엄격한 범위의 자격 증명을 사용하여 아티팩트 저장소에 업로드합니다.
- 다음 명령을 실행하여 네트워크 함수 정의 그룹 및 버전을 게시합니다. 구독 범위
Contributor및AcrPush역할이 없는 경우 명령에--no-subscription-permissions를 포함하십시오.
비고
Windows를 사용하는 경우 게시 단계 중에 Docker Desktop이 실행되고 있어야 합니다.
az aosm nfd publish --build-output-folder cnf-cli-output --definition-type cnf
네트워크 서비스 디자인 그룹 및 버전 빌드
이 섹션에서는 작업 디렉터리에 라는 nsd-cli-output폴더를 만듭니다. 이 폴더에는 네트워크 서비스 디자인 그룹 및 버전을 정의하는 AOSM 리소스의 Bicep 파일이 포함되어 있습니다. 이 네트워크 서비스 디자인은 이전 섹션에서 온보딩한 네트워크 함수를 배포하는 사이트 네트워크 서비스 리소스에 사용되는 템플릿입니다.
Azure CLI AOSM 확장 NSD 입력 파일을 생성합니다.
az aosm nsd generate-config --output-file <nsd-output-filename.jsonc>이전 단계에서 생성한 입력 파일을 열고 인라인 주석을 사용하여 필요한 값을 입력합니다. 생성된 입력 파일에는 추가
resource_element_type형식ArmTemplate이 포함됩니다. CNF를 온보딩할 때는 필요하지 않습니다. 삭제할 수 있습니다. 결과는 다음 예제와 비슷합니다. 이 예제에서는 가상의 Contoso CNF를 Arc 연결 Nexus Kubernetes 클러스터에 배포하는 데 사용할 수 있는 가상의 Contoso NSD에 대한 Az CLI AOSM 확장 입력 파일을 보여 줍니다.{ // Azure location to use when creating resources e.g uksouth "location": "eastus", // Name of the Publisher resource you want your definition published to. // Will be created if it does not exist. "publisher_name": "contoso", // Resource group for the Publisher resource. // Will be created if it does not exist. "publisher_resource_group_name": "contoso", // Name of the ACR Artifact Store resource. // Will be created if it does not exist. "acr_artifact_store_name": "contoso-artifact-store", // Network Service Design (NSD) name. This is the collection of Network Service Design Versions. Will be created if it does not exist. "nsd_name": "contoso-nsd", // Version of the NSD to be created. This should be in the format A.B.C "nsd_version": "1.0.0", // Optional. Description of the Network Service Design Version (NSDV). "nsdv_description": "An NSD that deploys the onboarded contoso-cnf NFD", // List of Resource Element Templates (RETs). // There must be at least one NF RET. // ArmTemplate RETs are optional. Delete if not required. "resource_element_templates": [ { // Type of Resource Element. Either NF or ArmTemplate "resource_element_type": "NF", "properties": { // The name of the existing publisher for the NSD. "publisher": "contoso", // The resource group that the publisher is hosted in. "publisher_resource_group": "contoso", // The name of the existing Network Function Definition Group to deploy using this NSD. // This will be the same as the NF name if you published your NFDV using the CLI. "name": "contoso-cnf-nfd", // The version of the existing Network Function Definition to base this NSD on. // This NSD will be able to deploy any NFDV with deployment parameters compatible with this version. "version": "1.0.0", // The region that the NFDV is published to. "publisher_offering_location": "eastus", // Type of Network Function. Valid values are 'cnf' or 'vnf'. "type": "cnf" } } ] }비고
리소스 요소 템플릿 섹션은 NSD에 포함되는 NFD를 정의합니다. 속성은
az aosm nfd build명령에 전달된 입력 파일에 사용되는 속성과 일치해야 합니다. 이는 Azure CLI AOSM 확장이 NSD를 빌드할 때 NFD가 올바르게 온보딩되었는지 유효성을 검사하기 때문입니다.다음 명령을 실행하여 네트워크 서비스 디자인 그룹 및 버전 Bicep 파일을 빌드합니다.
az aosm nsd build --config-file <nsd-output-filename.jsonc>
폴더 및 파일 구조를 검토하고 필요한 경우 수정할 수 있습니다.
네트워크 서비스 디자인 그룹 및 버전 게시
이 단계에서는 네트워크 서비스 디자인 그룹 및 버전을 정의하는 AOSM 리소스를 만듭니다. 또한 NSD에 필요한 아티팩트가 아티팩트 저장소(네트워크 함수 ARM 템플릿)에 업로드됩니다.
- 다음 명령을 실행하여 네트워크 서비스 디자인 그룹 및 버전을 게시합니다. 구독 범위
Contributor및AcrPush역할이 없는 경우 명령에--no-subscription-permissions를 포함하십시오.
az aosm nsd publish --build-output-folder nsd-cli-output
이제 AOSM 게시자 리소스가 모두 준비되었으며, 운영자 작업 흐름을 수행할 준비가 되었습니다.