다음을 통해 공유


NFO 확장 관리

이 문서에서는 Azure Operator Service Manager에 대한 NFO(네트워크 함수 연산자) 확장의 사용자 관리를 안내합니다. 이 Kubernetes 클러스터 확장을 사용하여 Azure 운영자 Nexus 플랫폼에서 호스트하는 컨테이너 기반 워크로드를 관리합니다.

NAKS(Nexus Azure Kubernetes Service) 클러스터를 추가 기능 확장에 대해 준비한 후 이 문서의 명령을 실행합니다. 이 명령은 Azure CLI를 설치하고 대상 구독에 인증을 설치하기 전에 가정합니다.

NFO 확장 만들기

NFO 확장을 만들려면 Azure CLI 명령을 az k8s-extension create실행합니다.

명령

az k8s-extension create --cluster-name
                        --cluster-type {connectedClusters}
                        --extension-type {Microsoft.Azure.HybridNetwork}
                        --name
                        --resource-group
                        --scope {cluster}
                        --release-namespace {azurehybridnetwork}
                        --release-train {preview, stable}
                        --config Microsoft.CustomLocation.ServiceAccount=azurehybridnetwork-networkfunction-operator
                        [--auto-upgrade {false, true}]
                        [--config global.networkfunctionextension.enableClusterRegistry={false, true}]
                        [--config global.networkfunctionextension.enableLocalRegistry={false, true}]
                        [--config global.networkfunctionextension.enableEarlyLoading={false,true}]
                        [--config global.networkfunctionextension.clusterRegistry.highAvailability.enabled={true, false}]
                        [--config global.networkfunctionextension.clusterRegistry.autoScaling.enabled={true, false}]
                        [--config global.networkfunctionextension.webhook.highAvailability.enabled={true, false}]
                        [--config global.networkfunctionextension.webhook.autoScaling.enabled={true, false}]
                        [--config global.networkfunctionextension.clusterRegistry.storageClassName=]
                        [--config global.networkfunctionextension.clusterRegistry.storageSize=]
                        [--config global.networkfunctionextension.webhook.pod.mutation.matchConditionExpression=]
                        [--config global.networkfunctionextension.clusterRegistry.clusterRegistryGCCadence=]
                        [--config global.networkfunctionextension.clusterRegistry.clusterRegistryGCThreshold=]
                        [--config global.networkfunctionextension.clusterRegistry.registryService.scale={"small", "medium", "large"}]
                        [--version]

필수 매개 변수

--cluster-name -c

  • Kubernetes 클러스터의 이름입니다.

--cluster-type -t

  • Azure Arc 클러스터, AKS(Azure Kubernetes Service) 관리형 클러스터, Azure Arc 어플라이언스 또는 provisionedClusters.
  • 허용되는 값: connectedClusters.

--extension-type

  • 확장 형식의 이름입니다.
  • 허용되는 값: Microsoft.Azure.HybridNetwork.

--name -n

  • 확장 인스턴스의 이름입니다.

--resource-group -g

  • 리소스 그룹의 이름입니다. az configure --defaults group=groupname사용하여 기본 그룹을 구성할 수 있습니다.

--config Microsoft.CustomLocation.ServiceAccount=azurehybridnetwork-networkfunction-operator

  • 이 구성을 제공해야 합니다.

선택적 매개 변수

--auto-upgrade

  • 확장 인스턴스의 부 버전을 자동으로 업그레이드합니다.
  • 허용되는 값: false, . true
  • 기본값은 true입니다.

--release-train

  • 확장 형식에 대한 릴리스 트레인을 지정합니다.
  • 허용되는 값: preview, . stable
  • 기본값은 stable입니다.

--version

  • 사용하도록 설정되지 않은 경우 --auto-upgrade-minor-version 확장 인스턴스에 설치할 명시적 버전을 지정합니다.

선택적 기능별 구성

테스트용 로드

--config global.networkfunctionextension.enableLocalRegistry=

  • 이 구성을 사용하면 하드웨어 드라이브를 통해 아티팩트가 에지로 배달될 수 있습니다.
  • 허용되는 값: false, . true
  • 기본값은 false입니다.

Pod 변경 웹후크

--config global.networkfunctionextension.webhook.pod.mutation.matchConditionExpression=

  • 이 구성은 선택적 매개 변수입니다. 해당 릴리스 네임스페이스에 컨테이너 네트워크 기능(CNF)이 설치된 경우에만 실행됩니다.

  • 이 구성은 규칙 및 namespaceSelectors 위에 더 세분화된 제어를 설정합니다.

  • 기본값:

    "((object.metadata.namespace != \"kube-system\") ||  (object.metadata.namespace == \"kube-system\" && has(object.metadata.labels) && (has(object.metadata.labels.app) && (object.metadata.labels.app == \"commissioning\") || (has(object.metadata.labels.name) && object.metadata.labels.name == \"cert-exporter\") || (has(object.metadata.labels.app) && object.metadata.labels.app == \"descheduler\"))))"
    

    참조된 일치 조건은 kube-system 네임스페이스에서 수락되는 Pod가 다음 레이블 중 적어도 하나, 즉 app == "commissioning", app == "descheduler", name == "cert-exporter"이 있을 때에만 변형됨을 의미합니다. 그렇지 않으면 CNF, 구성 요소 또는 애플리케이션의 Helm 차트에 따라 변형되지 않으며, 원본 소스에서 계속 끌어옵니다.

  • 허용되는 값: 유효한 CEL(공용 식 언어) 식입니다.

  • NFO 확장을 설치하거나 업데이트하는 동안 이 매개 변수를 설정하거나 업데이트할 수 있습니다.

  • 이 조건은 규칙에 따라 CNF, 구성 요소 또는 애플리케이션을 네임스페이스에 설치하는 경우에만 적용됩니다 namespaceSelectors. 해당 네임스페이스에 더 많은 Pod를 만드는 경우 이 조건이 적용됩니다.

클러스터 레지스트리

--config global.networkfunctionextension.enableClusterRegistry=

  • 이 구성은 클러스터에 레지스트리를 프로비전하여 아티팩트를 로컬로 캐시합니다.
  • 기본값은 global.networkfunctionextension.enableEarlyLoading=true가 적용되지 않는 한 지연 로드 모드를 사용합니다.
  • 허용되는 값: false, . true
  • 기본값은 false입니다.

--config global.networkfunctionextension.clusterRegistry.highAvailability.enabled=

  • 이 구성은 클러스터 레지스트리를 사용하는 경우 HA(고가용성) 모드로 클러스터 레지스트리를 프로비전합니다.
  • 이 구성은 AKS 권장 사항의 NAKS nexus-shared 볼륨을 false값이 설정된 경우 이용합니다.
  • 레지스트리 Pod 복제본 수는 최소 3 및 최대 5입니다.
  • 허용되는 값: true, . false
  • 기본값은 true입니다.

--config global.networkfunctionextension.clusterRegistry.autoScaling.enabled=

  • 이 구성은 클러스터 레지스트리 Pod를 수평 자동 확장으로 프로비저닝합니다.
  • 허용되는 값: true, . false
  • 기본값은 true입니다.

--config global.networkfunctionextension.webhook.highAvailability.enabled=

  • 이 구성은 고가용성을 위해 웹후크의 여러 복제본을 프로비전합니다.
  • 허용되는 값: true, . false
  • 기본값은 true입니다.

--config global.networkfunctionextension.webhook.autoScaling.enabled=

  • 이 구성은 수평 자동 크기 조정 기능을 갖춘 웹후크 Pod를 프로비전합니다.
  • 허용되는 값: true, . false
  • 기본값은 true입니다.

--config global.networkfunctionextension.enableEarlyLoading=

  • 이 구성을 사용하면 Helm 설치 또는 업그레이드 전에 클러스터 레지스트리에 아티팩트 초기 로드를 수행할 수 있습니다.
  • global.networkfunctionextension.enableClusterRegistry=true일 때만 이 구성을 사용하도록 설정할 수 있습니다.
  • 허용되는 값: false, . true
  • 기본값은 false입니다.

--config global.networkfunctionextension.clusterRegistry.storageClassName=

  • 이 구성은 다음과 같은 경우에 global.networkfunctionextension.enableClusterRegistry=true제공해야 합니다.
  • networkfunctionextension 는 이 스토리지 클래스의 로컬 캐시 아티팩트로 PVC(영구 볼륨 클레임)를 프로비전합니다.
  • 플랫폼별 값:
    • AKS: managed-csi
    • NAKS(기본값): nexus-shared
    • NAKS (비 HA): nexus-volume
    • Azure Stack Edge: managed-premium
  • 기본값은 nexus-shared입니다.

메모

  • Azure Operator Service Manager를 사용하여 NAKS 클러스터를 관리하는 경우 기본 매개 변수 값은 HA를 권장 구성으로 사용하도록 설정합니다.
  • Azure Operator Service Manager를 사용하여 AKS 클러스터를 관리하는 경우 다음 구성 옵션을 사용하여 HA를 사용하지 않도록 설정해야 합니다.
   --config global.networkfunctionextension.clusterRegistry.highAvailability.enabled=false
   --config global.networkfunctionextension.webhook.highAvailability.enabled=false
   --config global.networkfunctionextension.clusterRegistry.storageClassName=managed-csi

--config global.networkfunctionextension.clusterRegistry.storageSize=

  • 이 구성은 다음과 같은 경우에 global.networkfunctionextension.enableClusterRegistry=true제공해야 합니다.
  • 이 구성은 클러스터 레지스트리에 대해 예약하는 크기를 설정합니다.
  • 이 구성에서는 크기 조정을 위해 단위를 Gi 및 Ti로 사용합니다.
  • 기본값: 100Gi

--config global.networkfunctionextension.clusterRegistry.clusterRegistryGCCadence=

  • 이 구성은 표준 Unix Crontab 형식으로 일정으로 제공해야 합니다.
  • 빈 문자열로 지정된 이 구성은 가비지 수집 실행을 옵트아웃할 수 있도록 예약된 작업을 사용하지 않도록 설정합니다.
  • 기본값은 0 0 * * *입니다. 매일 한 번 작업을 실행합니다.

--config global.networkfunctionextension.clusterRegistry.clusterRegistryGCThreshold=

  • 이 구성은 클러스터 레지스트리에 대한 가비지 수집 프로세스를 트리거할 백분율 임계값을 지정합니다.
  • 이 구성은 클러스터 레지스트리 사용량이 이 값을 초과할 때 가비지 수집 프로세스를 트리거합니다.
  • 기본값은 0입니다.

--config global.networkfunctionextension.clusterRegistry.registryService.scale=

  • 이 구성은 클러스터 레지스트리의 CPU 및 메모리 리소스를 미리 정의된 크기 조정 옵션으로 설정합니다.

  • 허용되는 값: small, medium. large

  • 기본값은 medium입니다.

  • 다음은 세 가지 척도에 대한 레지스트리 리소스 사양입니다.

        - requests:
          - small: cpu: 100m, memory: 250Mi
          - medium: cpu: 250m, memory: 500Mi
          - large: cpu: 500m, memory: 1Gi
        - limits:
          - small: cpu: 100m, memory: 2Gi
          - medium: cpu: 500m, memory: 2Gi
          - large: cpu: 1, memory: 4Gi
    

NFO 확장 업데이트

NFO 확장을 업데이트하려면 Azure CLI 명령을 az k8s-extension update실행합니다.

az k8s-extension update --resource-group
                        --cluster-name
                        --cluster-type {connectedClusters}
                        --extension-type {Microsoft.Azure.HybridNetwork}
                        --name
                        --release-namespace {azurehybridnetwork}
                        --release-train {preview, stable}
                        --config Microsoft.CustomLocation.ServiceAccount=azurehybridnetwork-networkfunction-operator
                        [--version] {version-target}
                        [--config global.networkfunctionextension.enableClusterRegistry={false, true}]
                        [--config global.networkfunctionextension.enableLocalRegistry={false, true}]
                        [--config global.networkfunctionextension.enableEarlyLoading={false,true}]
                        [--config global.networkfunctionextension.clusterRegistry.highAvailability.enabled={true, false}]
                        [--config global.networkfunctionextension.clusterRegistry.autoScaling.enabled={true, false}]
                        [--config global.networkfunctionextension.webhook.highAvailability.enabled={true, false}]
                        [--config global.networkfunctionextension.webhook.autoScaling.enabled={true, false}]
                        [--config global.networkfunctionextension.clusterRegistry.storageClassName=]
                        [--config global.networkfunctionextension.clusterRegistry.storageSize=]
                        [--config global.networkfunctionextension.webhook.pod.mutation.matchConditionExpression=]
                        [--config global.networkfunctionextension.clusterRegistry.clusterRegistryGCCadence=]
                        [--config global.networkfunctionextension.clusterRegistry.clusterRegistryGCThreshold=]

NFO 확장 삭제

NFO 확장을 삭제하려면 Azure CLI 명령을 az k8s-extension delete실행합니다.

az k8s-extension delete --resource-group
                        --cluster-name
                        --cluster-type {connectedClusters}
                        --extension-type {Microsoft.Azure.HybridNetwork}
                        --name
                        --release-namespace {azurehybridnetwork}
                        --release-train {preview, stable}
                        --config Microsoft.CustomLocation.ServiceAccount=azurehybridnetwork-networkfunction-operator

예제

자동 업그레이드를 사용하여 NFO 확장을 만듭니다.

az k8s-extension create --resource-group myresourcegroup --cluster-name mycluster --name myextension --cluster-type connectedClusters --extension-type Microsoft.Azure.HybridNetwork --scope cluster --config Microsoft.CustomLocation.ServiceAccount=azurehybridnetwork-networkfunction-operator --release-namespace azurehybridnetwork

고정된 버전을 사용하여 NFO 확장을 만듭니다.

az k8s-extension create --resource-group myresourcegroup --cluster-name mycluster --name myextension --cluster-type connectedClusters --extension-type Microsoft.Azure.HybridNetwork --auto-upgrade-minor-version false --scope cluster --config Microsoft.CustomLocation.ServiceAccount=azurehybridnetwork-networkfunction-operator --release-namespace azurehybridnetwork --version 1.0.2711-7

NAKS에서 클러스터 레지스트리(기본 지연 로드 모드) 기능을 사용하도록 설정된 NFO 확장을 만듭니다.

az k8s-extension create --resource-group myresourcegroup --cluster-name mycluster --name myextension --cluster-type connectedClusters --extension-type Microsoft.Azure.HybridNetwork --scope cluster --config Microsoft.CustomLocation.ServiceAccount=azurehybridnetwork-networkfunction-operator --release-namespace azurehybridnetwork --config global.networkfunctionextension.enableClusterRegistry=true --config global.networkfunctionextension.clusterRegistry.storageSize=100Gi

AKS에서 클러스터 레지스트리(기본 지연 로드 모드) 기능을 사용하도록 설정된 NFO 확장을 만듭니다.

az k8s-extension create --resource-group myresourcegroup --cluster-name mycluster --name myextension --cluster-type connectedClusters --extension-type Microsoft.Azure.HybridNetwork --scope cluster --config Microsoft.CustomLocation.ServiceAccount=azurehybridnetwork-networkfunction-operator --release-namespace azurehybridnetwork --config global.networkfunctionextension.enableClusterRegistry=true --config global.networkfunctionextension.clusterRegistry.highAvailability.enabled=false --config global.networkfunctionextension.clusterRegistry.storageClassName=managed-csi --config global.networkfunctionextension.clusterRegistry.storageSize=100Gi

클러스터 레지스트리(초기 로드) 기능을 사용하도록 설정된 NFO 확장을 만듭니다.

az k8s-extension create --resource-group myresourcegroup --cluster-name mycluster --name myextension --cluster-type connectedClusters --extension-type Microsoft.Azure.HybridNetwork --scope cluster --config Microsoft.CustomLocation.ServiceAccount=azurehybridnetwork-networkfunction-operator --release-namespace azurehybridnetwork --config global.networkfunctionextension.enableClusterRegistry=true --config global.networkfunctionextension.enableEarlyLoading=true --config global.networkfunctionextension.clusterRegistry.storageClassName=managed-csi --config global.networkfunctionextension.clusterRegistry.storageSize=100Gi

사이드 로드 기능을 사용하도록 설정된 NFO 확장을 만듭니다.

az k8s-extension create --resource-group myresourcegroup --cluster-name mycluster --name myextension --cluster-type connectedClusters --extension-type Microsoft.Azure.HybridNetwork --scope cluster --config Microsoft.CustomLocation.ServiceAccount=azurehybridnetwork-networkfunction-operator --release-namespace azurehybridnetwork --config global.networkfunctionextension.enableLocalRegistry=true

클러스터 레지스트리를 사용하도록 NFO 확장을 업데이트합니다.

az k8s-extension update --resource-group naks-1-rg --cluster-name naks-1  --cluster-type connectedClusters --name networkfunction-operator  --extension-type Microsoft.Azure.HybridNetwork --release-namespace azurehybridnetwork --config networkFunctionExtension.EnableManagedInClusterEdgeRegistry=true –-config networkFunctionExtension.EdgeRegistrySizeInGB=1024

새 대상 버전에 도달하도록 NFO 확장을 업데이트합니다.

az k8s-extension update --resource-group naks-1-rg --cluster-name naks-1  --cluster-type connectedClusters --name networkfunction-operator  --extension-type Microsoft.Azure.HybridNetwork --release-namespace azurehybridnetwork --version X.X.XXXX-YYY