Compartir a través de


Administración de una extensión NFO

En este artículo se guía la gestión de usuarios de una extensión de operador de funciones de red (NFO) para Azure Operator Service Manager. Esta extensión de clúster de Kubernetes se usa para administrar las cargas de trabajo basadas en contenedores que hospeda la plataforma Nexus del operador de Azure.

Ejecute los comandos en este artículo después de que el clúster de Nexus Azure Kubernetes Service (NAKS) esté listo para la extensión adicional. Los comandos presuponen la instalación previa de la CLI de Azure y la autenticación en la suscripción de destino.

Creación de una extensión NFO

Para crear una extensión NFO, ejecute el comando az k8s-extension createde la CLI de Azure .

Get-Help

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]

Parámetros necesarios

--cluster-name -c

  • Nombre del clúster de Kubernetes.

--cluster-type -t

  • Especifique clústeres de Azure Arc, clústeres administrados de Azure Kubernetes Service (AKS), dispositivos de Azure Arc o provisionedClusters.
  • Valores aceptados: connectedClusters.

--extension-type

  • Nombre del tipo de extensión.
  • Valores aceptados: Microsoft.Azure.HybridNetwork.

--name -n

  • Nombre de la instancia de extensión.

--resource-group -g

  • Nombre del grupo de recursos. Puede configurar el grupo predeterminado utilizando az configure --defaults group=groupname.

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

  • Debe proporcionar esta configuración.

Parámetros opcionales

--auto-upgrade

  • Actualice automáticamente la versión secundaria de la instancia de extensión.
  • Valores aceptados: false, true.
  • Valor predeterminado: true.

--release-train

  • Especifique el entrenamiento de versión para el tipo de extensión.
  • Valores aceptados: preview, stable.
  • Valor predeterminado: stable.

--version

  • Especifique la versión explícita que se va a instalar para la instancia de extensión si --auto-upgrade-minor-version no está habilitada.

Configuraciones específicas de funcionalidades opcionales

Carga lateral

--config global.networkfunctionextension.enableLocalRegistry=

  • Esta configuración permite que los artefactos se entreguen al perímetro a través de un dispositivo de hardware.
  • Valores aceptados: false, true.
  • Valor predeterminado: false.

Webhook de mutación de pods

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

  • Esta configuración es un parámetro opcional. Solo cobra relevancia cuando las funciones de red de los contenedores (CNFs) se instalan en el namespace de la versión correspondiente.

  • Esta configuración establece un control más pormenorizado además de las reglas y namespaceSelectors.

  • Valor predeterminado:

    "((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\"))))"
    

    La condición de coincidencia a la que se hace referencia implica que los pods que se aceptan en el kube-system espacio de nombres solo se mutan si tienen al menos una de las siguientes etiquetas: app == "commissioning", app == "descheduler"o name == "cert-exporter". De lo contrario, no cambian y continúan extrayéndose desde la fuente original de acuerdo con el gráfico de Helm del CNF, componente o aplicación.

  • Valor aceptado: cualquier expresión válida de Common Expression Language (CEL).

  • Puede establecer o actualizar este parámetro durante la instalación o actualización de la extensión NFO.

  • Esta condición solo entra en juego cuando se instala el CNF, el componente o la aplicación en el espacio de nombres de acuerdo con las reglas y namespaceSelectors. Si crea un mayor número de pods en ese espacio de nombres, se aplica esta condición.

Registro de clúster

--config global.networkfunctionextension.enableClusterRegistry=

  • Esta configuración aprovisiona un registro en el clúster para almacenar en caché localmente los artefactos.
  • Los valores predeterminados habilitan el modo de carga perezosa a menos que global.networkfunctionextension.enableEarlyLoading=true.
  • Valores aceptados: false, true.
  • Valor predeterminado: false.

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

  • Esta configuración aprovisiona el registro de clúster en modo de alta disponibilidad (HA) si el registro de clúster está habilitado.
  • Esta configuración usa un volumen NAKS nexus-shared según la recomendación de AKS si el valor está establecido en false.
  • El número de réplicas del pod del registro es al menos 3 y como máximo 5.
  • Valores aceptados: true, false.
  • Valor predeterminado: true.

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

  • Esta configuración aprovisiona los pods del Registro de clústeres con escalado automático horizontal.
  • Valores aceptados: true, false.
  • Valor predeterminado: true.

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

  • Esta configuración aprovisiona varias réplicas del webhook para alta disponibilidad.
  • Valores aceptados: true, false.
  • Valor predeterminado: true.

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

  • Esta configuración aprovisiona los pods de webhook con escalado automático horizontal.
  • Valores aceptados: true, false.
  • Valor predeterminado: true.

--config global.networkfunctionextension.enableEarlyLoading=

  • Esta configuración permite la carga temprana de artefactos en el registro del clúster antes de la instalación o actualización de Helm.
  • Esta configuración solo se puede habilitar cuando global.networkfunctionextension.enableClusterRegistry=true.
  • Valores aceptados: false, true.
  • Valor predeterminado: false.

--config global.networkfunctionextension.clusterRegistry.storageClassName=

  • Debe proporcionar esta configuración cuando global.networkfunctionextension.enableClusterRegistry=true.
  • networkfunctionextension aprovisiona una reclamación de volumen persistente (PVC) para artefactos de caché local de esta clase de almacenamiento.
  • Valores específicos de la plataforma:
    • AKS: managed-csi
    • NAKS (valor predeterminado): nexus-shared
    • NAKS (sin alta disponibilidad): nexus-volume
    • Azure Stack Edge: managed-premium
  • Valor predeterminado: nexus-shared.

Nota:

  • Al administrar un clúster de NAKS mediante Azure Operator Service Manager, los valores de parámetro predeterminados habilitan la alta disponibilidad como configuración recomendada.
  • Cuando administra un clúster de AKS mediante Azure Operator Service Manager, debes desactivar la alta disponibilidad (HA) usando las siguientes opciones de configuración:
   --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=

  • Debe proporcionar esta configuración cuando global.networkfunctionextension.enableClusterRegistry=true.
  • Esta configuración establece el tamaño que se reserva para el registro del clúster.
  • Esta configuración utiliza unidades como Gi y Ti para dimensionar.
  • Valor predeterminado: 100Gi

--config global.networkfunctionextension.clusterRegistry.clusterRegistryGCCadence=

  • Debes proporcionar esta configuración como una programación en el formato estándar de Crontab de Unix.
  • Esta configuración, especificada como una cadena vacía, deshabilita el trabajo programado para que pueda optar por no ejecutar la recolección de elementos no utilizados.
  • Valor predeterminado: 0 0 * * *. Ejecuta el trabajo una vez al día.

--config global.networkfunctionextension.clusterRegistry.clusterRegistryGCThreshold=

  • Esta configuración especifica el valor de umbral porcentual para activar el proceso de recolección de basura en el registro del clúster.
  • Esta configuración desencadena el proceso de recolección de elementos no utilizados cuando el uso del registro de clúster supera este valor.
  • Valor predeterminado: 0.

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

  • Esta configuración establece los recursos de CPU y memoria del registro de clúster en una opción de escalado predefinida.

  • Valores aceptados: small, medium, large.

  • Valor predeterminado: medium.

  • A continuación se muestran las especificaciones de recursos del Registro para las tres escalas:

        - 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
    

Actualización de una extensión NFO

Para actualizar una extensión NFO, ejecute el comando az k8s-extension updatede la CLI de Azure :

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=]

Eliminación de una extensión NFO

Para eliminar una extensión NFO, ejecute el comando az k8s-extension deletede la CLI de Azure :

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

Ejemplos

Cree una extensión NFO con actualización automática:

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

Cree una extensión NFO con una versión anclada:

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

Cree una extensión NFO con la característica del registro de clúster (modo de carga diferida predeterminada) habilitada en 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

Cree una extensión NFO con la característica del registro de clúster (modo de carga diferida predeterminada) habilitada en 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

Cree una extensión NFO con la característica del registro de clúster (carga temprana) habilitada:

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

Cree una extensión NFO con la característica de carga lateral habilitada:

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

Actualice una extensión NFO para habilitar el registro de clúster:

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

Actualice una extensión NFO para llegar a una nueva versión de destino:

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