Verwalten der Publisher-Ressourcenbereinigung

In diesem Artikel wird ein neues Feature vom Azure Operator Service Manager (AOSM) beschrieben, das nicht verwendete Herausgeberartefakte erkennt und das Löschen von Ressourcen automatisiert. Dieses Feature trägt dazu bei, die Größe des Ressourcenspeichers zu verringern und die Gesamtkosten für Dienste zu senken. Dieses Feature verbessert auch die Sicherheit, indem unnötige Ressourcen zeitnah gelöscht, der Zugriff verhindert oder potenzielle Manipulationen verhindert werden.

Publisher-Ressourcenbereinigung – historischer Ansatz

Vor diesem Feature führt ein Benutzer zum Bereinigen von AOSM-Herausgeberressourcen zuerst eine Azure Resource Graph (ARG)-Abfrage aus, um zu prüfen, ob in-use-Verweise auf Zielressourcen vorhanden sind. Überprüfen Sie beispielsweise, ob eine Netzwerkdienstentwurfsversion (Network Service Design Version, NSDV) weiterhin von einem Standortnetzwerkdienst (Site Network Services, SNS) verwendet wird. Wenn die ARG-Abfrage ohne Verweise antwortet, führt der Benutzer einen Befehl aus, um die Zielressource zu löschen. Während die meisten Ressourcentypen die Verweisermittlung unterstützen, unterstützten Artefaktverweise in einem Artefaktspeicher dies nicht, wodurch die sichere Bereinigung von Artefakten erschwert wurde. Weitere historische Mängel sind:

  • NSDV und NFDV haben nur artifact-store-Verweise, was die Abfrage zur Ermittlung von Artefakt-Verweisen unmöglich macht.
  • Artefakte, die direkt in die artifact-store zugrunde liegende Azure Container Registry (ACR) hochgeladen werden, erzeugen keine Verweise.
  • Wenn Helm-Diagramme auf Artefakte in Nicht-Azure ACRs verweisen, ist es schwierig, die Referenzen zu ermitteln.

Neuer Ansatz zur Bereinigung von Publisher-Ressourcen

Diese Funktion führt einen automatisierten zweistufigen Prozess ein, der ungenutzte Artefakte zunächst enttaggt und später löscht, wenn ein artifact manifest gelöscht wird. Um diese Funktion zu unterstützen, wird der artifact manifest Ressourcentyp erweitert, um Referenzen zwischen einem Artefakt, wie einem Helmdiagramm oder Containerabbild, und anderen Ressourcen wie Network Function Design Version (NFDV) oder NSDVeinzuschließen.

Bei einem Versuch der Löschung eines artifact manifest, werden diese Referenzen überprüft, um sicherzustellen, dass das Artefakt nicht mit irgendwelchen in der Nutzung befindlichen Ressourcen verknüpft ist. Wenn diese Überprüfung erfolgreich ist, werden Artefakte für den Löschvorgang (nicht markiert) gekennzeichnet und eine Erfolgsmeldung zurückgegeben. Wenn diese Validierung fehlschlägt, führt die Löschanfrage zu einem Fehler, und es wird eine Fehlermeldung zurückgegeben, die darauf hinweist, dass das Artefakt zusammen mit der Ressource, die es noch verwendet, als in Verwendung festgestellt wurde. Im Folgenden ist ein Beispiel für eine Fehlschlagsmeldung: The resource '<artifactmanifest resourceId>' has some resources attached to it. The dependent resources are: "<NSDV/NFDV resource ids>"

Um die nicht getaggten Artefakte zu entfernen, wird ein Azure CLI-Befehl ausgeführt. Gültige Anwendungsfälle umfassen: Ein Administrator, der den Befehl ad-hoc ausführt, eine automatisierte Kundenpipeline, die den Befehl ausführt, oder ein zeitbasierter Scheduler wie crontab, der den Befehl ausführt. Der Delayed-Purge-Ansatz bietet zusätzliche Zeit für notwendige manuelle Validierungen oder Genehmigungen, um die Löschgenauigkeit sicherzustellen oder eine Löschanfrage vollständig rückgängig zu machen.

Änderungen am Typ der Artefakt-Manifest-Ressource

Um die erweiterten artifact manifest Ressourcentypspezifikationen zu unterstützen, werden Änderungen an der Resource Provider API eingeführt, beginnend mit Version 2025-03-30. In den folgenden Abschnitten wird das Verhalten von AOSM vor und nach der Implementierung dieser Featureänderung beschrieben. Die Migration zu diesem neuen erweiterten Ressourcentyp ist optional und die Migration wird später in diesem Artikel behandelt.

Artefaktmanifest verwendet starke Korrelation

Der artifact manifest-Ressourcentyp hat eine starke Korrelation zu Helm-Artefakten (Bilder und Diagramme), die in eine ACR mit Unterstützung für „artifact-store“ hochgeladen wurden. Alle artefakte, die von einer nfApp verwendet werden, werden in eindeutig versionsierten Artefaktmanifestinstanzen aufbewahrt. Dadurch werden Referenzverbindungen zwischen Artefakten und nfApps erstellt.

Vor 2025-03-30

Im artifact manifest-Ressourcentyp ist keine starke Korrelation vorhanden.

Repositories

  • nginx
  • testapp
"artifacts": [ 
            { 
                "artifactName": "testapp", 
                "artifactType": "OCIArtifact", 
                "artifactVersion": "1.0.0" 
            }, 
            { 
                "artifactName": "nginx", 
                "artifactType": "OCIArtifact", 
                "artifactVersion": "1.0.0" 
            } 

Gehen Sie unter „2025-03-30“ wie folgt vor:

Der artifact manifest Ressourcentyp überprüft Artefakte im artifact manifest Pfad. Keine Änderung im artifact manifest-Textkörper.

Repositories

  • cnfmanifest/nginx
  • cnfmanifest/testapp
"artifacts": [ 
            { 
                "artifactName": "testapp", 
                "artifactType": "OCIArtifact", 
                "artifactVersion": "1.0.0" 
            }, 
            { 
                "artifactName": "nginx", 
                "artifactType": "OCIArtifact", 
                "artifactVersion": "1.0.0" 
            } 
        ]

Bereichszuordnungstoken für Artefaktmanifest

Der artifact manifest-Ressourcentyp erstellt Bereichszuordnungstoken mit dem Artefaktnamen, der im Pfad enthalten ist.

Vor 2025-03-30

Es wurden keine Bereichszuordnungstoken erstellt.

Repositories

  • nginx
  • testapp

Gehen Sie unter „2025-03-30“ wie folgt vor:

Scope-Map-Token mit Pfad werden gleichzeitig mit dem artifact manifest erstellt.

Repositories

  • cnfmanifest/nginx
  • cnfmanifest/testapp

Uploadpfad des Artefaktmanifests

Alle Bilder, die zu einem artifact manifest gehören, werden mit dem Namen des artifact manifest im Zielpfad hochgeladen.

Vor 2025-03-30

Beim Hochladen von Artefakten gelten keine Pfadanforderungen.

Repositories

  • nginx
  • testapp

Gehen Sie unter „2025-03-30“ wie folgt vor:

Pfadanforderungen werden für Artefakte im Ressourcentyp artifact manifest durchgesetzt.

Repositories

  • cnfmanifest/nginx
  • cnfmanifest/testapp

Aufheben der Markierung für Artefaktmanifeste zum Löschen

Durch das Löschen eines artifact manifest-Ressourcentyps wird die Markierung aller Artefakte in dieser Manifestversion entfernt.

Vor 2025-03-30

Beim Löschen eines artifact manifest-Ressourcentyps wurden keine Änderungen an unterstützenden ACR für „artifact-store“ vorgenommen.

Gehen Sie unter „2025-03-30“ wie folgt vor:

Die Markierung von Artefakten wird in der ACR mit Unterstützung für „artifact-store“ entfernt, wenn ein artifact manifest-Ressourcentyp gelöscht wird.

Löschbedingung für Artefaktmanifeste

Der artifact manifest-Ressourcentyp kann nur gelöscht werden, wenn keine verweisenden Ressourcen zugeordnet sind.

Vor 2025-03-30

Keine Bedingung verhindert das Löschen des artifact manifest-Ressourcentyps.

Gehen Sie unter „2025-03-30“ wie folgt vor:

Für einen erfolgreichen Löschvorgang darf artifact manifest keine markierten Ressourcenverweise enthalten.

Endgültiges Löschen des Artefaktmanifests ohne Markierungen

Lösche ungetaggte Artefakte mit dem Azure CLI-Befehl az acr repository delete mit den entsprechenden Planungsparametern.

Vor 2025-03-30

Keine Bedingung verhinderte das endgültige Löschen von gelöschten Artefakten.

Gehen Sie unter „2025-03-30“ wie folgt vor:

Der folgende Azure CLI-Befehl kann zum endgültigen Löschen von Artefakten verwendet werden. Der Befehl kann über crontab geplant oder bei Bedarf ausgeführt werden.

PowerShell-Beispiel:

az acr manifest list-metadata -n myRegistry –r myRepository --query "[?tags[0]==null].digest" -o tsv | %{ az acr repository delete -n myRegistry --image myRepository@$_ --yes }

Bash-Beispiel:

az acr manifest list-metadata $(destination_acr_name).azurecr.io/$repo --query "[?tags[0]==null].digest" -o tsv --only-show-errors | while read -r line; do az acr repository delete -n $(destination_acr_name) --image "$repo@$line" --yes

Hinweis

Du brauchst die richtigen RBAC-Berechtigungen, um diesen Befehl auszuführen. Im Allgemeinen braucht man entweder die ArcDelete- oder die Container Registry Repository Contributor-Rolle. Wenn du nicht die richtigen Berechtigungen hast, gibt der Befehl ein Error: authentication required Ergebnis zurück.

NSDV/NFDV aktualisierte Artefaktmanifestreferenz

NSDV und NFDV enthalten einen Verweis auf den artifact manifest-Ressourcentyp.

Vor 2025-03-30

NSDV und NFDV verweisen auf den „artfact-store“-Ressourcentyp.

 "artifactStore": { 
    "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testgroup/providers/Microsoft.HybridNetwork/publishers/testpublisher/artifactStores/as "
 }

Gehen Sie unter „2025-03-30“ wie folgt vor:

NSDV und NFDV verweisen auf den artfact manifest-Ressourcentyp.

 "artifactStore": { 
    "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testgroup/providers/Microsoft.HybridNetwork/publishers/testpublisher/artifactStores/as/artifactManifests/cnfmanifest"   } 

NSDV/NFDV-API-Version

artifact manifest mit NSDV- und NFDV-Verweis muss mit Version 2025-03-30 oder höher erstellt werden.

Vor 2025-03-30

Keine solche Einschränkung.

Gehen Sie unter „2025-03-30“ wie folgt vor:

Die richtige API-Version muss zum Erstellen der artifact manifest-Ressourcentypen verwendet werden.

Migration zum neuen Artefakt-Manifest

Verwenden Sie die folgende Aufgabenliste, um eine bereitgestellte artifact manifest Ressource zu migrieren, die vor der API-Version 20025-03-30erstellt wurde, zum neuen artifact manifest Ressourcentyp, der nach der API-Version 2025-03-30verfügbar ist:

  • Bereiten Sie die Plattform vor, indem Sie die NFO-Erweiterungsversion 3.0.3131-220 (Network Function Operator) oder höher installieren.
  • Um bestehende Ressourcen zu migrieren, die mit älteren APIs erstellt wurden, führen Sie die folgenden Schritte aus. Stelle keine Änderungen bereit, bevor du den Bereitstellungsschritt erreicht hast.
    • Ändere die NSDV, NFDV und artifact manifest auf die neue API-Version um.
    • Ändere die artifact-store Referenzen, um die neuen artifact manifest Referenzen zu verwenden.
    • Aktualisieren Sie die artifact manifests mit den neuen erweiterten Artefakt-Verweisen.
    • Laden Sie die Artefakte hoch, um die neuen artifact manifest-Pfadanforderungen zu erfüllen.
    • Stellen Sie Änderungen und Aktualisierungen über alle Ressourcen hinweg bereit.
  • Die Publisher-Bereinigungsaktion unterstützt nur Ressourcen, die mit API-Version 2025-03-30 erstellt wurden.
    • In einer älteren Version erstellte Ressourcen können auf die Version 2025-03-30 aktualisiert werden.
    • Nur Artefakte, die nach dem Upgrade hochgeladen wurden, werden für die Bereinigung berücksichtigt.
    • Artefakte, die vor dem Upgrade hochgeladen wurden, werden nicht für die Bereinigung berücksichtigt.

Hinweis

Ressourcen, die mit NSDV und NFDV erstellt wurden und die weiterhin Verweise auf Artefaktespeicher anstelle von Artefaktemanifesten enthalten, können nicht verwendet werden, um außer Betrieb genommene Artefakte zu ermitteln, es sei denn, sie werden aktualisiert.

Abfrage zum Ermitteln des Artefaktmanifestverweises

Die folgende ARG-Abfrage kann verwendet werden, um alle NFDVs oder NSDVs aufzulisten, die Artefaktmanifestverweise enthalten. Wenn eine Ressource in dieser Ausgabe angezeigt wird, schlägt ein Versuch zum Löschen des Artefaktmanifests fehl.

resources
 | where type == "microsoft.hybridnetwork/publishers/networkfunctiondefinitiongroups/networkfunctiondefinitionversions" or type  == "microsoft.hybridnetwork/publishers/networkservicedesigngroups/networkservicedesignversions"
 | where properties contains "<artifactmanifestresoruceid>"
 | project id,subscriptionId,resourceGroup

Optional fügen Sie zur Abfrage eines bestimmten NFDV oder NSDVeine Referenz mit der Ressourcen-ID in die Abfrage ein.

resources
 | where type == "microsoft.hybridnetwork/publishers/networkfunctiondefinitiongroups/networkfunctiondefinitionversions" or type  == "microsoft.hybridnetwork/publishers/networkservicedesigngroups/networkservicedesignversions"
 | where id == "nfdv id" or id == "nsdv id"
 | where properties contains "<artifactmanifestresoruceid>"
 | project id,subscriptionId,resourceGroup