Configura i criteri di pulizia

Un criterio di pulizia di Artifact Registry definisce i criteri per l'eliminazione automatica delle versioni degli artefatti che non ti servono più o per la conservazione degli artefatti che vuoi archiviare a tempo indeterminato.

I criteri di pulizia sono utili se archivi molte versioni degli artefatti, ma devono solo conservare le versioni specifiche che rilasci in produzione. Puoi definire i criteri di eliminazione con criteri per l'eliminazione degli artefatti e i criteri di conservazione con criteri per la conservazione degli artefatti.

Se una versione dell'artefatto corrisponde ai criteri sia in un criterio di eliminazione sia in un criterio di conservazione, Artifact Registry applica il criterio di conservazione.

Le eliminazioni attivate dai criteri di eliminazione vengono conteggiate ai fini della quota di richieste di eliminazione per progetto di Artifact Registry e sono limitate a 300.000 eliminazioni per repository al giorno.

Pianificazione dell'applicazione dei criteri

Artifact Registry elimina e conserva gli artefatti che corrispondono ai criteri di pulizia utilizzando un job in background eseguito periodicamente. Le modifiche diventeranno effettive entro circa un giorno.

Numero massimo di criteri di pulizia per repository

Puoi applicare il massimo di 10 criteri di pulizia a un repository.

Formati supportati

Puoi impostare un criterio di pulizia sui repository standard e remoti per tutti i formati di repository.

Ruoli obbligatori

Per ottenere le autorizzazioni necessarie per applicare o rimuovere i criteri di pulizia, chiedi all'amministratore di concederti il ruolo IAM Amministratore Artifact Registry (roles/artifactregistry.admin) per il progetto di repository. Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso.

Questo ruolo predefinito contiene le autorizzazioni necessarie per applicare o rimuovere i criteri di pulizia. Per visualizzare esattamente le autorizzazioni necessarie, espandi la sezione Autorizzazioni obbligatorie:

Autorizzazioni obbligatorie

Per applicare o rimuovere i criteri di pulizia sono necessarie le seguenti autorizzazioni:

  • artifactregistry.repositories.update
  • Per eliminare gli artefatti che soddisfano i criteri in un criterio di pulizia: artifactregistry.versions.delete

Potresti anche riuscire a ottenere queste autorizzazioni con i ruoli personalizzati o altri ruoli predefiniti.

Il ruolo predefinito per l'agente di servizio Artifact Registry include l'autorizzazione artifactregistry.versions.delete, necessaria per eliminare le immagini che soddisfano i criteri di un criterio di pulizia.

Creare un file di criteri

Un file dei criteri è un file JSON che definisce i criteri di eliminazione e conservazione. Puoi creare un file dei criteri creando e modificando un file JSON, quindi utilizzando Google Cloud CLI per applicare il criterio oppure utilizzando la console Google Cloud. I criteri di eliminazione specificano le condizioni per l'eliminazione degli artefatti. I criteri di Keep specificano le condizioni per conservare un artefatto o una serie di versioni recenti da conservare. Non puoi utilizzare le condizioni e le versioni più recenti nella stessa norma di conservazione.

Crea un criterio di eliminazione

Un criterio di eliminazione consente di specificare la durata minima o massima per l'eliminazione degli artefatti e ulteriori criteri di filtro per limitare il criterio a artefatti specifici.

Se hai determinati elementi che non vuoi che vengano eliminati per qualsiasi motivo, crea un criterio di conservazione conditional, un criterio di conservazione delle versioni più recenti e un criterio di eliminazione. Se un artefatto corrisponde ai criteri sia nel criterio di eliminazione sia in quello di conservazione, l'artefatto viene mantenuto.

console

Puoi creare un criterio di eliminazione per un repository nuovo o esistente.

Per aggiungere un criterio di eliminazione a un repository esistente:

  1. Apri la pagina Repository nella console Google Cloud.

    Apri la pagina Repository

  2. Nell'elenco dei repository, seleziona il repository e fai clic su Modifica repository.

  3. Nella sezione Criteri di pulizia, seleziona Prova per testare il nuovo criterio prima di impegnarti a eliminare eventuali artefatti. Per ulteriori informazioni sulla visualizzazione dei risultati del test, consulta la sezione Prova.

    Quando hai la certezza che il criterio funzioni come previsto, modifica di nuovo le impostazioni del repository e seleziona Elimina artefatti per applicare il criterio di pulizia ed eliminare gli artefatti selezionati.

  4. Fai clic su Aggiungi un criterio di pulizia e aggiungi quanto segue:

    • Nome: assegna un nome al criterio di pulizia. Il nome deve essere univoco all'interno del gruppo di criteri che applichi a un repository.
    • Tipo di criterio: seleziona Eliminazione condizionale.
    • Stato del tag: indica se il criterio deve controllare la presenza di elementi con tag o senza tag. Gli artefatti vengono taggati quando si esegui il push o il pull di un'immagine da o verso un repository. Per ulteriori informazioni sui tag Docker, consulta Concetti relativi ai container.

      • Qualsiasi stato del tag: ignora lo stato del tag e si applica agli artefatti sia con tag che senza tag.
      • Con tag: si applica solo agli elementi con tag.
      • Senza tag: si applica solo agli elementi senza tag.

      I formati che non supportano i tag vengono trattati come untagged. Se in un repository sono abilitati tag immutabili, gli artefatti con tag non possono essere eliminati.

      Per ulteriori informazioni sullo stato dei tag in relazione ai criteri di pulizia, consulta la documentazione di riferimento di TagState.

  5. Di seguito sono riportati alcuni modi facoltativi per definire il criterio di eliminazione:

    • Prefissi di tag: si tratta di un elenco di prefissi di tag separati da virgole. Ad esempio, i prefissi test e staging corrispondono a immagini con tag testenv e staging-1.5. Per utilizzare i prefissi tag, tagState deve essere impostato su TAGGED.
    • Prefissi di versione: - sono un elenco separato da virgole di prefissi delle versioni dell'artefatto. Ad esempio, v1, v2 corrisponde alle versioni v1.5, v2.0alpha e v10.2.
    • Prefissi pacchetto: un elenco di prefissi dei nomi degli artefatti. Puoi inserire più prefissi premendo Enter o , tra un prefisso. Ad esempio, red, blue crea due prefissi, red e blue, e corrisponde ai nomi degli artefatti red-team, redis e bluebird.
    • Precedente di: il tempo minimo trascorso dalla creazione della versione di un artefatto nel repository, specificato come durata. Ad esempio, 30d corrisponde a 30 giorni. Puoi specificare durate in secondi, minuti, ore o giorni aggiungendo rispettivamente s, m, h o d.
    • Più recente di: è il tempo massimo dalla creazione della versione di un artefatto nel repository, specificato come durata. Ad esempio, 30d corrisponde a 30 giorni.
  6. Puoi aggiungere altri criteri di pulizia facendo clic su Aggiungi un criterio di pulizia.

  7. Fai clic su Update (Aggiorna).

    Il criterio di pulizia viene applicato al repository. Puoi visualizzare i criteri di pulizia nella sezione Dettagli del repository facendo clic su Mostra altro.

JSON

{
  "name": "DELETE_POLICY_NAME",
  "action": {"type": "Delete"},
  "condition": {
    "tagState": "TAG_STATUS",
    "tagPrefixes": ["TAG_PREFIXES"],
    "versionNamePrefixes": ["VERSION_PREFIXES"],
    "packageNamePrefixes": ["PACKAGE_PREFIXES"],
    "olderThan": "OLDER_THAN_DURATION",
    "newerThan": "NEWER_THAN_DURATION"
  }
}

Un criterio di eliminazione deve includere un nome, un'azione e almeno una condizione.

name
Nello snippet del criterio Elimina, DELETE_POLICY_NAME è il nome del criterio. Il nome deve essere univoco all'interno del gruppo di criteri che applichi a un repository.
action
Per un criterio di eliminazione, il valore è {"type": "Delete"}.
condition
Specifica una o più delle seguenti condizioni:
  • tagState: TAG_STATUS indica se il criterio deve controllare la presenza di elementi con tag o senza tag. Gli artefatti vengono taggati quando si esegui il push o il pull di un'immagine da o verso un repository. I valori supportati sono:

    • tagged: si applica solo agli elementi con tag.
    • untagged: si applica solo agli elementi senza tag.
    • any: ignora lo stato del tag e si applica sia agli artefatti con e a quelli senza tag.

    I formati che non supportano i tag vengono trattati come untagged. Se in un repository sono abilitati tag immutabili, gli artefatti con tag non possono essere eliminati.

    Per ulteriori informazioni sui tag Docker, consulta Concetti sui container.

  • tagPrefixes: TAG_PREFIXES è un elenco di prefissi di tag separati da virgole. Ad esempio, "test", "staging" corrisponde alle immagini con tag "testenv" e "staging-1.5". Per utilizzare i prefissi tag, tagState deve essere impostato su TAGGED.

  • versionNamePrefixes: VERSION_PREFIXES è un elenco separato da virgole di prefissi della versione dell'artefatto. Ad esempio, "v1", "v2" corrisponde alle versioni "v1.5", "v2.0alpha" e "v10.2".

  • packageNamePrefixes: PACKAGE_PREFIXES è un elenco di prefissi di nomi di artefatti separati da virgole. Ad esempio, "red", "blue" corrisponde ai nomi degli artefatti "red-team", "redis" e "bluebird".

  • olderThan: OLDER_THAN_DURATION è il tempo minimo trascorso dalla creazione della versione di un artefatto nel repository, specificato come durata. Ad esempio, 30d corrisponde a 30 giorni. Puoi specificare durate in secondi, minuti, ore o giorni aggiungendo rispettivamente s, m, h o d.

  • newerThan: NEWER_THAN_DURATION è il tempo massimo trascorso dalla creazione della versione di un artefatto nel repository, specificato come durata. Ad esempio, 30d corrisponde a 30 giorni.

Creare un criterio di conservazione condizionale

Un criterio di conservazione condizionale specifica i criteri per la conservazione degli artefatti. I criteri di Keep funzionano con i criteri di eliminazione per conservare gli artefatti che verrebbero eliminati in base alle specifiche del criterio di eliminazione, ma che vuoi conservare. Quando un artefatto corrisponde ai criteri sia per un criterio di eliminazione sia per un criterio di conservazione, l'artefatto viene conservato.

console

Puoi creare un criterio di conservazione per un repository nuovo o esistente.

Per aggiungere un criterio Keep a un repository esistente:

  1. Apri la pagina Repository nella console Google Cloud.

    Apri la pagina Repository

  2. Nell'elenco dei repository, seleziona il repository e fai clic su Modifica repository.

  3. Nella sezione Criteri di pulizia, seleziona Prova per testare il nuovo criterio prima di impegnarti a eliminare eventuali artefatti. Devi impostare almeno un criterio di eliminazione per visualizzare i risultati del criterio di conservazione. Per ulteriori informazioni sulla visualizzazione dei risultati del test, consulta la sezione Prova.

    Quando hai la certezza che i criteri funzionino come previsto, modifica di nuovo le impostazioni del repository e seleziona Elimina artefatti per applicare i criteri di pulizia ed eliminare gli artefatti selezionati.

  4. Fai clic su Aggiungi un criterio di pulizia e aggiungi quanto segue:

    • Nome: assegna un nome al criterio di pulizia. Il nome deve essere univoco all'interno del gruppo di criteri che applichi a un repository.
    • Tipo di criterio: seleziona Conservazione condizionale.
    • Stato del tag: indica se il criterio deve controllare la presenza di elementi con tag o senza tag. Gli artefatti vengono taggati quando si esegui il push o il pull di un'immagine da o verso un repository. Per ulteriori informazioni sui tag Docker, consulta Concetti relativi ai container.

      • Qualsiasi stato del tag: ignora lo stato del tag e si applica agli artefatti sia con tag che senza tag.
      • Con tag: si applica solo agli elementi con tag.
      • Senza tag: si applica solo agli elementi senza tag.

      I formati che non supportano i tag vengono trattati come untagged. Se in un repository sono abilitati tag immutabili, gli artefatti con tag non possono essere eliminati. Per ulteriori informazioni sullo stato dei tag in relazione ai criteri di pulizia, consulta la documentazione di riferimento di TagState.

  5. Di seguito sono riportati alcuni modi facoltativi per definire la norma di conservazione:

    • Prefissi di tag: si tratta di un elenco di prefissi di tag separati da virgole. Ad esempio, i prefissi test e staging corrispondono a immagini con tag testenv e staging-1.5. Per utilizzare i prefissi tag, tagState deve essere impostato su TAGGED.
    • Prefissi di versione: - sono un elenco separato da virgole di prefissi delle versioni dell'artefatto. Ad esempio, v1, v2 corrisponde alle versioni v1.5, v2.0alpha e v10.2.
    • Prefissi pacchetto: si tratta di un elenco separato da virgole di prefissi di nomi di artefatti. Ad esempio, red, blue corrisponde ai nomi degli artefatti red-team, redis e bluebird.
    • Precedente di: il tempo minimo trascorso dalla creazione della versione di un artefatto nel repository, specificato come durata. Ad esempio, 30d corrisponde a 30 giorni. Puoi specificare durate in secondi, minuti, ore o giorni aggiungendo rispettivamente s, m, h o d.
    • Più recente di: è il tempo massimo dalla creazione della versione di un artefatto nel repository, specificato come durata. Ad esempio, 30d corrisponde a 30 giorni.
  6. Puoi aggiungere altri criteri di pulizia facendo clic su Aggiungi un criterio di pulizia.

  7. Fai clic su Update (Aggiorna).

    Il criterio di pulizia viene applicato al repository.

JSON

Il formato è simile a quello di un criterio di eliminazione. Per un criterio di conservazione, il valore di action è {"type": "Keep"}.

{
  "name": "KEEP_POLICY_NAME",
  "action": {"type": "Keep"},
  "condition": {
    "tagState": "TAG_STATUS",
    "tagPrefixes": ["TAG_PREFIXES"],
    "versionNamePrefixes": ["VERSION_PREFIXES"],
    "packageNamePrefixes": ["PACKAGE_PREFIXES"],
    "olderThan": "OLDER_THAN_DURATION",
    "newerThan": "NEWER_THAN_DURATION"
  }
}

Sostituisci quanto segue:

  • KEEP_POLICY_NAME con un nome per il criterio di pulizia. Il nome deve essere univoco all'interno del gruppo di criteri che applichi a un repository.
  • TAG_STATUS con lo stato del tag, che indica se il criterio deve controllare la presenza di elementi con o senza tag. Gli artefatti vengono taggati quando si esegue il push o il pull di un'immagine da o verso un repository. Per ulteriori informazioni sui tag Docker, consulta Concetti sui container.

    Le opzioni sono:

    • tagged: si applica solo agli elementi con tag.
    • untagged: si applica solo agli elementi senza tag.
    • any: si applica a tutte le versioni

    I formati che non supportano i tag vengono trattati come untagged. Se in un repository sono abilitati tag immutabili, gli artefatti con tag non possono essere eliminati. Per ulteriori informazioni sullo stato dei tag in relazione ai criteri di pulizia, consulta la documentazione di riferimento di TagState.

  • TAG_PREFIXES con un elenco di prefissi di tag separati da virgole. Ad esempio, i prefissi test e staging corrispondono a immagini con tag testenv e staging-1.5. Per utilizzare i prefissi tag, tagState deve essere impostato su TAGGED.

  • VERSION_PREFIXES con un elenco separato da virgole di prefissi delle versioni dell'artefatto. Ad esempio, v1, v2 corrisponderebbe alle versioni v1.5, v2.0alpha e v10.2.

  • PACKAGE_PREFIXES con un elenco separato da virgole di prefissi di nomi di artefatti. Ad esempio, red, blue corrisponde ai nomi degli artefatti red-team, redis e bluebird.

  • OLDER_THAN_DURATION con il tempo minimo dalla creazione della versione di un artefatto nel repository, specificato come durata. Ad esempio, 30d corrisponde a 30 giorni. Puoi specificare durate di secondi, minuti, ore o giorni aggiungendo rispettivamente s, m, h o d.
  • NEWER_THAN_DURATION con il tempo massimo dalla creazione della versione di un artefatto nel repository, specificato come durata. Ad esempio, 30d corrisponde a 30 giorni.

Crea un criterio di conservazione per le versioni più recenti

Puoi creare un criterio di conservazione per conservare un numero specifico di versioni. Non puoi utilizzare i criteri Conservazione condizionale e Conserva le versioni più recenti nello stesso criterio di conservazione.

I criteri di Keep funzionano con i criteri di eliminazione per conservare gli artefatti che verrebbero eliminati in base alle specifiche del criterio di eliminazione, ma che vuoi conservare. Quando un artefatto corrisponde ai criteri sia per un criterio di eliminazione che per un criterio di conservazione, l'artefatto viene mantenuto.

console

Puoi creare un criterio di conservazione delle versioni più recenti per un repository nuovo o esistente.

Per aggiungere un criterio di conservazione delle versioni più recenti a un repository esistente:

  1. Apri la pagina Repository nella console Google Cloud.

    Apri la pagina Repository

  2. Nell'elenco dei repository, seleziona il repository e fai clic su Modifica repository.

  3. Nella sezione Criteri di pulizia, seleziona Prova per testare il nuovo criterio prima di impegnarti a eliminare eventuali artefatti. Devi impostare almeno un criterio di eliminazione per visualizzare i risultati del criterio di conservazione. Per ulteriori informazioni sulla visualizzazione dei risultati del test, consulta la sezione Prova.

    Quando hai la certezza che i criteri funzionino come previsto, modifica di nuovo le impostazioni del repository e seleziona Elimina artefatti per applicare i criteri di pulizia ed eliminare gli artefatti selezionati.

  4. Fai clic su Aggiungi un criterio di pulizia e aggiungi quanto segue:

    • Nome: assegna un nome al criterio di pulizia. Il nome deve essere univoco all'interno del gruppo di criteri che applichi a un repository.
    • Tipo di criterio: seleziona Conserva le versioni più recenti.
  5. Nel campo Keep count, inserisci il numero di versioni di un artefatto da conservare nel repository.

  6. (Facoltativo) Seleziona Prefissi pacchetto per specificare i prefissi dei pacchetti a cui applicare il criterio di conservazione. Ad esempio, red, blue corrisponde ai nomi degli artefatti red-team, redis e bluebird.

  7. Puoi aggiungere altri criteri di pulizia facendo clic su Aggiungi un criterio di pulizia.

  8. Fai clic su Update (Aggiorna).

    Il criterio di pulizia viene applicato al repository. Puoi visualizzare i criteri di pulizia nella sezione Dettagli del repository facendo clic su Mostra altro.

JSON

Il formato è simile a quello di un criterio di eliminazione. Per un criterio di conservazione, il valore di action è {"type": "Keep"}.

Un criterio di conservazione per conservare un numero specifico di versioni ha una sezione mostRecentVersions anziché una sezione condition.

{
  "name": "KEEP_POLICY_NAME",
  "action": {"type": "Keep"},
  "mostRecentVersions": {
    "packageNamePrefixes": ["PACKAGE_PREFIXES"],
    "keepCount": MINIMUM_NUMBER
  }
}

Sostituisci quanto segue:

  • KEEP_POLICY_NAME con un nome per il criterio di conservazione. Il nome deve essere univoco all'interno del gruppo di criteri che applichi a un repository.
  • PACKAGE_PREFIXES con i prefissi facoltativi del pacchetto a cui applicare il criterio di conservazione. Ad esempio, red, blue corrisponde ai nomi degli artefatti red-team, redis e bluebird.
  • MINIMUM_NUMBER con il numero di versioni di un artefatto da conservare nel repository.

Per applicare il criterio di conservazione a tutti i pacchetti nel repository, ometti la condizione packageNamePrefixes. Viene mantenuto il numero specificato di versioni recenti di ciascun pacchetto nel repository.

File dei criteri di esempio

Il seguente esempio di file dei criteri include un criterio di eliminazione e due criteri di conservazione.

  • Il criterio delete-prerelease rimuove le versioni dell'artefatto 30 giorni dopo il caricamento se l'artefatto inizia con la stringa alpha o v0.
  • Il criterio keep-tagged-release conserva gli artefatti taggati con il prefisso release che hanno un nome file che inizia con webapp o mobile.
  • Il criterio keep-minimum-versions conserva le cinque versioni più recenti degli artefatti che hanno un nome file che inizia con webapp, mobile o sandbox.
[
  {
    "name": "delete-prerelease",
    "action": {"type": "Delete"},
    "condition": {
      "tagState": "tagged",
      "tagPrefixes": ["alpha", "v0"],
      "olderThan": "30d"
    }
  },
  {
    "name": "keep-tagged-release",
    "action": {"type": "Keep"},
    "condition": {
      "tagState": "tagged",
      "tagPrefixes": ["release"],
      "packageNamePrefixes": ["webapp", "mobile"]
    }
  },
  {
    "name": "keep-minimum-versions",
    "action": {"type": "Keep"},
    "mostRecentVersions": {
      "packageNamePrefixes": ["webapp", "mobile", "sandbox"],
      "keepCount": 5
    }
  }
]

Testa i criteri con una prova

Per testare i criteri di pulizia, puoi impostare il criterio di pulizia in modo che sia eseguito nella console o eseguire il comando gcloud artifacts set-cleanup-policies con il flag --dry-run.

Per analizzare l'effetto dei criteri di pulizia, puoi visualizzare gli audit log di accesso ai dati di Artifact Registry. Per ricevere gli audit log di accesso ai dati per i criteri di pulizia, devi abilitare esplicitamente il tipo di scrittura dei dati degli audit log di accesso ai dati per il servizio Artifact Registry. Per abilitare gli audit log di accesso ai dati, vedi Abilitare gli audit log.

console

  1. Apri la pagina Repository nella console Google Cloud.

    Apri la pagina Repository

  2. Nell'elenco dei repository, seleziona il repository e fai clic su Modifica repository.

  3. Nella sezione Criteri di pulizia, seleziona Prova.

  4. Fai clic su Aggiungi un criterio di pulizia e configura le opzioni per i criteri Eliminazione condizionale, Conservazione condizionale o Conserva le versioni più recenti.

  5. Fai clic su Update (Aggiorna).

Quando un criterio di eliminazione genera un'azione BatchDeleteVersions, il parametro validateOnly restituisce "true".

Per eseguire query sugli audit log per le prove dei criteri di pulizia, esegui questo comando:

gcloud logging read 'protoPayload.serviceName="artifactregistry.googleapis.com" AND protoPayload.request.parent:"projects/PROJECT_ID/locations/LOCATION/repositories/REPOSITORY" AND protoPayload.request.validateOnly=true' \
    --resource-names="projects/PROJECT_ID" \
    --project=PROJECT_ID

L'output è simile al seguente:

insertId: qwe123ty3
logName: projects/my-project/logs/cloudaudit.googleapis.com%2Fdata_access
operation:
  first: true
  id: projects/my-project/locations/us-west1/operations/12345abc-fb9b-4b6f-b02c-9a397ee807d4
  producer: artifactregistry.googleapis.com
protoPayload:
  '@type': type.googleapis.com/google.cloud.audit.AuditLog
  authenticationInfo:
    principalEmail: service-774919394028@gcp-sa-staging-artreg.iam.gserviceaccount.com
  authorizationInfo:
  - granted: true
    permission: artifactregistry.versions.delete
    resource: projects/my-project/locations/us-west1/repositories/docker-test-dryrun/packages/-
    resourceAttributes: {}
  methodName: google.devtools.artifactregistry.v1.ArtifactRegistry.BatchDeleteVersions
  request:
    '@type': type.googleapis.com/google.devtools.artifactregistry.v1.BatchDeleteVersionsRequest
    names:
    - projects/my-project/locations/us-west1/repositories/docker-test-dryrun/packages/docker-load-thursday/versions/sha256:4bb3756e4e75dfbc3ced87521ed62b26d16fb4e17993ae6877165f2b6551fb55
    - projects/my-project/locations/us-west1/repositories/docker-test-dryrun/packages/docker-load-thursday/versions/sha256:e8185538b50df953529b300be4963b2c21158808becac7aa0d610f61de8ba701
    - projects/my-project/locations/us-west1/repositories/docker-test-dryrun/packages/docker-load-thursday/versions/sha256:7f7fb0a9453da49f831fe92eb8b1751be13acefe1bbd44cc3f0d63d41c422246
    - projects/my-project/locations/us-west1/repositories/docker-test-dryrun/packages/docker-load-thursday/versions/sha256:84ac871a34560b39dd7bde57b4d333f18a7e8c1b61c8d350c1fefeb1fcd2b3ac
parent: projects/my-project/locations/us-west1/repositories/docker-test-dryrun/packages/-
    validateOnly: true
  requestMetadata:
    callerIp: private
    callerSuppliedUserAgent: stubby_client
    destinationAttributes: {}
    requestAttributes:
      auth: {}
      time: '2023-05-26T04:31:21.909465579Z'
  resourceName: projects/my-project/locations/us-west1/repositories/docker-test-dryrun/packages/-
  serviceName: artifactregistry.googleapis.com
receiveTimestamp: '2023-05-26T04:31:22.641338594Z'
resource:
  labels:
    method: google.devtools.artifactregistry.v1.ArtifactRegistry.BatchDeleteVersions
    project_id: my-project
    service: artifactregistry.googleapis.com
  type: audited_resource
severity: INFO
timestamp: '2023-05-26T04:31:21.909004200Z'

Interfaccia a riga di comando gcloud

Per eseguire una prova con i criteri di pulizia, esegui questo comando:

gcloud artifacts repositories set-cleanup-policies REPOSITORY \
    --project=PROJECT_ID \
    --location=LOCATION \
    --policy=POLICY_FILE \
    --dry-run

Sostituisci quanto segue:

  • REPOSITORY con il nome del repository.
  • PROJECT_ID con l'ID del tuo progetto Google Cloud.
  • LOCATION con la regione a livello di regione o più regioni località del repository.

Quando un criterio di eliminazione genera un'azione BatchDeleteVersions, il parametro validateOnly restituisce "true".

Per eseguire query sugli audit log per le prove dei criteri di pulizia, esegui questo comando:

gcloud logging read 'protoPayload.serviceName="artifactregistry.googleapis.com" AND protoPayload.request.parent:"projects/PROJECT_ID/locations/LOCATION/repositories/REPOSITORY" AND protoPayload.request.validateOnly=true' \
    --resource-names="projects/PROJECT_ID" \
    --project=PROJECT_ID

L'output è simile al seguente:

insertId: qwe123ty3
logName: projects/my-project/logs/cloudaudit.googleapis.com%2Fdata_access
operation:
  first: true
  id: projects/my-project/locations/us-west1/operations/12345abc-fb9b-4b6f-b02c-9a397ee807d4
  producer: artifactregistry.googleapis.com
protoPayload:
  '@type': type.googleapis.com/google.cloud.audit.AuditLog
  authenticationInfo:
    principalEmail: service-774919394028@gcp-sa-staging-artreg.iam.gserviceaccount.com
  authorizationInfo:
  - granted: true
    permission: artifactregistry.versions.delete
    resource: projects/my-project/locations/us-west1/repositories/docker-test-dryrun/packages/-
    resourceAttributes: {}
  methodName: google.devtools.artifactregistry.v1.ArtifactRegistry.BatchDeleteVersions
  request:
    '@type': type.googleapis.com/google.devtools.artifactregistry.v1.BatchDeleteVersionsRequest
    names:
    - projects/my-project/locations/us-west1/repositories/docker-test-dryrun/packages/docker-load-thursday/versions/sha256:4bb3756e4e75dfbc3ced87521ed62b26d16fb4e17993ae6877165f2b6551fb55
    - projects/my-project/locations/us-west1/repositories/docker-test-dryrun/packages/docker-load-thursday/versions/sha256:e8185538b50df953529b300be4963b2c21158808becac7aa0d610f61de8ba701
    - projects/my-project/locations/us-west1/repositories/docker-test-dryrun/packages/docker-load-thursday/versions/sha256:7f7fb0a9453da49f831fe92eb8b1751be13acefe1bbd44cc3f0d63d41c422246
    - projects/my-project/locations/us-west1/repositories/docker-test-dryrun/packages/docker-load-thursday/versions/sha256:84ac871a34560b39dd7bde57b4d333f18a7e8c1b61c8d350c1fefeb1fcd2b3ac
parent: projects/my-project/locations/us-west1/repositories/docker-test-dryrun/packages/-
    validateOnly: true
  requestMetadata:
    callerIp: private
    callerSuppliedUserAgent: stubby_client
    destinationAttributes: {}
    requestAttributes:
      auth: {}
      time: '2023-05-26T04:31:21.909465579Z'
  resourceName: projects/my-project/locations/us-west1/repositories/docker-test-dryrun/packages/-
  serviceName: artifactregistry.googleapis.com
receiveTimestamp: '2023-05-26T04:31:22.641338594Z'
resource:
  labels:
    method: google.devtools.artifactregistry.v1.ArtifactRegistry.BatchDeleteVersions
    project_id: my-project
    service: artifactregistry.googleapis.com
  type: audited_resource
severity: INFO
timestamp: '2023-05-26T04:31:21.909004200Z'

Applica criteri a un repository

Per utilizzare i criteri di pulizia definiti in un file JSON locale, applicali ai repository in cui vuoi che Artifact Registry gestisca l'eliminazione automatica delle versioni degli artefatti utilizzando gcloud CLI.

Per applicare i criteri di pulizia impostati su Dry run nella console, imposta il criterio su Elimina artefatti.

Puoi applicare criteri di pulizia solo ai repository standard. Non puoi applicare criteri di pulizia a:

  • Un progetto Google Cloud.

console

Per applicare i criteri di pulizia:

  1. Apri la pagina Repository nella console Google Cloud.

    Apri la pagina Repository

  2. Nell'elenco dei repository, seleziona il repository e fai clic su Modifica repository.

  3. Nella sezione Criteri di pulizia, seleziona Elimina artefatti.

    Artifact Registry elimina e conserva gli artefatti che corrispondono ai tuoi criteri utilizzando un job in background che viene eseguito periodicamente. Le modifiche dovrebbero diventare effettive entro circa un giorno.

gcloud

Per applicare i criteri di pulizia, esegui questo comando nella directory con il file del criterio di pulizia.

gcloud artifacts repositories set-cleanup-policies REPOSITORY \
    --project=PROJECT_ID \
    --location=LOCATION \
    --policy=POLICY_FILE \
    --no-dry-run

Sostituisci quanto segue:

  • REPOSITORY con il nome del repository.
  • PROJECT_ID con l'ID del tuo progetto Google Cloud.
  • LOCATION con la regione a livello di regione o più regioni località del repository.
  • --no-dry-run disabilita la funzionalità dry run per il repository.
  • POLICY_FILE è il nome del file con il criterio di pulizia.

Ad esempio, il seguente comando applica i criteri in policy.json al repository my-repo nella regione us-west1 nel progetto my-project.

gcloud artifacts repositories set-cleanup-policies my-repo \
    --project=my-project \
    --location=us-west1 \
    --policy=policy.json

Artifact Registry elimina e conserva gli artefatti che corrispondono ai criteri utilizzando un job in background eseguito periodicamente. Le modifiche dovrebbero essere effettive entro circa un giorno.

Aggiornamento di un criterio

console

  1. Apri la pagina Repository nella console Google Cloud.

    Apri la pagina Repository

  2. Nell'elenco dei repository, seleziona il repository e fai clic su Modifica repository.

  3. Nella sezione Criteri di pulizia, fai clic sul nome del criterio che vuoi impostare per la modifica.

  4. Modifica il criterio di pulizia e fai clic su Aggiorna.

    Il criterio di pulizia viene applicato al repository.

Interfaccia a riga di comando gcloud

Per aggiornare i criteri esistenti, modifica le impostazioni nel file dei criteri ed esegui questo comando per applicare nuovamente i criteri.

gcloud artifacts repositories set-cleanup-policies REPOSITORY \
    --project=PROJECT_ID \
    --location=LOCATION \
    --policy=POLICY_FILE \
    --no-dry-run

Sostituisci quanto segue:

  • REPOSITORY con il nome del repository.
  • PROJECT_ID con l'ID del tuo progetto Google Cloud.
  • LOCATION con la regione a livello di regione o più regioni località del repository.
  • --no-dry-run disabilita la funzionalità dry run per il repository.
  • POLICY_FILE è il nome del file con il criterio di pulizia.

Elenca i criteri di pulizia del repository

Puoi visualizzare i criteri di pulizia associati a un repository.

console

  1. Apri la pagina Repository nella console Google Cloud.

    Apri la pagina Repository

  2. Nell'elenco dei repository, seleziona quello che vuoi visualizzare.

  3. Nella sezione Dettagli repository, fai clic su Mostra altro.

    Vengono visualizzati i nomi dei criteri di pulizia.

  4. Per visualizzare o modificare i dettagli dei criteri di pulizia del repository, fai clic su Modifica repository.

    I dettagli dei criteri di pulizia esistenti sono elencati nella sezione Criteri di pulizia.

Interfaccia a riga di comando gcloud

Esegui questo comando:

gcloud artifacts repositories list-cleanup-policies REPOSITORY \
    --project=PROJECT_ID \
    --location=LOCATION

Sostituisci quanto segue:

  • REPOSITORY con il nome del repository.
  • PROJECT_ID con l'ID del tuo progetto Google Cloud.
  • LOCATION con la regione a livello di regione o più regioni località del repository.

Rimuovi un criterio da un repository

Rimuovi un criterio di pulizia da un repository se non vuoi più che Artifact Registry elimini automaticamente le versioni degli artefatti.

console

  1. Apri la pagina Repository nella console Google Cloud.

    Apri la pagina Repository

  2. Nell'elenco dei repository, seleziona il repository e fai clic su Modifica repository.

  3. Nella sezione Criteri di pulizia, passa il mouse sopra il nome del criterio che vuoi eliminare.

  4. Fai clic sull'icona Elimina.

  5. Fai clic su Update (Aggiorna).

    Il criterio di pulizia è stato eliminato.

Interfaccia a riga di comando gcloud

Esegui questo comando:

gcloud artifacts repositories delete-cleanup-policies REPOSITORY \
    --policynames=POLICY_NAMES \
    --project=PROJECT_ID \
    --location=LOCATION

Sostituisci quanto segue:

  • REPOSITORY è il nome del repository.
  • PROJECT_IDè l'ID del tuo progetto Google Cloud.
  • LOCATION è la località a livello di una o più regioni località del repository.
  • POLICY_NAMES è un elenco separato da virgole di nomi di criteri per i criteri da rimuovere.

Ad esempio, il seguente comando rimuove un criterio denominato delete-test dal repository my-repo nella regione us-west1 nel progetto my-project:

gcloud artifacts repositories delete-cleanup-policies my-repo \
    --policynames=delete-test \
    --project=my-project \
    --location=us-west1

Controlla le voci del log per i criteri di pulizia

Per visualizzare le voci di log del criterio di pulizia in Cloud Logging, devi enable il logging di DATA_WRITE.

Quando imposti un criterio di pulizia in un repository, l'operazione viene registrata come un aggiornamento del repository (operazione UpdateRepository).

Quando Artifact Registry elimina una versione di un artefatto, registra l'evento nei log di accesso ai dati di Cloud Logging. Le voci di log mostrano che l'account di servizio Artifact Registry ha eseguito l'eliminazione. L'ID dell'account di servizio Artifact Registry è nel formato service-PROJECT-NUMBER@gcp-sa-artifactregistry.iam.gserviceaccount.com

Altri strumenti

Per le immagini container, puoi anche utilizzare i seguenti strumenti per la gestione del ciclo di vita delle immagini:

  • gcrane: uno strumento per i registri di container che puoi utilizzare per copiare immagini tra repository.
  • gcr-cleaner: uno strumento per eliminare le immagini container in base ai criteri specificati.

Gli strumenti gcrane e gcr-cleaner non sono prodotti Google ufficiali.