Leggere in inglese

Condividi tramite


Gestire l'estensione Network Function Operator

Questo articolo illustra la gestione degli utenti dell'estensione NFO (Network Function Operator) di Gestione del servizio di Azure Operator (AOSM, Azure Operator Service Manager). Questa estensione del cluster Kubernetes viene usata come parte dell'offerta del servizio AOSM e usata per gestire i carichi di lavoro basati su contenitori, ospitati dalla piattaforma Operatore Nexus di Azure.

Panoramica

Questi comandi vengono eseguiti dopo aver reso preparato il cluster NAKS per l'estensione del componente aggiuntivo e presuppongono la precedente installazione dell'interfaccia della riga di comando di Azure e l'autenticazione nella sottoscrizione di destinazione.

Creare l'estensione Network Function

Per installare l'estensione NFO, viene eseguito il comando dell'interfaccia della riga di comando di Azure 'az k8s-extension create'.

Comando

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

Parametri necessari

--cluster-name -c

  • Nome del cluster Kubernetes.

--cluster-type -t

  • Specificare cluster Arc o cluster gestiti del servizio Azure Kubernetes oppure appliance Arc o provisionedClusters.
  • Valori accettati: connectedClusters.

--extension-type

  • Nome del tipo di estensione.
  • Valori accettati: Microsoft.Azure.HybridNetwork.

--name -n

  • Nome dell'istanza dell'estensione.

--resource-group -g

  • Nome del gruppo di risorse. È possibile configurare il gruppo predefinito usando 'az configure --defaults group=groupname'.

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

  • È necessario specificare questa configurazione.

Parametri facoltativi

--auto-upgrade

  • Aggiornare automaticamente la versione secondaria dell'istanza dell'estensione.
  • Valori accettati: false, true.
  • Valore predefinito: true.

--release-train

  • Specificare il train della versione per il tipo di estensione.
  • Valori accettati: anteprima, stabile.
  • Valore predefinito: stabile.

--version

  • Specificare la versione esplicita da installare per l'istanza dell'estensione se '--auto-upgrade-minor-version' non è abilitato.

Configurazioni specifiche delle funzionalità facoltative

Sideload

--config global.networkfunctionextension.enableLocalRegistry=

  • Questa configurazione consente di distribuire gli artefatti alla rete perimetrale tramite unità hardware.
  • Valori accettati: false, true.
  • Valore predefinito: false.

Webhook modificabile di pod

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

  • Questa configurazione è un parametro facoltativo. Viene considerata solo quando le funzioni di rete dei contenitori vengono installate nello spazio dei nomi di versioni corrispondente.
  • Questa configurazione prevede un controllo più granulare rispetto alle regole e a namespaceSelectors.
  • Valore predefinito:
    Bash
    "((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\"))))"
    

L'oggetto matchCondition a cui viene fatto riferimento implica che i pod accettati nello spazio dei nomi kube-system vengono modificati solo se hanno almeno una delle etichette seguenti: app == "commissioning", app == "descheduler" o name == "cert-exporter". In caso contrario, non vengono modificati e continuano a essere estratti dall'origine originale in base al grafico Helm CNF/Component/Application.

  • Valore accettato: qualsiasi espressione CEL valida.
  • Questo parametro può essere impostato o aggiornato durante l'installazione o l'aggiornamento dell'estensione Network Function (NF).
  • Questa condizione viene considerata solo quando CNF/Component/Application viene installato nello spazio dei nomi in base alle regole e a namespaceSelectors. Se sono presenti più pod che si attivano in tale spazio dei nomi, questa condizione viene applicata.

Registro del cluster

--config global.networkfunctionextension.enableClusterRegistry=

  • Questa configurazione effettua il provisioning di un registro nel cluster per memorizzare gli artefatti nella cache locale.
  • I valori predefiniti abilitano la modalità di caricamento lazy, a meno che global.networkfunctionextension.enableEarlyLoading=true.
  • Valori accettati: false, true.
  • Valore predefinito: false.

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

  • Questa configurazione effettua il provisioning del registro del cluster, se abilitato, in modalità a disponibilità elevata.
  • Il valore predefinito è true e usa il volume nexus-shared del servizio Nexus Azure Kubernetes (NAKS) rispetto alla raccomandazione del servizio Azure Kubernetes che prevede di impostarlo su false.
  • Valori accettati: true, false.
  • Valore predefinito: true.

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

  • Questa configurazione effettua il provisioning dei pod del registro del cluster con scalabilità automatica orizzontale.
  • Valori accettati: true, false.
  • Valore predefinito: true.

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

  • Questa configurazione effettua il provisioning di più repliche di webhook per la disponibilità elevata.
  • Valori accettati: true, false.
  • Valore predefinito: true.

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

  • Questa configurazione effettua il provisioning dei pod del webhook con scalabilità automatica orizzontale.
  • Valori accettati: true, false.
  • Valore predefinito: true.

--config global.networkfunctionextension.enableEarlyLoading=

  • Questa configurazione abilita il caricamento anticipato degli artefatti nel registro del cluster prima dell'installazione o dell'aggiornamento di Helm.
  • Questa configurazione può essere abilitata solo quando global.networkfunctionextension.enableClusterRegistry=true.
  • Valori accettati: false, true.
  • Valore predefinito: false.

--config global.networkfunctionextension.clusterRegistry.storageClassName=

  • Questa configurazione può essere specificata quando global.networkfunctionextension.enableClusterRegistry=true.
  • NetworkFunctionExtension effettua il provisioning di un contenitore volume permanente negli artefatti della cache locale da questa classe di archiviazione.
  • Valori specifici della piattaforma
    • Servizio Azure Kubernetes: managed-csi
    • NAKS (valore predefinito): nexus-shared
    • NAKS (senza disponibilità elevata): nexus-volume
    • Azure Stack Edge (ASE): managed-premium
  • Valore predefinito: nexus-shared.

--config global.networkfunctionextension.clusterRegistry.storageSize=

  • Questa configurazione può essere specificata quando global.networkfunctionextension.enableClusterRegistry=true.
  • Questa configurazione imposta le dimensioni riservate per il registro del cluster.
  • Questa configurazione usa unità come Gi e Ti per il dimensionamento.
  • Valore predefinito: 100 Gi

--config global.networkfunctionextension.clusterRegistry.clusterRegistryGCCadence=

  • Questa configurazione deve essere fornita come pianificazione in formato crontab Unix standard.
  • Questa configurazione specificata come stringa vuota disabilita il processo pianificato, consentendo ai clienti di rifiutare esplicitamente l'esecuzione di Garbage Collection.
  • Valore predefinito: "0 0 * * *" - Esegue il processo una volta ogni giorno.

--config global.networkfunctionextension.clusterRegistry.clusterRegistryGCThreshold=

  • Questa configurazione specifica il valore soglia percentuale per attivare il processo di Garbage Collection del Registro di sistema del cluster.
  • Questa configurazione attiva il processo di Garbage Collection quando l'utilizzo del Registro di sistema del cluster supera questo valore.
  • Valore predefinito: 0.

Nota

  • Quando si gestisce un cluster NAKS con AOSM, i valori dei parametri predefiniti abilitano la disponibilità elevata come configurazione consigliata.
  • Quando si gestisce un cluster del servizio Azure Kubernetes con AOSM, è necessario disabilitare la disponibilità elevata usando le opzioni di configurazione seguenti:
   --config global.networkfunctionextension.clusterRegistry.highAvailability.enabled=false
   --config global.networkfunctionextension.webhook.highAvailability.enabled=false
   --config global.networkfunctionextension.clusterRegistry.storageClassName=managed-csi

Aggiornare l'estensione Network function

Per aggiornare l'estensione NFO, viene eseguito il comando dell'interfaccia della riga di comando di Azure 'az k8s-extension update'.

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

Eliminare l'estensione Network function

Per eliminare l'estensione NFO, viene eseguito il comando dell'interfaccia della riga di comando di Azure 'az k8s-extension delete'.

Bash
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

Esempi

Creare un'estensione Network Function con aggiornamento automatico.

Bash
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

Creare un'estensione Network Function con versione bloccata.

Bash
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

Creare un'estensione Network Function con la funzionalità del registro del cluster (modalità di caricamento lazy predefinita) abilitata in NAKS.

Bash
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

Creare un'estensione Network Function con la funzionalità del registro del cluster (modalità di caricamento lazy predefinita) abilitata nel servizio Azure Kubernetes.

Bash
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

Creare un'estensione Network Function con la funzionalità del registro del cluster (caricamento anticipato) abilitata.

Bash
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

Creare un'estensione Network Function con la funzionalità sideload abilitata.

Bash
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

Aggiornare un'estensione della funzione di rete per abilitare il Registro di sistema del cluster.

Bash
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

Aggiornare un'estensione della funzione di rete per raggiungere una nuova versione di destinazione.

Bash
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