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 devi solo mantenere le versioni specifiche rilasciate in produzione. Puoi definire i criteri di eliminazione con criteri per l'eliminazione degli artefatti e conservare i criteri con criteri per la conservazione degli artefatti.

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

Le eliminazioni attivate dai criteri di eliminazione vengono conteggiate nella quota di richieste di eliminazione del 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 tuoi criteri di pulizia utilizzando un job in background eseguito periodicamente. Le modifiche avranno effetto entro circa un giorno.

Numero massimo di criteri di pulizia per repository

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

Formati supportati

Durante l'anteprima, puoi impostare un criterio di pulizia sui repository standard per tutti i formati di repository tranne Apt e Yum.

Ruoli obbligatori

Per ottenere le autorizzazioni necessarie per applicare o rimuovere i criteri di pulizia, chiedi all'amministratore di concederti il ruolo IAM Amministratore di Artifact Registry (roles/artifactregistry.admin) sul progetto del 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 le autorizzazioni esatte necessarie, espandi la sezione Autorizzazioni richieste:

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 essere in grado di 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. Per creare un file dei criteri, crea e modifica un file JSON, quindi utilizza Google Cloud CLI per applicare il criterio oppure 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 il numero di versioni recenti da conservare. Non puoi utilizzare le condizioni e le versioni più recenti nello stesso criterio di Keep.

Crea un criterio di eliminazione

Un criterio di eliminazione consente di specificare l'età minima o massima per l'eliminazione degli artefatti e criteri di filtro aggiuntivi per limitare il criterio a artefatti specifici.

Se hai alcuni artefatti che non vuoi per alcun motivo eliminare, crea un criterio di conservazione conditional o una versione più recente di un criterio di conservazione e di un criterio di eliminazione. Se un artefatto corrisponde ai criteri sia nel criterio di eliminazione sia nel criterio di conservazione, l'elemento viene conservato.

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 Repositories 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 saperne di più sulla visualizzazione dei risultati del test, consulta la pagina Prova.

    Quando sei sicuro che il criterio funzioni come previsto, modifica di nuovo le impostazioni del repository e seleziona Elimina artefatti per applicare il criterio di pulizia ed elimina 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 applicati a un repository.
    • Tipo di criterio: seleziona Eliminazione condizionale.
    • Stato tag: indica se il criterio deve verificare la presenza di elementi con tag o senza tag. Gli artefatti vengono contrassegnati con tag quando esegui il push o il pull di un'immagine da o verso un repository. Per ulteriori informazioni sui tag Docker, consulta i concetti dei container.

      • Qualsiasi stato tag: ignora lo stato dei tag e si applica sia agli artefatti con tag che a quelli 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. Per ulteriori informazioni sullo stato dei tag e sui criteri di pulizia, consulta la documentazione di riferimento TagState.

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

    • Prefissi tag: sono un elenco separato da virgole di prefissi di tag. Ad esempio, i prefissi test e staging corrisponderanno alle immagini con i tag testenv e staging-1.5. tagState deve essere impostato su TAGGED per utilizzare i prefissi dei tag.
    • Prefissi di versione: sono un elenco separato da virgole di prefissi di versione degli artefatti. 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 i prefissi. Ad esempio red, blue creerà due prefissi, red e blue, e corrisponderebbe ai nomi degli artefatti red-team, redis e bluebird.
    • Precedente a: è il tempo minimo dalla creazione della versione di un artefatto nel repository, specificato come durata. Ad esempio, 30d è 30 giorni. Puoi specificare durate di 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 è 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 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 di eliminazione, 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 verificare la presenza di artefatti con tag o senza tag. Gli artefatti vengono contrassegnati con tag quando esegui il push o il pull di un'immagine da o verso un repository. Per ulteriori informazioni sui tag Docker, consulta i concetti dei container. I valori supportati sono: tagged, untagged o any. I formati che non supportano i tag vengono trattati come untagged.
  • tagPrefixes: TAG_PREFIXES è un elenco separato da virgole di prefissi dei tag. Ad esempio, "test", "staging" trova corrispondenze con i tag "testenv" e "staging-1.5". tagState deve essere impostato su TAGGED per utilizzare i prefissi dei tag.
  • versionNamePrefixes: VERSION_PREFIXES è un elenco separato da virgole di prefissi delle versioni degli artefatti. Ad esempio "v1", "v2" corrisponde alle versioni "v1.5", "v2.0alpha" e "v10.2".
  • packageNamePrefixes: PACKAGE_PREFIXES è un elenco separato da virgole di prefissi dei nomi degli artefatti. Ad esempio "red", "blue" corrisponde ai nomi degli artefatti "red-team", "redis" e "bluebird".
  • olderThan: OLDER_THAN_DURATION è il tempo minimo dalla creazione della versione di un artefatto nel repository, specificato come durata. Ad esempio, 30d è 30 giorni. Puoi specificare durate di secondi, minuti, ore o giorni aggiungendo rispettivamente s, m, h o d.
  • newerThan: NEWER_THAN_DURATION è il tempo massimo dalla creazione della versione di un artefatto nel repository, specificato come durata. Ad esempio, 30d è 30 giorni.

Creare un criterio di conservazione condizionale

Un criterio di conservazione condizionale specifica i criteri per la conservazione degli artefatti. Mantieni i criteri insieme ai criteri di eliminazione per conservare gli elementi che verrebbero eliminati in base alle specifiche del tuo 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'elemento viene conservato.

console

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

Per aggiungere un criterio di Keep a un repository esistente:

  1. Apri la pagina Repositories 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 Keep. Per ulteriori informazioni sulla visualizzazione dei risultati del test, consulta la sezione Prova.

    Una volta verificato che i criteri funzionino come previsto, modifica nuovamente 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 applicati a un repository.
    • Tipo di criterio: seleziona Conservazione condizionale.
    • Stato tag: indica se il criterio deve verificare la presenza di elementi con tag o senza tag. Gli artefatti vengono contrassegnati con tag quando esegui il push o il pull di un'immagine da o verso un repository. Per ulteriori informazioni sui tag Docker, consulta i concetti dei container.

      • Qualsiasi stato tag: ignora lo stato dei tag e si applica sia agli artefatti con tag che a quelli 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. Per ulteriori informazioni sullo stato dei tag e sui criteri di pulizia, consulta la documentazione di riferimento TagState.

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

    • Prefissi tag: sono un elenco separato da virgole di prefissi di tag. Ad esempio, i prefissi test e staging corrisponderanno alle immagini con i tag testenv e staging-1.5. tagState deve essere impostato su TAGGED per utilizzare i prefissi dei tag.
    • Prefissi di versione: sono un elenco separato da virgole di prefissi di versione degli artefatti. 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 dei nomi degli artefatti. Ad esempio, red, blue corrisponde ai nomi degli artefatti red-team, redis e bluebird.
    • Precedente a: è il tempo minimo dalla creazione della versione di un artefatto nel repository, specificato come durata. Ad esempio, 30d è 30 giorni. Puoi specificare durate di 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 è 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 un criterio di eliminazione. Per un criterio di Keep, 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 assegnato al criterio di pulizia. Il nome deve essere univoco all'interno del gruppo di criteri applicati a un repository.
  • TAG_STATUS con lo stato del tag, che indica se il criterio deve verificare la presenza di artefatti con tag o artefatti senza tag. Gli artefatti vengono contrassegnati con tag quando esegui 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 artefatti senza tag.
    • any: si applica a tutte le versioni

    I formati che non supportano i tag vengono trattati come untagged. Per ulteriori informazioni sullo stato dei tag e sui criteri di pulizia, consulta la documentazione di riferimento TagState.

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

  • VERSION_PREFIXES con un elenco separato da virgole di prefissi di versioni degli artefatti. Ad esempio, v1, v2 corrisponde alle versioni v1.5, v2.0alpha e v10.2.

  • PACKAGE_PREFIXES con un elenco di prefissi dei nomi degli artefatti separati da virgole. 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 è 30 giorni. Puoi specificare una durata 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 è 30 giorni.

Crea un criterio di conservazione della versione più recente

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

Mantieni i criteri con i criteri di eliminazione per conservare gli elementi che verrebbero eliminati in base alle specifiche del tuo criterio di eliminazione, ma che vuoi conservare. Quando un artefatto corrisponde ai criteri sia di un criterio di eliminazione sia di un criterio di conservazione, l'elemento viene conservato.

console

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

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

  1. Apri la pagina Repositories 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 Keep. Per ulteriori informazioni sulla visualizzazione dei risultati del test, consulta la sezione Prova.

    Una volta verificato che i criteri funzionino come previsto, modifica nuovamente 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 applicati a un repository.
    • Tipo di criterio: seleziona Conserva le versioni più recenti.
  5. Nel campo Conteggio conservazione, inserisci il numero di versioni di un artefatto da conservare nel repository.

  6. (Facoltativo) Seleziona Prefissi pacchetto per specificare i prefissi da applicare al 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 repository facendo clic su Mostra altro.

JSON

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

Un criterio di Keep 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 Keep. Il nome deve essere univoco all'interno del gruppo di criteri applicati a un repository.
  • PACKAGE_PREFIXES con i prefissi facoltativi del pacchetto a cui applicare il criterio di Keep. 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 Keep a tutti i pacchetti nel repository, ometti la condizione packageNamePrefixes. Viene conservato il numero specificato di versioni recenti di ciascun pacchetto nel repository.

Esempio di file di criteri

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

  • Il criterio delete-prerelease rimuove le versioni dell'elemento 30 giorni dopo il caricamento se l'artefatto inizia con la stringa alpha o v0.
  • Il criterio keep-tagged-release conserva gli artefatti contrassegnati con il prefisso release il cui nome file inizia con webapp o mobile.
  • Il criterio keep-minimum-versions conserva le cinque versioni più recenti degli elementi il cui nome file 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 impostarli per l'esecuzione nella console oppure 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 per l'accesso ai dati ad Artifact Registry. Per ricevere gli audit log di accesso ai dati per i criteri di pulizia, devi abilitare esplicitamente il tipo di scrittura dati degli audit log di accesso ai dati per il servizio Artifact Registry. Per abilitare gli audit log di accesso ai dati, consulta Abilitare gli audit log.

console

  1. Apri la pagina Repositories 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 di 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 esecuzioni di prova 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 fare 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 località a livello di una o più regioni del repository.

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

Per eseguire query sugli audit log per le esecuzioni di prova 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

I criteri di pulizia creati nella console Google Cloud vengono applicati al momento della creazione o dell'aggiornamento.

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.

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

Per applicare i criteri di pulizia, esegui questo comando nella directory contenente il file dei criteri 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 località a livello di una o più regioni del repository.
  • --no-dry-run disabilita la funzionalità di prova per il repository.
  • POLICY_FILE è il nome del file con il criterio di pulizia.

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

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

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

Aggiornamento di un criterio

console

  1. Apri la pagina Repositories 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 modificare.

  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, quindi esegui il comando seguente 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 località a livello di una o più regioni del repository.
  • --no-dry-run disabilita la funzionalità di prova per il repository.
  • POLICY_FILE è il nome del file con il criterio di pulizia.

Elenca criteri di pulizia del repository

Puoi visualizzare i criteri di pulizia associati a un repository.

console

  1. Apri la pagina Repositories 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 esistenti dei criteri di pulizia 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 località a livello di una o più regioni del repository.

Rimuovere un criterio da un repository

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

console

  1. Apri la pagina Repositories 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 per il repository.
  • POLICY_NAMES è un elenco separato da virgole di nomi di criteri per i criteri che vuoi rimuovere.

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

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

Voci di audit 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 su un repository, l'operazione viene registrata come un aggiornamento nel 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 di 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 da un repository all'altro.
  • gcr-cleaner: uno strumento per eliminare immagini container in base a criteri specificati.

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