Partage via


Gérer l’extension d’opérateur de fonction réseau

Cet article guide la gestion des utilisateurs de l’extension d’opérateur de fonction réseau (NFO) Azure Operator Service Manager (AOSM). Cette extension de cluster Kubernetes est utilisée dans le cadre de l’offre du service AOSM et est utilisée pour gérer les charges de travail basées sur des conteneurs, hébergées par la plateforme Azure Operator Nexus.

Vue d’ensemble

Ces commandes sont exécutées après avoir préparé le cluster NAKS pour l’extension de module complémentaire et suppose une installation antérieure d’Azure CLI et une authentification dans l’abonnement cible.

Créer une extension de fonction réseau

La commande Azure CLI « az k8s-extension create » est exécutée pour installer l’extension NFO.

Commande

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]

Paramètres obligatoires

--cluster-name -c

  • Nom du cluster Kubernetes.

--cluster-type -t

  • Spécifiez des clusters Arc ou des clusters managés Azure Kubernetes Service (AKS) ou des appliances Arc ou provisionedClusters.
  • Valeurs acceptées : connectedClusters.

--extension-type

  • Nom du type d’extension.
  • Valeurs acceptées : Microsoft.Azure.HybridNetwork.

--name -n

  • Nom de l’instance d’extension.

--resource-group -g

  • Nom du groupe de ressources. Vous pouvez configurer le groupe par défaut à l’aide de la commande « az configure --defaults group=groupname ».

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

  • Cette configuration doit être fournie.

Paramètres facultatifs

--auto-upgrade

  • Mettre à niveau automatiquement la version mineure de l’instance de l’extension.
  • Valeurs acceptées : false, true.
  • Valeur par défaut : true.

--release-train

  • Spécifiez le train de versions pour le type d’extension.
  • Valeurs acceptées : preview, stable.
  • Valeur par défaut : stable.

--version

  • Spécifiez la version explicite à installer pour l’instance d’extension si « --auto-upgrade-minor-version » n’est pas activé.

Configurations facultatives spécifiques aux fonctionnalités

Chargement latéral

--config global.networkfunctionextension.enableLocalRegistry=

  • Cette configuration permet aux artefacts d’être remis à la périphérie via un lecteur matériel.
  • Valeurs acceptées : false, true.
  • Valeur par défaut : false.

Webhook de mutation de pod

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

  • Cette configuration est un paramètre facultatif. Elle entre en jeu uniquement lorsque les fonctions réseau de conteneur sont installées dans l’espace de noms de mise en production correspondant.
  • Cette configuration configure un contrôle plus granulaire en plus des règles et de namespaceSelectors.
  • Valeur par défaut :
    "((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\"))))"
    

Le matchCondition référencé implique que les pods acceptés dans l’espace de noms kube-system ne sont mutés que s’ils présentent au moins l’une des étiquettes suivantes : app == « commissioning », app == « descheduler », ou name == « cert-exporter. » Sinon, ils ne sont pas mutés et continuent d’être extraits de la source d’origine conformément au graphique Helm de CNF/Composant/Application.

  • Valeur acceptée : toute expression CEL valide.
  • Ce paramètre peut être défini ou mis à jour pendant l’installation ou la mise à jour de l’extension de fonction réseau (NF).
  • Cette condition entre en jeu uniquement lorsque CNF/Composant/Application sont installés dans l’espace de noms conformément aux règles et à namespaceSelectors. S’il existe d’autres pods qui se lancent dans cet espace de noms, cette condition est appliquée.

Registre de clusters

--config global.networkfunctionextension.enableClusterRegistry=

  • Cette configuration approvisionne un registre dans le cluster pour mettre en cache localement les artefacts.
  • Les valeurs par défaut activent le mode de chargement différé, sauf si global.networkfunctionextension.enableEarlyLoading=true.
  • Valeurs acceptées : false, true.
  • Valeur par défaut : false.

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

  • Cette configuration approvisionne le registre de clusters en mode Haute disponibilité si le registre de cluster est activé.
  • La valeur par défaut est true et utilise le volume nexus-shared NAKS (Nexus Azure Kubernetes Service) lorsque la recommandation AKS est définie sur false.
  • Valeurs acceptées : true, false.
  • Valeur par défaut : true.

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

  • Cette configuration approvisionne les pods de registre de clusters avec une mise à l’échelle automatique horizontale.
  • Valeurs acceptées : true, false.
  • Valeur par défaut : true.

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

  • Cette configuration approvisionne plusieurs réplicas de webhook pour la haute disponibilité.
  • Valeurs acceptées : true, false.
  • Valeur par défaut : true.

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

  • Cette configuration approvisionne les pods de webhook avec une mise à l’échelle automatique horizontale.
  • Valeurs acceptées : true, false.
  • Valeur par défaut : true.

--config global.networkfunctionextension.enableEarlyLoading=

  • Cette configuration permet le chargement anticipé des artefacts dans le registre de clusters avant l’installation ou la mise à niveau Helm.
  • Cette configuration ne peut être activée que lorsque global.networkfunctionextension.enableClusterRegistry=true.
  • Valeurs acceptées : false, true.
  • Valeur par défaut : false.

--config global.networkfunctionextension.clusterRegistry.storageClassName=

  • Cette configuration doit être fournie lorsque global.networkfunctionextension.enableClusterRegistry=true.
  • NetworkFunctionExtension approvisionne un PVC aux artefacts de cache locaux de cette classe de stockage.
  • Valeurs spécifiques à la plateforme
    • AKS : managed-csi
    • NAKS (valeur par défaut) : nexus-shared
    • NAKS (non-HA) : nexus-volume
    • Azure Stack Edge (ASE) : managed-premium
  • Valeur par défaut : nexus-shared.

--config global.networkfunctionextension.clusterRegistry.storageSize=

  • Cette configuration doit être fournie lorsque global.networkfunctionextension.enableClusterRegistry=true.
  • Cette configuration configure la taille à réserver pour le registre de clusters.
  • Cette configuration utilise l’unité en tant que Gi et Ti pour le dimensionnement.
  • Valeur par défaut : 100Gi

--config global.networkfunctionextension.clusterRegistry.clusterRegistryGCCadence=

  • Cette configuration doit être fournie en tant que planification au format crontab Unix standard.
  • Cette configuration spécifiée en tant que chaîne vide désactive le travail planifié, ce qui permet aux clients de refuser l’exécution de GC.
  • Valeur par défaut : « 0 0 * * * * » - Exécute le travail une fois par jour.

--config global.networkfunctionextension.clusterRegistry.clusterRegistryGCThreshold=

  • Cette configuration spécifie la valeur seuil de pourcentage qui déclenche le processus GC du registre de cluster.
  • Cette configuration déclenche le processus de GC lorsque l’utilisation du registre de cluster dépasse cette valeur.
  • Valeur par défaut : 0.

Remarque

  • Lors de la gestion d’un cluster NAKS avec AOSM, les valeurs de paramètre par défaut activent la haute disponibilité comme configuration recommandée.
  • Lors de la gestion d’un cluster AKS avec AOSM, la haute disponibilité doit être désactivée à l’aide des options de configuration suivantes :
   --config global.networkfunctionextension.clusterRegistry.highAvailability.enabled=false
   --config global.networkfunctionextension.webhook.highAvailability.enabled=false
   --config global.networkfunctionextension.clusterRegistry.storageClassName=managed-csi

Mettre à jour une extension de fonction réseau

La commande Azure CLI « az k8s-extension update » est exécutée pour mettre à jour l’extension 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=]

Supprimer une extension de fonction réseau

La commande Azure CLI « az k8s-extension delete » est exécutée pour supprimer l’extension 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

Exemples

Créez une extension de fonction réseau avec la mise à niveau automatique.

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

Créez une extension de fonction réseau avec une version en attente.

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

Créez une extension de fonction réseau avec la fonctionnalité de registre de clusters (mode de chargement différé par défaut) activée sur 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

Créez une extension de fonction réseau avec la fonctionnalité de registre de clusters (mode de chargement différé par défaut) activée sur 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

Créez une extension de fonction réseau avec la fonctionnalité de registre de clusters (chargement anticipé) activée.

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

Créez une extension de fonction réseau avec la fonctionnalité de chargement latéral activée.

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

Mettez à jour une extension de fonction réseau pour activer le registre de clusters.

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

Mettez à jour une extension de fonction réseau pour atteindre une nouvelle version cible.

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