Verwalten der Erweiterung „Network Function Operator“
In diesem Artikel wird die Benutzerverwaltung der Azure Operator Service Manager-Erweiterung (AOSM) „Network Function Operator“ (NFO) veranschaulicht. Diese Kubernetes-Clustererweiterung wird als Teil des AOSM-Dienstangebots und zum Verwalten von containerbasierten Workloads verwendet, die von der Azure Operator Nexus-Plattform gehostet werden.
Übersicht
Diese Befehle werden ausgeführt, nachdem der NAKS-Cluster für die Add-On-Erweiterung vorbereitet wurde. Sie setzen die vorherige Installation der Azure CLI und Authentifizierung im Zielabonnement voraus.
Erstellen der Netzwerkfunktionserweiterung
Der Azure CLI-Befehl „az k8s-extension create“ wird ausgeführt, um die NFO-Erweiterung zu installieren.
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]
Erforderliche Parameter
--cluster-name -c
- Name des Kubernetes-Clusters
--cluster-type -t
- Geben Sie Arc-Cluster, von Azure Kubernetes Service (AKS) verwaltete Cluster, Arc-Appliances oder bereitgestellte Cluster (provisionedClusters) an.
- Zulässige Werte: connectedClusters
--extension-type
- Name des Erweiterungstyps
- Zulässige Werte: Microsoft.Azure.HybridNetwork
--name -n
- Name der Erweiterungsinstanz
--resource-group -g
- Name der Ressourcengruppe Sie können die Standardgruppe mit „az configure --defaults group=groupname“ konfigurieren.
--config Microsoft.CustomLocation.ServiceAccount=azurehybridnetwork-networkfunction-operator
- Diese Konfiguration muss bereitgestellt werden.
Optionale Parameter
--auto-upgrade
- Automatisches Aktualisieren der 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, wenn „--auto-upgrade-minor-version“ nicht aktiviert ist.
Optionale funktionsspezifische Konfigurationen
Querladen
--config global.networkfunctionextension.enableLocalRegistry=
- Mit dieser Konfiguration können Artefakte über ein Hardwarelaufwerk an den 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.
- Mit dieser Konfiguration wird eine differenziertere Steuerung von Regeln und Namespaceselektoren (namespaceSelectors) konfiguriert.
- 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\"))))"
Der referenzierte matchCondition-Wert impliziert, dass die Pods, die im kube-system-Namespace akzeptiert werden, nur geändert werden, wenn sie mindestens eine der folgenden Bezeichnungen haben: „app == "commissioning"“, „app == "descheduler"“ oder „name == "cert-exporter"“. Andernfalls werden sie nicht geändert und werden weiterhin aus der ursprünglichen Quelle gemäß dem Helm-Chart von CNF, Komponente oder Anwendung abgerufen.
- Zulässiger Wert: Jeder gültige CEL-Ausdruck
- Dieser Parameter kann während der Installation oder Aktualisierung der NF-Erweiterung (Netzwerkfunktion) festgelegt oder aktualisiert werden.
- Diese Bedingung kommt nur zum Tragen, wenn CNF, Komponente oder Anwendung gemäß den Regeln und namespaceSelectors im Namespace installiert wird. Wenn in diesem Namespace weitere Pods aktiviert werden, 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, es ist Folgendes festgelegt: global.networkfunctionextension.enableEarlyLoading=true.
- Zulässige Werte: false, true
- Standardwert: False.
--config global.networkfunctionextension.clusterRegistry.highAvailability.enabled=
- Diese Konfiguration stellt die Clusterregistrierung im Modus für Hochverfügbarkeit bereit, wenn die Clusterregistrierung aktiviert ist.
- Der Standardwert ist „true“ und verwendet das Nexus Azure Kubernetes Service-Volume (NAKS) „nexus-shared“ für AKS. Es wird empfohlen, diese Option auf „false“ festzulegen.
- Zulässige Werte: true, false
- Standardwert: true.
--config global.networkfunctionextension.clusterRegistry.autoScaling.enabled=
- Diese Konfiguration stellt die Clusterregistrierungspods mit automatischer horizontaler Skalierung bereit.
- Zulässige Werte: true, false
- Standardwert: true.
--config global.networkfunctionextension.webhook.highAvailability.enabled=
- Diese Konfiguration stellt mehrere Replikate von Webhooks für Hochverfügbarkeit bereit.
- Zulässige Werte: true, false
- Standardwert: true.
--config global.networkfunctionextension.webhook.autoScaling.enabled=
- Diese Konfiguration stellt die Webhookpods mit automatischer horizontaler 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 Installation oder dem Upgrade von Helm.
- Diese Konfiguration kann nur aktiviert werden, wenn Folgendes festgelegt ist: global.networkfunctionextension.enableClusterRegistry=true.
- Zulässige Werte: false, true
- Standardwert: False.
--config global.networkfunctionextension.clusterRegistry.storageClassName=
- Diese Konfiguration muss angegeben werden, wenn Folgendes festgelegt ist: global.networkfunctionextension.enableClusterRegistry=true.
- NetworkFunctionExtension stellt ein PVC für lokale Cacheartefakte aus dieser Speicherklasse bereit.
- Plattformspezifische Werte
- AKS: managed-csi
- NAKS (Standard): nexus-shared
- NAKS (ohne Hochverfügbarkeit): nexus-volume
- Azure Stack Edge (ASE): managed-premium
- Standardwert: nexus-shared
--config global.networkfunctionextension.clusterRegistry.storageSize=
- Diese Konfiguration muss angegeben werden, wenn Folgendes festgelegt ist: global.networkfunctionextension.enableClusterRegistry=true.
- Diese Konfiguration konfiguriert die Größe, die wir für die Clusterregistrierung reservieren.
- Diese Konfiguration verwendet Gi als Einheit und Ti für die Dimensionierung.
- Standardwert: 100 Gi
--config global.networkfunctionextension.clusterRegistry.clusterRegistryGCCadence=
- Diese Konfiguration muss als Zeitplan im standardmäßigen Unix-Crontab-Format bereitgestellt werden.
- Diese Konfiguration, die als leere Zeichenfolge angegeben wurde, deaktiviert den geplanten Auftrag, sodass Kunden die Ausführung der Garbage Collection deaktivieren können.
- Standardwert: "0 0 * * *" – Führt den Auftrag einmal täglich aus.
--config global.networkfunctionextension.clusterRegistry.clusterRegistryGCThreshold=
- Diese Konfiguration gibt den prozentualen Schwellenwert an, um den Garbage Collection-Prozess der Clusterregistrierung auszulösen.
- Diese Konfiguration löst den Garbage Collection-Prozess aus, wenn die Clusterregistrierungsnutzung diesen Wert überschreitet.
- Standardwert: 0.
Hinweis
- Beim Verwalten eines NAKS-Clusters mit AOSM aktivieren die Standardparameterwerte Hochverfügbarkeit als empfohlene Konfiguration.
- Beim Verwalten eines AKS-Clusters mit AOSM muss Hochverfügbarkeit mit den folgenden Konfigurationsoptionen deaktiviert werden:
--config global.networkfunctionextension.clusterRegistry.highAvailability.enabled=false
--config global.networkfunctionextension.webhook.highAvailability.enabled=false
--config global.networkfunctionextension.clusterRegistry.storageClassName=managed-csi
Aktualisieren der Netzwerkfunktionserweiterung
Der Azure CLI-Befehl „az k8s-extension update“ wird ausgeführt, um die NFO-Erweiterung zu aktualisieren.
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 der Netzwerkfunktionserweiterung
Der Azure CLI-Befehl „az k8s-extension delete“ wird ausgeführt, um die NFO-Erweiterung zu löschen.
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 Netzwerkfunktionserweiterung 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 Netzwerkfunktionserweiterung 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 Netzwerkfunktionserweiterung mit aktivierter Clusterregistrierungsfunktion (standardmäßiger Lazy Loading-Modus) in 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 Netzwerkfunktionserweiterung mit aktivierter Clusterregistrierungsfunktion (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 Netzwerkfunktionserweiterung mit aktivierter Clusterregistrierungsfunktion (frühzeitiges 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 Netzwerkfunktionserweiterung mit aktivierter Funktion zum Querladen:
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 Netzwerkfunktionserweiterung, 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 Netzwerkfunktionserweiterung, 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