다음을 통해 공유


빠른 시작: Nginx 컨테이너를 CNF(컨테이너화된 네트워크 기능)로 게시

이 빠른 시작에서는 az aosm Azure CLI 확장을 사용하여 기본 네트워크 기능 정의를 만들고 게시하는 방법을 설명합니다. 그 목적은 게시자 AOSM(Azure Operator Service Manager) 리소스의 워크플로를 보여 주는 것입니다. 여기에 제시된 기본 개념은 사용자가 더욱 흥미로운 서비스를 빌드할 수 있도록 준비하기 위한 것입니다.

필수 조건

입력 파일 만들기

네트워크 기능 정의를 게시하기 위한 입력 파일을 만듭니다. 다음 명령을 실행하여 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 레지스트리를 사용하는 경우 az aosm nfd build 명령을 실행하기 전에 docker login을 실행하여 각 프라이빗 레지스트리에 인증해야 합니다. 이 빠른 시작에서는 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 - ACR(Azure Container Registry) 아티팩트 저장소 리소스의 이름입니다. 아직 존재하지 않는 경우 만들어집니다.
  • 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 - helm 차트에 있는 values.yaml 파일 대신 사용되는 로컬 디스크에 있는 YAML 값 파일의 파일 경로(cnf-input.jsonc에 대한 절대 또는 상대)입니다.
    • dependent_on - 이 패키지가 의존하는 Helm 패키지의 이름입니다. 종속성이 없으면 빈 배열로 둡니다.

NFD(네트워크 기능 정의) 빌드

NFD(네트워크 기능 정의)를 구성하려면 빌드 프로세스를 시작합니다.

az aosm nfd build -f input-cnf-nfd.jsonc --definition-type cnf

Az CLI AOSM 확장은 cnf-cli-output(이)라는 디렉터리를 생성합니다. 이 디렉터리에는 NFDV를 게시하고 이를 AOSM 관리 스토리지에 배포하는 데 필요한 이미지를 업로드하는 데 필요한 AOSM 리소스를 정의하는 BICEP 파일이 포함되어 있습니다. 생성된 파일을 검사하여 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

명령이 완료되면 게시자 리소스 그룹 내의 리소스를 검사하여 만들어진 구성 요소와 아티팩트를 검토합니다.

다음 단계