Administrar extensión del operador de función de red
En este artículo se guía por la administración de usuarios de la extensión operador de función de red (NFO) de Azure Operator Service Manager (AOSM). Esta extensión de clúster de Kubernetes se usa como parte de la oferta de servicio AOSM y se usa para administrar cargas de trabajo basadas en contenedores hospedadas por la plataforma Azure Operator Nexus.
Información general
Estos comandos se ejecutan después de preparar el clúster NAKS para la extensión del complemento y presuponen la instalación previa de la CLI de Azure y la autenticación en la suscripción de destino.
Crear extensión de función de red
El comando de la CLI de Azure "az k8s-extension create" se ejecuta para instalar la extensión NFO.
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=]
[--version]
Parámetros requeridos
--cluster-name -c
- Nombre del clúster de Kubernetes.
--cluster-type -t
- Especifique clústeres de Arc o clústeres administrados de Azure Kubernetes Service (AKS) o dispositivos de 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 mediante "az configure --defaults group=groupname".
--config Microsoft.CustomLocation.ServiceAccount=azurehybridnetwork-networkfunction-operator
- Esta configuración debe proporcionarse.
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 características opcionales
Carga lateral
--config global.networkfunctionextension.enableLocalRegistry=
- Esta configuración permite que los artefactos se entreguen al perímetro a través de la unidad de hardware.
- Valores aceptados: false, true.
- Valor predeterminado: falso.
Webhook de mutación de pod
--config global.networkfunctionextension.webhook.pod.mutation.matchConditionExpression=
- Esta configuración es un parámetro opcional. Solo entra en juego cuando las funciones de red del contenedor (CNF) se instalan en el espacio de nombres de la versión correspondiente.
- Esta configuración establece un control más granular sobre las reglas y los 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 matchCondition referenciada implica que los pods que se aceptan en el espacio de nombres kube-system se mutan solo si tienen al menos una de las siguientes etiquetas: app == "commissioning", app == "descheduler", o name == "cert-exporter". De lo contrario, no se mutan y siguen extrayéndose del origen original según el gráfico Helm CNF/Component/Application.
- Valor aceptado: cualquier expresión CEL válida.
- Este parámetro puede configurarse o actualizarse durante la instalación o actualización de la extensión de la función de red (NF).
- Esta condición solo se aplica cuando el CNF/Component/Application se instala en el espacio de nombres según las reglas y los namespaceSelectors. Si hay más pods iniciándose 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 diferida a menos que global.networkfunctionextension.enableEarlyLoading=true.
- Valores aceptados: false, true.
- Valor predeterminado: falso.
--config global.networkfunctionextension.clusterRegistry.highAvailability.enabled=
- Esta configuración aprovisiona el registro de clúster en modo de alta disponibilidad si el registro de clúster está habilitado.
- El valor predeterminado es true y utiliza el volumen nexus-shared Nexus Azure Kubernetes Service (NAKS) cuando la recomendación AKS se establece en false.
- Valores aceptados: true, false.
- Valor predeterminado: True
--config global.networkfunctionextension.clusterRegistry.autoScaling.enabled=
- Esta configuración aprovisiona los pods de registro del clúster con un escalado automático horizontal.
- Valores aceptados: true, false.
- Valor predeterminado: True
--config global.networkfunctionextension.webhook.highAvailability.enabled=
- Esta configuración aprovisiona varias réplicas de webhook para alta la disponibilidad.
- Valores aceptados: true, false.
- Valor predeterminado: True
--config global.networkfunctionextension.webhook.autoScaling.enabled=
- Esta configuración aprovisiona los pods de webhook con el escalado automático horizontal.
- Valores aceptados: true, false.
- Valor predeterminado: True
--config global.networkfunctionextension.enableEarlyLoading=
- Esta configuración habilita la carga anticipada de artefactos en el registro de clúster antes de la instalación o la actualización de Helm.
- Esta configuración solo se puede habilitar cuando global.networkfunctionextension.enableClusterRegistry=true.
- Valores aceptados: false, true.
- Valor predeterminado: falso.
--config global.networkfunctionextension.clusterRegistry.storageClassName=
- Esta configuración debe proporcionarse cuando global.networkfunctionextension.enableClusterRegistry=true.
- NetworkFunctionExtension aprovisiona un PVC a artefactos de caché local de esta clase de almacenamiento.
- Valores específicos de la plataforma
- AKS: managed-csi
- NAKS (valor predeterminado): nexus-shared
- NAKS(Non-HA): nexus-volume
- Azure Stack Edge (ASE): managed-Premium
- Valor predeterminado: nexus-shared.
--config global.networkfunctionextension.clusterRegistry.storageSize=
- Esta configuración debe proporcionarse cuando global.networkfunctionextension.enableClusterRegistry=true.
- Esta configuración configura el tamaño que reservamos para el registro del clúster.
- Esta configuración usa la unidad como Gi y Ti para cambiar el tamaño.
- Valor predeterminado: 100Gi
--config global.networkfunctionextension.clusterRegistry.clusterRegistryGCCadence=
- Esta configuración debe proporcionarse como una programación en formato crontab estándar de Unix.
- Esta configuración especificada como una cadena vacía deshabilita el trabajo programado, lo que permite a los clientes rechazar la ejecución de 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 previo para desencadenar el proceso de recolección de elementos no utilizados del 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.
Nota:
- Al administrar un clúster de NAKS con AOSM, los valores de parámetro predeterminados habilitan la alta disponibilidad como configuración recomendada.
- Al administrar un clúster de AKS con AOSM, la alta disponibilidad debe deshabilitarse mediante 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
Actualizar extensión de función de red
El comando de la CLI de Azure "az k8s-extension update" se ejecuta para actualizar la extensión 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=]
Eliminar extensión de función de red
El comando de la CLI de Azure "az k8s-extension delete" se ejecuta para eliminar la extensión 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
Ejemplos
Crear una extensión de función de red 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
Crear una extensión de función de red 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
Crear una extensión de función de red con la característica de 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
Crear una extensión de función de red con la característica de 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
Crear una extensión de función de red con la característica de 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
Crear una extensión de función de red 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 de función de red 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 de función de red 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