다음을 통해 공유


AOSM(Azure Operator Service Manager)에 CNF(컨테이너화된 네트워크 기능) 온보딩

이 방법 가이드에서 네트워크 기능 게시자 및 서비스 디자이너는 Azure CLI AOSM 확장을 사용하여 컨테이너화된 네트워크 기능을 AOSM에 온보딩하는 방법을 알아봅니다. CNF는 나중에 Azure Operator Nexus 클러스터를 포함하여 Azure Arc 연결 Kubernetes 클러스터에 배포될 수 있습니다.

온보딩은 다단계 프로세스입니다. 필수 구성 요소를 충족하면 Azure CLI AOSM 확장을 사용하여 다음을 수행합니다.

  1. Helm 차트 및 value.yaml을 기반으로 NFD(네트워크 기능 정의 그룹 및 버전)를 정의하는 BICEP 파일을 생성합니다.
  2. NFD를 게시하고 CNF 이미지와 차트를 아티팩트 저장소(AOSM 관리 ACR(Azure Container Registry))에 업로드합니다.
  3. NSD(네트워크 서비스 디자인 그룹 및 버전)를 정의하는 BICEP 파일에 게시된 NFD를 추가합니다.
  4. NSD를 게시합니다.

필수 조건

참고 항목

Helm 패키지의 helm install이 대상 Arc 연결 Kubernetes 환경에서 성공하는지 테스트하는 것이 좋습니다.

권한 구성

  • 리소스 그룹을 만들거나 기여자 역할이 있는 기존 리소스 그룹을 만들려면 이 구독에 대한 기여자 역할이 필요합니다.
  • 이미지가 포함된 원본 ACR에 대한 Reader/AcrPull 역할 할당이 필요합니다.
  • AOSM 관리 아티팩트 저장소를 포함할 구독에 대해 ContributorAcrPush 역할 할당이 필요합니다. 이러한 권한을 통해 Azure CLI AOSM 확장은 ACR에서 ACR로 직접 복사를 수행할 수 있습니다. 직접 복사는 한 ACR에서 다른 ACR로 이미지를 전송하는 가장 빠른 방법입니다.
    • 회사 정책에 따라 구독 범위 권한을 갖지 못할 수도 있습니다. az aosm nfd publishaz aosm nsd publish 명령에서 사용할 수 있는 --no-subscription-permissions 매개 변수는 AOSM 서비스에서 파생된 엄격한 범위의 권한을 사용하여 로컬 컴퓨터와의 2단계 복사를 오케스트레이션합니다. 이 2단계 복사는 속도가 느리지만 구독 범위 권한이 필요하지 않습니다.

Helm 패키지

  • 온보딩하려는 Helm 패키지는 CLI를 실행하는 컴퓨터의 로컬 스토리지에 있어야 합니다.
    • Azure CLI AOSM 확장은 기본적으로 Helm 패키지의 values.yaml 파일을 사용합니다. CLI는 대체 values.yaml을 사용하여 이 동작을 재정의하는 것을 지원합니다. 이 대체 파일은 CLI를 실행하는 컴퓨터의 로컬 스토리지에 있어야 합니다.

참고 항목

Helm 패키지에는 Helm 값에 대한 스키마가 포함되어 있고 AOSM에 온보딩할 때 사용하려는 value.yaml을 사용하여 helm template이 실행될 때 예상한 대로 Helm 패키지 템플릿을 사용하는 것이 좋습니다.

컨테이너 이미지

  • 컨테이너 이미지는 기존 ACR 또는 Docker API를 지원하는 대체 컨테이너 레지스트리에 있습니다. 컨테이너 이미지는 Helm 차트에 정의된 이미지 위치와 일치하는 구조로 원본 레지스트리에 저장되어야 합니다. 이 요구 사항은 CLI CNF 이미지 검색 및 업로드에 설명되어 있습니다.
  • az aosm 명령을 실행하기 전에 docker login 명령을 사용하여 컨테이너 이미지를 호스팅하는 비 Azure Container Registry에 로그인합니다. ACR을 사용하는 경우에는 이 단계가 필요하지 않습니다. Azure CLI AOSM 확장이 자동으로 로그인됩니다.

Helm 및 Docker 엔진

  • 호스트 컴퓨터에 Helm CLI를 설치합니다. Helm v3.8.0 이상을 사용해야 합니다.
  • 호스트 컴퓨터에 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 이상이 필요합니다.

  1. 설치된 버전과 종속 라이브러리를 보려면 az version을 실행합니다.
  2. 현재 버전의 Azure CLI로 업그레이드하려면 az upgrade를 실행합니다.

다음 명령을 사용하여 AOSM CLI 확장을 설치합니다.

az extension add --name aosm

네트워크 기능 정의 그룹 및 버전 빌드

이 단계에서는 네트워크 기능 정의 그룹 및 버전과 아티팩트 저장소를 정의하는 AOSM 리소스의 BICEP 템플릿을 사용하여 cnf-cli-output이라는 작업 디렉터리에 폴더를 만듭니다. 이러한 리소스는 궁극적으로 네트워크 서비스 디자인에 포함됩니다.

  1. CNF에 대한 Azure CLI AOSM 확장 입력 파일을 생성합니다.

    az aosm nfd generate-config --definition-type cnf --output-file <filename.jsonc>
    
  2. 이전 단계에서 생성한 입력 파일을 열고 인라인 주석을 사용하여 필요한 값을 입력합니다. 이 예에서는 가상 Contoso CNF에 대한 Az CLI AOSM 확장 입력 파일을 보여 줍니다.

    참고 항목

    Azure CLI AOSM 확장은 기본적으로 입력 values.yaml에 기본값 없이 필수 매개 변수만 노출합니다. expose_all_parameterstrue로 설정하여 NFDV(네트워크 기능 정의 버전) 및 CGS(구성 그룹 스키마)의 모든 Helm 값을 노출할 수 있습니다. 자세한 내용은 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": "",
          }
      ]
    }
    
  3. 다음 명령을 실행하여 네트워크 기능 정의 그룹 및 버전 BICEP 템플릿을 빌드합니다.

az aosm nfd build --definition-type cnf --config-file <filename.jsonc>

폴더와 파일 구조를 검토하고 필요한 경우 수정할 수 있습니다.

네트워크 기능 정의 그룹 및 버전 게시

이 단계에서는 네트워크 기능 정의와 네트워크 기능의 컨테이너 이미지를 저장하는 데 사용되는 아티팩트 저장소를 정의하는 AOSM 리소스를 만듭니다. 또한 원본 ACR에서 직접 복사하여 이미지와 차트를 아티팩트 저장소에 업로드합니다. 그렇지 않고 구독 범위 ContributorAcrPush 역할이 없는 경우에는 Docker 이미지를 로컬로 다시 태그 지정하고 AOSM 서비스에서 생성된 범위가 엄격한 자격 증명을 사용하여 아티팩트 저장소에 업로드합니다.

  1. 다음 명령을 실행하여 네트워크 기능 정의 그룹 및 버전을 게시합니다. 구독 범위 ContributorAcrPush 역할이 없는 경우 명령에 --no-subscription-permissions를 포함합니다.

참고 항목

Windows를 사용하는 경우 게시 단계 중에 Docker Desktop이 실행되고 있어야 합니다.

az aosm nfd publish --build-output-folder cnf-cli-output --definition-type cnf

네트워크 서비스 디자인 그룹 및 버전 빌드

이 섹션에서는 작업 디렉터리에 nsd-cli-output이라는 폴더를 만듭니다. 이 폴더에는 네트워크 서비스 디자인 그룹 및 버전을 정의하는 AOSM 리소스의 BICEP 템플릿이 포함되어 있습니다. 이 네트워크 서비스 디자인은 이전 섹션에서 온보딩한 네트워크 기능을 배포할 사이트 네트워크 서비스 리소스에 사용되는 템플릿입니다.

  1. Azure CLI AOSM 확장 NSD 입력 파일을 생성합니다.

    az aosm nsd generate-config --output-file <nsd-output-filename.jsonc>
    
  2. 이전 단계에서 생성한 입력 파일을 열고 인라인 주석을 사용하여 필요한 값을 입력합니다. 생성된 입력 파일에는 ArmTemplate 형식의 추가 resource_element_type이 포함되어 있습니다. 이는 CNF를 온보딩할 때 필요하지 않으며 삭제할 수 있습니다. 결과는 다음 예제와 비슷합니다. 이 예에서는 Arc 연결 Nexus Kubernetes 클러스터에 가상 Contoso CNF를 배포하는 데 사용할 수 있는 가상 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가 올바르게 온보딩되었는지 유효성을 검사하기 때문입니다.

  3. 다음 명령을 실행하여 네트워크 서비스 디자인 그룹 및 버전 BICEP 템플릿을 빌드합니다.

az aosm nsd build --config-file <nsd-output-filename.jsonc>

폴더와 파일 구조를 검토하고 필요한 경우 수정할 수 있습니다.

네트워크 서비스 디자인 그룹 및 버전 게시

이 단계에서는 네트워크 서비스 디자인 그룹 및 버전을 정의하는 AOSM 리소스를 만듭니다. 또한 NSD에 필요한 아티팩트를 아티팩트 저장소(네트워크 기능 ARM 템플릿)에 업로드합니다.

  1. 다음 명령을 실행하여 네트워크 서비스 디자인 그룹 및 버전을 게시합니다. 구독 범위 ContributorAcrPush 역할이 없는 경우 명령에 --no-subscription-permissions를 포함합니다.
az aosm nsd publish --build-output-folder nsd-cli-output

이제 AOSM 게시자 리소스의 전체 집합이 준비되었으며 연산자 흐름을 수행할 준비가 되었습니다.

다음 단계