Limpieza de los espacios de nombres en Container Registry

Puedes limpiar tu espacio de nombresUna serie de repositorios que almacenan imágenes en un registro. Un espacio de nombres se asocia a una cuenta de IBM Cloud, que puede incluir varios espacios de nombres. seleccionando la opción de conservar solo las imágenes más recientes de cada repositorio de ese espacio de nombres en IBM Cloud® Container Registry.

También puede elegir si suprimir o retener las imágenes sin etiquetar.

Puede detectar y eliminar imágenes antiguas de todos los repositorios de un espacio de nombres ejecutando un comando puntual ibmcloud cr retention-run o programando una política mediante el comando ibmcloud cr retention-policy-set. Puede elegir el número de imágenes que desea conservar en cada repositorio de un espacio de nombres; las demás imágenes se suprimirán automáticamente. Ambas opciones conservan las imágenes más recientes. La antigüedad de la imagen viene determinada por la fecha en que se creó, no por la fecha en que se subió al registroServicio de almacenamiento y distribución que contiene imágenes públicas o privadas que se utilizan para crear contenedores.. El número de imágenes que se conservan es el mismo para cada repositorio de dicho espacio de nombres.

También puedes establecer un umbral de eliminación para proteger de la eliminación las imágenes creadas recientemente. Cuando se establece un umbral de eliminación, las imágenes que tengan menos del número de días especificado siempre se conservan, incluso si al conservarlas el recuento por repositorio supera el valor de « --images ».

En ibmcloud cr retention-run y ibmcloud cr retention-policy-set producen una lista de imágenes a borrar. Debes confirmar que deseas eliminar esas imágenes. Después de ejecutar el mandato ibmcloud cr retention-policy-set por primera vez, la política se ejecuta automáticamente y suprime las imágenes que cumplen con los criterios especificados en la política. Las imágenes suprimidas se almacenan en la papelera durante 30 días.

Si desea comprobar qué contiene la papelera, ejecute el mandato ibmcloud cr trash-list. Puede restaurar imágenes desde la papelera ejecutando el mandato ibmcloud cr image-restore.

No se pueden eliminar imágenes de la papelera. Las imágenes se almacenan en la papelera durante 30 días. No se te cobrará por las imágenes que estén en la papelera.

Si desea comprobar las políticas, ejecute el mandato ibmcloud cr retention-policy-list.

Si desea actualizar una política con nuevos ajustes, consulte Actualizar una política de retención.

Si desea cancelar una política, actualice la política de retención para que conserve todas sus imágenes.

También puede limpiar el espacio de nombres suprimiendo las imágenes sin etiquetar.

Planificar la retención

Los mandatos ibmcloud cr retention-run e ibmcloud cr retention-policy-set funcionan en base a espacios de nombres. Si tiene varios espacios de nombres en su conducto, puede aplicar diferentes criterios de retención para cada espacio de nombres con el fin de que se ajusten mejor a sus necesidades.

Imaginemos un conducto de entrega típico con entornos de desarrollo, transferencia y producción. A medida que se entrega el código, la integración continua y el despliegue continuo envía imágenes al registro y las despliega directamente en el entorno de desarrollo. Después del período de pruebas, algunas compilaciones ascienden del entorno de desarrollo al de transferencia y después, potencialmente, al de producción. Es este escenario, la velocidad de cambio de imágenes es más rápido en el entorno de desarrollo y más lento en el de producción. Si todos sus entornos extraen imágenes del mismo espacio de nombres, puede ser difícil elegir un número adecuado de imágenes que retener debido a esta diferencia de velocidad.

Una buena estrategia consiste en publicar todas las imágenes en un espacio de nombres de desarrollo, por ejemplo project-development, y, a continuación, utilizar el comando ibmcloud cr image-tag para etiquetar la imagen en un espacio de nombres diferente cuando se promueva a una etapa superior del proceso. En el ejemplo anterior, puede haber tres espacios de nombres: development project-development, project-staging staging y production project-production. Al ascender de desarrollo a transferencia, las imágenes se etiquetan, desde el espacio de nombres project-development al espacio de nombres project-staging y las imágenes del espacio de nombres project-staging se utilizan para el despliegue. De forma similar, al ascender de transferencia a producción, las imágenes se etiquetan desde el espacio de nombres project-staging al espacio de nombres project-production y las imágenes del espacio de nombres project-production se utilizan en el despliegue de producción.

Utilizando esta técnica obtiene las siguientes ventajas:

  • Puede elegir distintos valores de retención para los espacios de nombres de desarrollo, transferencia y producción.
  • Se minimizan las posibilidades de eliminar accidentalmente una imagen que se pueda estar utilizando en los entornos de transferencia o de producción, contrariamente a cuando se utiliza un solo espacio de nombres para todas las imágenes.
  • Puede utilizar distintas políticas de IAM. Por ejemplo, puede tener un acceso más restrictivo para las imágenes de producción.
  • Se pueden firmar las imágenes de producción, pero las imágenes de desarrollo y de prueba deben permanecer sin firmar.

Algunas herramientas de compilación, por ejemplo, Cloud Native Buildpacks y las imágenes base sin distro, producen imágenes con la fecha de compilación fijada a una constante específica en lugar de la hora de compilación real o sin ninguna marca de tiempo de compilación. Si desea utilizar políticas de retención en espacios de nombres que contienen imágenes que se crean utilizando herramientas similares, tenga en cuenta que las imágenes que no tienen una fecha de creación y las imágenes que se crearon antes de 2013-01-19T00:13:39Z siempre se conservan.

Para obtener más información, consulta los siguientes temas:

Limpie los espacios de nombres para conservar un número de imágenes establecido

Utilice el mandato ibmcloud cr retention-run para limpiar un espacio de nombres reteniendo un número especificado de imágenes de cada uno de los repositorios dentro de un espacio de nombres en IBM Cloud Container Registry. Todas las demás imágenes del espacio de nombres se suprimen.

Puede seleccionar si excluir las imágenes sin etiquetar del proceso de limpieza. También puedes establecer un umbral de eliminación para que las imágenes creadas recientemente nunca se eliminen.

El mandato ibmcloud cr retention-run da una lista de las imágenes que se deben suprimir y ofrece la opción de cancelar antes de la supresión.

Cuando se hace referencia a una imagen desde varias etiquetas, dentro de un mismo repositorio, esa imagen sólo se cuenta una vez. Se conservan las imágenes más recientes. La antigüedad viene determinada por el momento en que se creó la imagen, no por el momento en que se envió al registro.

El comando retención se ejecuta contra cada repositorio en su espacio de nombres. Si tiene más de un repositorio en su espacio de nombres, el recuento de imágenes tras la ejecución del comando retención puede ser superior al número que haya establecido como máximo para un repositorio. Por ejemplo, si establece su comando retención en 500 imágenes por repositorio, y tiene 10 repositorios en su espacio de nombres, podría tener un recuento de imágenes de 5.000.

Si desea restaurar una imagen suprimida, puede generar una lista del contenido de la papelera ejecutando el mandato ibmcloud cr trash-list y restaurar una imagen seleccionada ejecutando el mandato ibmcloud cr image-restore.

Para reducir el número de imágenes en cada repositorio dentro de su espacio de nombres mediante la interfaz de línea comando (CLI), siga los siguientes pasos:

  1. Inicie sesión en IBM Cloud con el mandato ibmcloud login.

  2. Elija el registro en el que desea limpiar las imágenes ejecutando el mandato siguiente y seleccionando la región adecuada:

    ibmcloud cr region-set
    
  3. Para conservar las imágenes más recientes y eliminar las demás, ejecuta uno de los siguientes comandos :

    • Si desea limpiar tanto las imágenes etiquetadas como sin etiquetar, ejecute el mandato siguiente:
        ibmcloud cr retention-run --images IMAGE_COUNT NAMESPACE
        ```
        Donde `IMAGE_COUNT` es el número de imágenes que deseas conservar para cada repositorio dentro de tu espacio de nombres `NAMESPACE`.
    
    - Si desea limpiar solo las imágenes etiquetadas y retener todas las imágenes sin etiquetar, ejecute el mandato siguiente:
    
    ```txt {: pre}
        ibmcloud cr retention-run --retain-untagged --images IMAGE_COUNT NAMESPACE
        ```
        Donde `IMAGE_COUNT` es el número de imágenes que deseas conservar para cada repositorio dentro de tu espacio de nombres `NAMESPACE`.
    
    - Si quieres evitar que se borren las imágenes creadas recientemente, utiliza la opción « `--deletion-threshold-days` ». Las imágenes más recientes que el número de días especificado siempre se conservan, aunque superen el número de imágenes de la lista « `--images` »:
    
    ```txt {: pre}
        ibmcloud cr retention-run --images IMAGE_COUNT --deletion-threshold-days DAYS NAMESPACE
        ```
        Donde `IMAGE_COUNT` es el número de imágenes que se van a conservar, `DAYS` es el tiempo mínimo en días que debe transcurrir antes de que se pueda eliminar una imagen, y `NAMESPACE` es tu espacio de nombres.
    
    Si una imagen que espera ver no aparece en la lista que se genera, consulte [¿Por qué el mandato de retención no muestra todas las imágenes?](/docs/Registry?topic=Registry-troubleshoot-image-list-retention) para obtener ayuda.
    {: tip}
    
    
  4. Verifique que las imágenes se han suprimido ejecutando el mandato siguiente y compruebe que no aparecen en la lista.

    ibmcloud cr image-list
    

    Si el comando para listar imágenes agota el tiempo de espera, consulta ¿Por qué se agota el tiempo de espera al listar imágenes? para obtener ayuda.

Establecer una política de retención para los espacios de nombres

Puede establecer una política de retención para los espacios de nombres para retener sólo las imágenes que cumplan los criterios. La política de retención se ejecuta automáticamente para limpiar los espacios de nombres.

Puede seleccionar si excluir las imágenes sin etiquetar del proceso de limpieza. También puedes establecer un umbral de eliminación para que las imágenes creadas recientemente nunca se eliminen.

Puede utilizar el mandato ibmcloud cr retention-policy-set para definir una política que retenga un número especificado de imágenes para cada repositorio en un espacio de nombres en IBM Cloud Container Registry. Todas las demás imágenes del espacio de nombres se suprimen y se mueven a la papelera. Cuando defina una política, se ejecuta automáticamente y luego se ejecuta a diario. Puede definir solamente una política en cada espacio de nombres.

Cuando se hace referencia a una imagen desde varias etiquetas, dentro de un mismo repositorio, esa imagen sólo se cuenta una vez. Se conservan las imágenes más recientes. La antigüedad viene determinada por el momento en que se creó la imagen, no por el momento en que se envió al registro.

Las políticas de retención se establecen por repositorio en su espacio de nombres. Si tiene más de un repositorio en su espacio de nombres, el recuento de imágenes después de que se ejecute el comando de política de retención podría ser mayor que el número que estableció como máximo para un repositorio. Por ejemplo, si establece su política de retención en 500 imágenes por repositorio, y tiene 10 repositorios en su espacio de nombres, podría tener un recuento de imágenes de 5.000.

Si suprime una imagen por error, puede restaurarla utilizando los mandatos ibmcloud cr trash-list e ibmcloud cr image-restore.

Para definir una política y mover inmediatamente las imágenes suprimidas a la papelera, lleve a cabo los pasos siguientes:

  1. Inicie sesión en IBM Cloud con el mandato ibmcloud login.

  2. Elija el registro en el que desea limpiar las imágenes ejecutando el mandato siguiente y seleccionando la región adecuada:

    ibmcloud cr region-set
    
  3. Para definir una política que retenga las imágenes más recientes y suprima las demás, ejecute uno de los mandatos siguientes:

    • Si desea limpiar tanto las imágenes etiquetadas como sin etiquetar, ejecute el mandato siguiente:
        ibmcloud cr retention-policy-set --images IMAGE_COUNT NAMESPACE
        ```
        Donde `IMAGE_COUNT` es el número de imágenes que deseas conservar para cada repositorio dentro de tu espacio de nombres `NAMESPACE`.
    
        Se visualiza una lista de las imágenes que se han de suprimir.
    
    - Si desea limpiar solo las imágenes etiquetadas y retener todas las imágenes sin etiquetar, ejecute el mandato siguiente:
    
    ```txt {: pre}
        ibmcloud cr retention-policy-set --retain-untagged --images IMAGE_COUNT NAMESPACE
        ```
        Donde `IMAGE_COUNT` es el número de imágenes que deseas conservar para cada repositorio dentro de tu espacio de nombres `NAMESPACE`.
    
        Se visualiza una lista de las imágenes que se han de suprimir.
    
    - Si quieres evitar que se borren las imágenes creadas recientemente, utiliza la opción « `--deletion-threshold-days` ». Las imágenes más recientes que el número de días especificado siempre se conservan, aunque superen el número de imágenes de la lista « `--images` »:
    
    ```txt {: pre}
        ibmcloud cr retention-policy-set --images IMAGE_COUNT --deletion-threshold-days DAYS NAMESPACE
        ```
        Donde `IMAGE_COUNT` es el número de imágenes que se van a conservar, `DAYS` es el tiempo mínimo en días que debe transcurrir antes de que se pueda eliminar una imagen, y `NAMESPACE` es tu espacio de nombres.
    
        Se visualiza una lista de las imágenes que se han de suprimir.
    
    
  4. Revise la lista de imágenes. Para ejecutar la política y suprimir las imágenes, confirme que desea definir la política.

    Si no desea eliminar esas imágenes, elija No. No se establece la política y no se suprimen las imágenes.

  5. Comprueba que las imágenes se hayan eliminado ejecutando el siguiente comando y comprueba que las imágenes aparezcan en la lista.

    ibmcloud cr trash-list
    
  6. Verifique que la política se haya definido ejecutando el mandato ibmcloud cr retention-policy-list y compruebe que la política que ha definido para el espacio de nombres conserva la cantidad de imágenes necesaria. Si define la política para retener todas las imágenes sin etiquetar, asegúrese de que la columna Retain all untagged tenga el valor true. Si estableces un umbral de eliminación, comprueba que la Deletion threshold (days) columna muestra el valor correcto.

    ibmcloud cr retention-policy-list
    

Actualizar una política de retención

Una política de retención es un conjunto de opciones que se aplican por espacio de nombres. Hay una política por espacio de nombres, por lo que, para actualizar una política, vuelve a ejecutar el comando ibmcloud cr retention-policy-set con la nueva configuración. Las opciones actualizadas sustituyen inmediatamente a la política existente, y la política sigue ejecutándose a diario con la nueva configuración.

Por ejemplo, para cambiar el número de imágenes que se van a conservar a 30 y añadir un umbral de eliminación de días 14 para el espacio de nombres NAMESPACE, ejecuta el siguiente comando :

ibmcloud cr retention-policy-set --images 30 --deletion-threshold-days 14 NAMESPACE

Puede comprobar la política actualizada ejecutando el siguiente comando :

ibmcloud cr retention-policy-list

Actualizar una política de retención para mantener todas las imágenes

Todos los espacios de nombres tienen una política predeterminada que conserva todas las imágenes. Puede devolver una política al estado predeterminado.

Puede utilizar el mandato ibmcloud cr retention-policy-set para volver a establecer la política en el estado predeterminado ejecutando el mandato siguiente, donde NAMESPACE es el espacio de nombres:

ibmcloud cr retention-policy-set --images All NAMESPACE

Limpiar los espacios de nombres suprimiendo imágenes sin etiquetar

Puede limpiar el espacio de nombres y reducir sus facturas suprimiendo las imágenes sin etiquetar en el espacio de nombres y opcionalmente generar los resultados en formato JSON.

Puedes ver todas tus imágenes etiquetadas y no etiquetadas ejecutando el comando ibmcloud cr image-digests comando. Si desea ver sólo las imágenes sin etiquetar, puede ejecutar el comando ibmcloud cr image-digests con formato en lenguaje Go, consulte Ejemplo de comando formato Go para ibmcloud cr image-digests. A continuación, puede comprobar que desea eliminar estas imágenes no etiquetadas antes de ejecutar el comando ibmcloud cr image-prune-untagged comando.

Si desea suprimir las imágenes sin etiquetar y generar los resultados en formato JSON, ejecute el siguiente mandato ibmcloud cr image-prune-untagged, donde NAMESPACE es el espacio de nombres:

ibmcloud cr image-prune-untagged [--force | -f [--output json]] --restrict NAMESPACE