Freigeben über


Verwalten einer NFO-Erweiterung

Dieser Artikel enthält eine Anleitung zur Benutzerverwaltung einer NFO (Network Function Operator)-Erweiterung für Azure Operator Service Manager. Sie verwenden diese Kubernetes-Clustererweiterung, um containerbasierte Workloads zu verwalten, die die Azure Operator Nexus-Plattform hosten.

Sie führen die Befehle in diesem Artikel aus, nachdem Sie den Nexus Azure Kubernetes Service (NAKS)-Cluster für die Add-On-Erweiterung bereit machen. Die Befehle gehen von der vorherigen Installation der Azure CLI und der Authentifizierung in das Zielabonnement aus.

Erstellen einer NFO-Erweiterung

Um eine NFO-Erweiterung zu erstellen, führen Sie den Azure CLI-Befehl az k8s-extension createaus.

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]

Erforderliche Parameter

--cluster-name -c

  • Name des Kubernetes-Clusters

--cluster-type -t

  • Geben Sie Azure Arc-Cluster, verwaltete Azure Kubernetes Service (AKS)-Cluster, Azure Arc-Geräte oder provisionedClusters an.
  • Akzeptierte Werte: connectedClusters.

--extension-type

  • Name des Erweiterungstyps
  • Akzeptierte Werte: Microsoft.Azure.HybridNetwork.

--name -n

  • Name der Erweiterungsinstanz

--resource-group -g

  • Name der Ressourcengruppe Sie können die Standardgruppe mithilfe von az configure --defaults group=groupnamekonfigurieren.

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

  • Sie müssen diese Konfiguration bereitstellen.

Optionale Parameter

--auto-upgrade

  • Aktualisieren Sie automatisch die Nebenversion der Erweiterungsinstanz.
  • Zulässige Werte: false, true.
  • Standardwert: true.

--release-train

  • Geben Sie den Release Train für den Erweiterungstyp an.
  • Zulässige Werte: preview, stable.
  • Standardwert: stable.

--version

  • Geben Sie die explizite Version an, die für die Erweiterungsinstanz installiert werden soll, falls --auto-upgrade-minor-version nicht aktiviert ist.

Optionale feature-spezifische Konfigurationen

Querladen

--config global.networkfunctionextension.enableLocalRegistry=

  • Mit dieser Konfiguration können Artefakte über ein Hardwarelaufwerk zum Edge übermittelt werden.
  • Zulässige Werte: false, true.
  • Standardwert: false.

Webhook für die Podänderung

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

  • Diese Konfiguration ist ein optionaler Parameter. Er kommt nur ins Spiel, wenn Containernetzwerkfunktionen (CNFs) im entsprechenden Releasenamespace installiert werden.

  • Diese Konfiguration ermöglicht eine präzisere Kontrolle über Regeln und namespaceSelectors.

  • Standardwert:

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

    Die referenzierte Vergleichsbedingung impliziert, dass die Pods, die im Namespace kube-system akzeptiert werden, nur dann mutiert werden, wenn sie mindestens eine der folgenden Bezeichnungen aufweisen: app == "commissioning", app == "descheduler" oder name == "cert-exporter". Andernfalls werden sie nicht mutiert und weiterhin gemäß dem Helm-Diagramm der CNF, Komponente oder Anwendung aus der ursprünglichen Quelle abgerufen.

  • Akzeptierter Wert: Beliebiger gültiger Common Expression Language (CEL)-Ausdruck.

  • Sie können diesen Parameter während der Installation oder Aktualisierung der NFO-Erweiterung festlegen oder aktualisieren.

  • Diese Bedingung tritt nur in Kraft, wenn Sie die CNF, Komponente oder Anwendung gemäß den Regeln und namespaceSelectors in den Namespace installieren. Wenn Sie weitere Pods in diesem Namespace erstellen, wird diese Bedingung angewendet.

Clusterregistrierung

--config global.networkfunctionextension.enableClusterRegistry=

  • Diese Konfiguration stellt eine Registrierung im Cluster bereit, um Artefakte lokal zwischenzuspeichern.
  • Standardwerte aktivieren den Lazy-Loading-Modus, es sei denn global.networkfunctionextension.enableEarlyLoading=true.
  • Zulässige Werte: false, true.
  • Standardwert: false.

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

  • Diese Konfiguration stellt die Clusterregistrierung im HA-Modus (High Availability) bereit, wenn die Clusterregistrierung aktiviert ist.
  • Diese Konfiguration verwendet ein NAKS-Volume nexus-shared auf Empfehlung von AKS, wenn der Wert auf false gesetzt ist.
  • Die Anzahl der Registrierungs-Pod-Replikate beträgt mindestens 3 und maximal 5.
  • Zulässige Werte: true, false.
  • Standardwert: true.

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

  • Diese Konfiguration stellt die Clusterregistrierungs-Pods mit horizontaler automatischer Skalierung bereit.
  • Zulässige Werte: true, false.
  • Standardwert: true.

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

  • Diese Konfiguration stellt mehrere Replikate des Webhooks für hohe Verfügbarkeit bereit.
  • Zulässige Werte: true, false.
  • Standardwert: true.

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

  • Diese Konfiguration stellt die Webhook-Pods mit horizontaler automatischer Skalierung bereit.
  • Zulässige Werte: true, false.
  • Standardwert: true.

--config global.networkfunctionextension.enableEarlyLoading=

  • Diese Konfiguration ermöglicht das frühzeitige Laden von Artefakten in die Clusterregistrierung vor der Helm-Installation oder dem Upgrade.
  • Sie können diese Konfiguration nur aktivieren, wenn global.networkfunctionextension.enableClusterRegistry=true.
  • Zulässige Werte: false, true.
  • Standardwert: false.

--config global.networkfunctionextension.clusterRegistry.storageClassName=

  • Sie müssen diese Konfiguration angeben, wenn global.networkfunctionextension.enableClusterRegistry=true.
  • networkfunctionextension stellt einen persistenten Volumenanspruch (PVC) für lokale Cacheartefakte aus dieser Speicherklasse bereit.
  • Plattformspezifische Werte:
    • AKS: managed-csi
    • NAKS (Standard): nexus-shared
    • NAKS (non-HA): nexus-volume
    • Azure Stack Edge: managed-premium
  • Standardwert: nexus-shared.

Hinweis

  • Wenn Sie einen NAKS-Cluster mithilfe von Azure Operator Service Manager verwalten, aktivieren die Standardparameterwerte HA als empfohlene Konfiguration.
  • Wenn Sie einen AKS-Cluster mithilfe von Azure Operator Service Manager verwalten, müssen Sie HA mithilfe der folgenden Konfigurationsoptionen deaktivieren:
   --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=

  • Sie müssen diese Konfiguration angeben, wenn global.networkfunctionextension.enableClusterRegistry=true.
  • Diese Konfiguration legt die Größe fest, die wir für die Clusterregistrierung reservieren.
  • Diese Konfiguration verwendet Einheiten wie Gi und Ti für die Größenbestimmung.
  • Standardwert: 100Gi

--config global.networkfunctionextension.clusterRegistry.clusterRegistryGCCadence=

  • Sie müssen diese Konfiguration als Zeitplan im Standardmäßigen Unix Crontab-Format bereitstellen.
  • Diese Konfiguration, die als leere Zeichenfolge angegeben ist, deaktiviert den geplanten Auftrag, sodass Sie darauf verzichten können, die Garbage Collection auszuführen.
  • Standardwert: 0 0 * * *. Führt den Job einmal täglich aus.

--config global.networkfunctionextension.clusterRegistry.clusterRegistryGCThreshold=

  • Diese Konfiguration gibt den prozentualen Schwellenwert an, um den Garbage-Collection-Prozess für die Cluster-Registrierung auszulösen.
  • Diese Konfiguration löst den Speicherbereinigungsprozess aus, wenn die Cluster-Registrierungsverwendung diesen Wert überschreitet.
  • Standardwert: 0.

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

  • Diese Konfiguration legt die CPU- und Speicherressourcen für die Clusterregistrierung auf eine vordefinierte Skalierungsoption fest.

  • Akzeptierte Werte: small, medium und large.

  • Standardwert: medium.

  • Im Folgenden sind die Registrierungsressourcenspezifikationen für alle drei Skalierungen aufgeführt:

        - 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
    

Aktualisieren einer NFO-Erweiterung

Um eine NFO-Erweiterung zu aktualisieren, führen Sie den Azure CLI-Befehl az k8s-extension updateaus:

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

Löschen einer NFO-Erweiterung

Um eine NFO-Erweiterung zu löschen, führen Sie den Azure CLI-Befehl az k8s-extension deleteaus:

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

Beispiele

Erstellen Sie eine NFO-Erweiterung mit automatischem Upgrade:

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

Erstellen Sie eine NFO-Erweiterung mit einer angehefteten Version:

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

Erstellen Sie eine NFO-Erweiterung mit aktivierter Clusterregistrierungsfunktion (standardmäßiger Lazy-Lademodus) auf 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

Erstellen Sie eine NFO-Erweiterung mit aktivierter Cluster-Registry-Funktion (standardmäßiger Lazy-Loading-Modus) in 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

Erstellen Sie eine NFO-Erweiterung mit aktivierter Cluster-Registrierungsfunktion (frühes Laden):

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

Erstellen Sie eine NFO-Erweiterung mit aktivierter Seitenladefunktion:

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

Aktualisieren Sie eine NFO-Erweiterung, um die Clusterregistrierung zu aktivieren:

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

Aktualisieren Sie eine NFO-Erweiterung, um eine neue Zielversion zu erreichen:

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