Управление расширением NFO

В этой статье описывается управление пользователем расширения оператора сетевой функции (NFO) для Azure Operator Service Manager. Это расширение кластера Kubernetes используется для управления контейнерно-ориентированными рабочими нагрузками, которые размещаются платформой Azure Operator Nexus.

Перед тем как выполнять команды, приведенные в этой статье, подготовьте кластер Nexus Azure Kubernetes Service (NAKS) для подключения расширения. Перед использованием команд необходимо предварительно установить Azure CLI и провести аутентификацию в целевой подписке.

Создание расширения NFO

Чтобы создать расширение NFO, выполните команду az k8s-extension createAzure CLI.

Команда

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, управляемые кластеры Службы Azure Kubernetes (AKS), устройства 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 пространстве имен, мутируются только в том случае, если они имеют по крайней мере одну из следующих меток: app == "commissioning", app == "descheduler" или name == "cert-exporter". В противном случае они не мутируются и продолжают извлекаться из исходного источника в соответствии с диаграммой Helm CNF, компонента или приложения.

  • Принятое значение: любое допустимое выражение языка CEL.

  • Этот параметр можно задать или обновить во время установки или обновления расширения NFO.

  • Это условие возникает только при установке CNF, компонента или приложения в пространство имен в соответствии с правилами и namespaceSelectors. Если вы создаёте больше pod в этом пространстве имён, применяется это условие.

Реестр кластеров

--config global.networkfunctionextension.enableClusterRegistry=

  • Эта конфигурация подготавливает реестр в кластере для локального кэширования артефактов.
  • Значения по умолчанию включают режим отложенной загрузки, если только не global.networkfunctionextension.enableEarlyLoading=true.
  • Допустимые значения: false, true.
  • Значение по умолчанию: false.

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

  • Эта конфигурация подготавливает реестр кластера в режиме высокой доступности (HA), если реестр кластера включен.
  • Эта конфигурация использует том NAKS для рекомендации AKS 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 выделяет постоянный запрос тома (ПВХ) для артефактов из локального кэша в этом классе хранилища.
  • Значения для конкретной платформы:
    • AKS: managed-csi
    • NAKS (по умолчанию): nexus-shared
    • NAKS (non-HA): nexus-volume
    • Azure Stack Edge: managed-premium
  • Значение по умолчанию: nexus-shared.

Примечание.

  • При управлении кластером NAKS с помощью Диспетчера служб оператора Azure значения параметров по умолчанию включают HA в качестве рекомендуемой конфигурации.
  • При управлении кластером AKS с помощью Azure Operator Service Manager необходимо отключить 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.
  • Эта конфигурация задает размер, который мы резервируем для реестра кластера.
  • Эта конфигурация использует единицы в виде Ги и Ти для измерения.
  • Значение по умолчанию: 100Gi

--config global.networkfunctionextension.clusterRegistry.clusterRegistryGCCadence=

  • Эту конфигурацию необходимо указать как расписание в стандартном формате Unix Crontab.
  • Эта конфигурация, указанная как пустая строка, отключает запланированное задание, чтобы вы могли отказаться от выполнения сборки мусора.
  • Значение по умолчанию: 0 0 * * *. Выполняет задание один раз в день.

--config global.networkfunctionextension.clusterRegistry.clusterRegistryGCThreshold=

  • Эта конфигурация задает пороговое значение процентного значения для запуска процесса сборки мусора для реестра кластера.
  • Эта конфигурация активирует процесс сборки мусора, когда использование реестра кластера превышает это значение.
  • Значение по умолчанию: 0.

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

  • Эта конфигурация задает ресурсы ЦП и памяти для реестра кластера предварительно определенным параметром масштабирования.

  • Принятые значения: 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, выполните команду az k8s-extension updateAzure CLI:

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, выполните команду az k8s-extension deleteAzure CLI:

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

Создайте расширение NFO с помощью функции реестра кластера (режим отложенной загрузки) в 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

Создайте расширение NFO с функцией реестра кластеров (режим отложенной загрузки) в 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

Создайте расширение 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