네트워크 기능 운영자 확장 관리
이 문서에서는 AOSM(Azure Operator Service Manager) NFO(네트워크 기능 운영자) 확장의 사용자 관리에 대해 안내합니다. 이 kubernetes 클러스터 확장은 AOSM 서비스 제공 사항의 일부로 사용되며 Azure Operator Nexus 플랫폼에서 호스트되는 컨테이너 기반 워크로드를 관리하는 데 사용됩니다.
개요
이러한 명령은 NAKS 클러스터를 추가 기능 확장에 대비한 상태로 만든 후 실행되며, Azure CLI가 미리 설치되었고 대상 구독에 인증되었다고 가정합니다.
네트워크 기능 확장 만들기
Azure CLI 명령 'az k8s-extension create'를 실행하여 NFO 확장을 설치합니다.
명령
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=]
[--version]
필수 매개 변수
--cluster-name -c
- Kubernetes 클러스터의 이름입니다.
--cluster-type -t
- Arc 클러스터 또는 AKS(Azure Kubernetes Service) 관리형 클러스터 또는 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\"))))"
참조된 matchCondition은 kube-system 네임스페이스에서 승인된 Pod가 다음 레이블 중 하나 이상을 갖는 경우에만 변형됨을 의미합니다. app == "commissioning", app == "descheduler", name == "cert-exporter." 그렇지 않으면, 이들은 변형되지 않고 CNF/구성 요소/애플리케이션의 Helm 차트에 따라 원래 원본에서 계속 끌어옵니다.
- 허용되는 값: 모든 유효한 CEL 식.
- 이 매개 변수는 NF(네트워크 기능) 확장 설치 또는 업데이트 중에 설정하거나 업데이트할 수 있습니다.
- 이 조건은 CNF/구성 요소/애플리케이션이 규칙 및 namespaceSelectors에 따라 네임스페이스에 설치될 때만 적용됩니다. 해당 네임스페이스에서 더 많은 Pod가 스핀업되는 경우 이 조건이 적용됩니다.
클러스터 레지스트리
--config global.networkfunctionextension.enableClusterRegistry=
- 이 구성은 클러스터에 레지스트리를 프로비전하여 아티팩트를 로컬로 캐시합니다.
- global.networkfunctionextension.enableEarlyLoading=true가 아니면 기본값은 지연 로드 모드를 사용하도록 설정합니다.
- 허용되는 값: false, true.
- 기본값: false
--config global.networkfunctionextension.clusterRegistry.highAvailability.enabled=
- 이 구성은 클러스터 레지스트리가 사용하도록 설정된 경우 클러스터 레지스트리를 고가용성 모드로 프로비전합니다.
- 기본값은 true이며 NAKS(Nexus Azure kubernetes Service)를 사용하고 AKS 권장 사항의 Nexus 공유 볼륨은 false로 설정됩니다.
- 허용되는 값: 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
- ASE(Azure Stack Edge): managed-premium
- 기본값: nexus-shared.
--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.
참고 항목
- AOSM을 사용하여 NAKS 클러스터를 관리할 때 기본 매개 변수 값은 권장 구성으로 HA를 사용하도록 설정합니다.
- AOSM으로 AKS 클러스터를 관리하는 경우 다음 구성 옵션을 사용하여 HA를 사용하지 않도록 설정해야 합니다.
--config global.networkfunctionextension.clusterRegistry.highAvailability.enabled=false
--config global.networkfunctionextension.webhook.highAvailability.enabled=false
--config global.networkfunctionextension.clusterRegistry.storageClassName=managed-csi
네트워크 기능 확장 업데이트
Azure CLI 명령 'az k8s-extension update'를 실행하면 NFO 확장을 업데이트할 수 있습니다.
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=]
네트워크 기능 확장 삭제
Azure CLI 명령 'az k8s-extension delete'를 실행하면 NFO 확장이 삭제됩니다.
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
예제
자동 업그레이드로 네트워크 기능 확장을 만듭니다.
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
고정된 버전으로 네트워크 기능 확장을 만듭니다.
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에서 클러스터 레지스트리(기본 지연 로드 모드) 함수가 사용하도록 설정된 네트워크 기능 확장을 만듭니다.
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에서 클러스터 레지스트리(기본 지연 로드 모드) 함수가 사용하도록 설정된 네트워크 기능 확장을 만듭니다.
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
클러스터 레지스트리(조기 로딩) 함수를 사용하도록 설정하여 네트워크 기능 확장을 만듭니다.
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
테스트용 로드 함수가 사용하도록 설정된 네트워크 기능 확장을 만듭니다.
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
클러스터 레지스트리를 사용하도록 네트워크 함수 확장을 업데이트합니다.
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
네트워크 함수 확장을 업데이트하여 새 대상 버전에 도달합니다.
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