Partager via


Gérer une extension NFO

Cet article guide la gestion des utilisateurs d’une extension NFO pour Azure Operator Service Manager. Vous utilisez cette extension de cluster Kubernetes pour gérer les charges de travail basées sur des conteneurs que la plateforme Azure Operator Nexus héberge.

Vous exécutez les commandes de cet article après avoir préparé le cluster Nexus Azure Kubernetes Service (NAKS) pour l’extension de module complémentaire. Les commandes présument l’installation antérieure d’Azure CLI et l’authentification dans l’abonnement cible.

Créer une extension NFO

Pour créer une extension NFO, exécutez la commande az k8s-extension createAzure CLI.

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=]
                        [--config global.networkfunctionextension.clusterRegistry.registryService.scale={"small", "medium", "large"}]
                        [--version]

Paramètres obligatoires

--cluster-name -c

  • Nom du cluster Kubernetes.

--cluster-type -t

  • Spécifiez des clusters Azure Arc, des clusters managés Azure Kubernetes Service (AKS), des appliances Azure 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 en utilisant az configure --defaults group=groupname.

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

  • Vous devez fournir cette configuration.

Paramètres facultatifs

--auto-upgrade

  • Mettez automatiquement à niveau la version mineure de l’instance d’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 spécifique à 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 artéfacts d'être livrés vers 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 intervient uniquement lorsque des fonctions réseau de conteneur (CNFs) sont installées dans l'espace de noms de version correspondant.

  • Cette configuration définit un contrôle plus précis en plus des règles et 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\"))))"
    

    La condition de correspondance référencée implique que les pods qui sont acceptés dans l’espace de noms kube-system ne sont mutés que s’ils possèdent au moins l’une des étiquettes suivantes : app == "commissioning", app == "descheduler" ou name == "cert-exporter". Sinon, ils ne sont pas modifiés et continuent d’être extraits de la source d’origine conformément au tableau Helm du CNF, du composant ou de l’application.

  • Valeur acceptée : toute expression CEL (Common Expression Language) valide.

  • Vous pouvez définir ou mettre à jour ce paramètre pendant l’installation ou la mise à jour de l’extension NFO.

  • Cette condition n’entre en jeu que lorsque vous installez le CNF, le composant ou l’application dans l’espace de noms conformément aux règles et namespaceSelectors. Si vous créez d’autres pods 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 provisionne le registre de clusters en mode haute disponibilité si le registre de cluster est activé.
  • Cette configuration utilise un volume NAKS nexus-shared sur recommandation AKS si la valeur est définie sur false.
  • Le nombre de réplicas de pods du Registre est d'un minimum de 3 et d'un maximum de 5.
  • 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 provisionne plusieurs réplicas du webhook pour garantir une 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é d’artefacts dans le registre de clusters avant l’installation ou la mise à niveau de Helm.
  • Vous ne pouvez activer cette configuration que lorsque global.networkfunctionextension.enableClusterRegistry=true.
  • Valeurs acceptées : false, true.
  • Valeur par défaut : false.

--config global.networkfunctionextension.clusterRegistry.storageClassName=

  • Vous devez fournir cette configuration quand global.networkfunctionextension.enableClusterRegistry=true.
  • networkfunctionextension approvisionne une revendication de volume persistant (PVC) aux artefacts de mise en cache locales 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 : managed-premium
  • Valeur par défaut : nexus-shared.

Remarque

  • Lorsque vous gérez un cluster NAKS à l’aide d’Azure Operator Service Manager, les valeurs de paramètre par défaut activent la haute disponibilité comme configuration recommandée.
  • Lorsque vous gérez un cluster AKS à l’aide d’Azure Operator Service Manager, vous devez désactiver la haute disponibilité à 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

--config global.networkfunctionextension.clusterRegistry.storageSize=

  • Vous devez fournir cette configuration quand global.networkfunctionextension.enableClusterRegistry=true.
  • Cette configuration définit la taille que nous réservons pour le registre de cluster.
  • Cette configuration utilise des unités comme Gi et Ti pour le dimensionnement.
  • Valeur par défaut : 100Gi

--config global.networkfunctionextension.clusterRegistry.clusterRegistryGCCadence=

  • Vous devez fournir cette configuration en tant que planification au format Crontab Unix standard.
  • Cette configuration, spécifiée sous la forme d’une chaîne vide, désactive la tâche planifiée afin que vous puissiez choisir de ne pas exécuter la collecte des ordures.
  • 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 de seuil de pourcentage permettant de déclencher le processus de ramasse-miettes pour le registre de cluster.
  • Cette configuration déclenche le processus de garbage collection lorsque l’utilisation du registre de cluster dépasse cette valeur.
  • Valeur par défaut : 0.

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

  • Cette configuration définit les ressources processeur et mémoire du registre de cluster sur une option d’échelle prédéfinie.

  • Valeurs acceptées : small, medium, large.

  • Valeur par défaut : medium.

  • Voici les spécifications des ressources de Registre pour les trois échelles :

        - 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
    

Mettre à jour une extension NFO

Pour mettre à jour une extension NFO, exécutez la commande 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=]

Supprimer une extension NFO

Pour supprimer une extension NFO, exécutez la commande 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

Exemples

Créez une extension NFO avec 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 NFO avec une version épinglée :

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 NFO 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 NFO 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 NFO 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 NFO avec la fonctionnalité de chargement côté 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 NFO 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 NFO 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