Opschoningsbeheer voor publisher-resources

In dit artikel wordt een nieuwe azure Operator Service Manager-functie (AOSM) beschreven waarmee ongebruikte uitgeversartefacten worden gedetecteerd en het verwijderen van resources wordt geautomatiseerd. Deze functie helpt bij het verminderen van de grootte van resourceopslag, waardoor de totale servicekosten worden verlaagd. Deze functie verbetert ook de beveiliging door onnodige resources tijdig te verwijderen, verdere toegang of mogelijke manipulatie te voorkomen.

Opschoning van historische benadering voor uitgeversresources

Voor deze functie voert een gebruiker eerst een ARG-query (Azure Resource Graph) uit om te controleren op in gebruik zijnde verwijzingen naar doelresources. Controleer bijvoorbeeld of een NSDV (Network Service Design Version) nog steeds wordt gebruikt door een SNS (Site Network Services). Als de ARG-query zonder verwijzingen reageert, voert de gebruiker een opdracht uit om de doelresource te verwijderen. Hoewel de meeste resourcetypen referentiedetectie ondersteunen, doen artefactverwijzingen in een artefactopslag dat niet, waardoor het veilig opschonen van artefacten moeilijk wordt. Andere historische tekortkomingen zijn:

  • NSDV en NFDV hebben alleen artefactopslagverwijzingen, waardoor query's voor detectie van artefactverwijzingen onmogelijk zijn.
  • Artefacten die rechtstreeks naar de artifact-store zijn geüpload die Azure Container Registry (ACR) ondersteunt, bouwen geen verwijzingen.
  • Waar Helm-charts verwijzen naar artefacten in niet-Azure ACR's, is het moeilijk om verwijzingen uit te zoeken.

Nieuwe benadering voor het opruimen van Publisher-bronnen

Deze functie introduceert een geautomatiseerd proces in twee stappen dat eerst de tags ontkoppelt en vervolgens later ongebruikte artefacten verwijdert wanneer een artifact manifest wordt verwijderd. Ter ondersteuning van deze mogelijkheid wordt het artifact-manifest resourcetype uitgebreid met verwijzingen tussen een artefact, zoals een Helm-chart of container image, en andere Resources, zoals Network Function Design Version (NFDV) of NSDV.

Bij een poging om een artifact manifestte verwijderen, worden deze verwijzingen gecontroleerd om ervoor te zorgen dat het artefact niet is gekoppeld aan resources die in gebruik zijn. Als deze validatie is geslaagd, worden artefacten gemarkeerd voor verwijdering (ongemarkeerd) en wordt een succesbericht geretourneerd. Als deze validatie mislukt, resulteert de verwijderingsaanvraag in een fout en wordt er een foutbericht geretourneerd dat aangeeft dat het artefact in gebruik is, samen met de resource die deze nog gebruikt. Het volgende codefragment is een voorbeeld van een foutbericht:

The resource '<artifactmanifest resourceId>' has some resources attached to it. The dependent resources are :"<NSDV/NFDV resource ids>"

Als u de niet-gemarkeerde artefacten wilt opschonen, moet een Azure CLI-opdracht worden uitgevoerd. Deze opdracht wordt door de beheerder uitgevoerd, geautomatiseerd via een klantpijplijn, of tijdgebonden gepland gebruikmakend van crontab. Met deze vertraagde opschoningsbewerking kunt u de nauwkeurigheid van de verwijdering handmatig valideren of gewoon een buffer maken om een verwijderaanvraag terug te keren.

Wijzigingen in het resourcetype artefactmanifest

Om de uitgebreide artifact-manifest specificaties van het resourcetype te ondersteunen, worden wijzigingen geïntroduceerd in de API van de resourceprovider, te beginnen met de versie 2025-03-30. In de volgende secties wordt het gedrag van AOSM voor en na het implementeren van deze functiewijziging beschreven. Migratie naar dit nieuwe uitgebreide resourcetype is optioneel, en de migratie wordt later in dit artikel besproken.

Artefactmanifest maakt gebruik van sterke correlatie

Het artifact manifest resourcetype heeft een sterke correlatie met Helm-artefacten (afbeeldingen en grafieken) die zijn geüpload naar een artefactopslagbacking ACR. Alle artefacten die door een nfApp worden gebruikt, worden bewaard in instanties van het artefactmanifest met unieke versienummers. Hiermee worden referentieverbindingen tussen artefacten en nfApps gemaakt.

Voor 2025-03-30

Er bestaat geen sterke correlatie in het artifact manifest resourcetype.

Repositories

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

Van 2025-03-30

Het artifact manifest resourcetype controleert artefacten in het artifact manifest-pad. Geen verandering in artifact manifest lichaam.

Repositories

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

Toewijzingstoken voor manifestbereik voor artefacten

Met artifact manifest het resourcetype worden scopetoewijzingstokens gemaakt met de artefactnaam die is opgenomen in het pad.

Voor 2025-03-30

Er zijn geen scopetoewijzingstokens gemaakt.

Repositories

  • nginx
  • testapp

Van 2025-03-30

Bereiktokens met pad worden op hetzelfde moment als de artifact manifest gemaakt.

Repositories

  • cnfmanifest/nginx
  • cnfmanifest/testapp

Uploadpad voor artefactmanifest

Alle afbeeldingen die deel uitmaken van een artifact manifest bestand, worden geüpload met behulp van de artifact manifest naam in het doelpad.

Voor 2025-03-30

Er zijn geen padvereisten voor het uploaden van artefacten.

Repositories

  • nginx
  • testapp

Van 2025-03-30

Padvereisten die worden afgedwongen voor artefacten in artifact-manifest het resourcetype.

Repositories

  • cnfmanifest/nginx
  • cnfmanifest/testapp

Artefactmanifest untag om te verwijderen

Als u een artifact manifest resourcetype verwijdert, worden alle artefacten in die manifestversie ongedaan gemaakt.

Voor 2025-03-30

Er zijn geen wijzigingen aangebracht in de back-up ACR voor een artefactarchief bij het verwijderen van een artifact manifest resourcetype.

Van 2025-03-30

Artefacten worden niet gemarkeerd in het artefactarchief waarin ACR wordt back-up gemaakt bij het verwijderen van een artifact manifest resourcetype.

Voorwaarde voor verwijderen van artefactmanifest

Het artifact manifest resourcetype kan alleen worden verwijderd als er geen verwijzende resources zijn gekoppeld.

Voor 2025-03-30

Er is geen voorwaarde voor het verwijderen van artifact manifest het resourcetype voorkomen.

Van 2025-03-30

Voor een geslaagde verwijdering mag deze artifact manifest geen gelabelde bronverwijzingen bevatten.

Artefactmanifest zonder vlag leegmaken

Verwijder niet-gemarkeerde artefacten met behulp van de Azure CLI-opdracht az acr purge op basis van de juiste planningsparameters.

Voor 2025-03-30

Geen voorwaarde voor het opschonen van verwijderde artefacten.

Van 2025-03-30

De volgende Azure CLI-opdracht kan worden gebruikt voor het opschonen van artefacten. De opdracht kan worden gepland via crontab of on-demand worden uitgevoerd.

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 }

NSDV/NFDV gereviseerde referentie voor artefact-manifest

NSDV en NFDV bevatten verwijzingen naar artifact manifest het resourcetype.

Voor 2025-03-30

De NSDV en NFDV verwijzen naar het resourcetype artfact-store.

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

Van 2025-03-30

De NSDV en NFDV verwijzen naar het artfact manifest resourcetype.

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

NSDV/NFDV API-versie

De NSDV en NFDV waarnaar wordt verwezen artifact manifest , moeten worden gemaakt met 2025-03-30 versie of hoger.

Voor 2025-03-30

Geen dergelijke beperking.

Van 2025-03-30

De juiste API-versie moet worden gebruikt om de artifact manifest resourcetypen te maken.

Migreren naar het nieuwe artefactmanifest

Gebruik de volgende takenlijst om een geïmplementeerde artifact manifest resource te migreren, gemaakt vóór API-versie 20025-03-30, naar het nieuwe artifact manifest resourcetype, beschikbaar na API-versie 2025-03-30:

  • Bereid het platform voor door de NFO-extensieversie 3.0.3131-220 (Network Function Operator) of hoger te installeren.
  • Voor bestaande resources die zijn gemaakt met oudere API's, moeten de NSDV's, NFDV's en artifact manifest worden bijgewerkt naar een nieuwere API-versie.
    • Wijzig eerst de artefactopslagverwijzingen in artifact manifest verwijzingen.
    • Werk vervolgens de artifact manifests met de uitgebreide artefactverwijzingen bij.
    • Upload ten slotte de artefacten naar het juiste artifact manifest pad.
  • De opschoonactie van de uitgever ondersteunt alleen resources die zijn gemaakt met api-versie 2025-03-30
    • Resources die in een oudere versie zijn gemaakt, kunnen worden bijgewerkt naar 2025-03-30 versie.
    • Alleen artefacten die na de upgrade zijn geüpload, worden in aanmerking genomen voor opschoning.
    • Artefacten die zijn geüpload voordat de upgrade niet in aanmerking komt voor opschonen

Opmerking

Resources die zijn gemaakt met NSDV en NFDV, die nog steeds verwijzen naar artefactarchieven in plaats van artefactmanifesten, kunnen niet worden gebruikt om artefacten buiten gebruik te stellen, tenzij ze worden bijgewerkt.

Opdracht om referentie voor artefactmanifest te ontdekken

De volgende ARG-query kan worden gebruikt om alle NFDV's of NSDV's weer te geven die artefact-manifest-verwijzingen bevatten. Als een resource in deze uitvoer wordt weergegeven, mislukt een poging om het artefactmanifest te verwijderen.

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

Optioneel, om een query uit te voeren op een specifieke NFDV of NSDV, voegt u een verwijzing naar de resource-ID in de query in.

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