IBM Cloud Docs
Acceso a Container Registry

Acceso a Container Registry

Para acceder a los espacios de nombres de IBM Cloud® Container Registry para poder enviar y extraer imágenes, utilice IBM Cloud® Identity and Access Management (IAM).

Todas las cuentas requieren políticas de acceso IAM. Para configurar y gestionar políticas de acceso de IAM, consulte Definición de políticas de acceso de IAM.

El acceso a IBM Cloud Container Registry es automatizado, que normalmente utiliza claves de API, o interactivo, que normalmente utiliza señales portadoras.

Si tiene una política de acceso de IAM, pero recibe errores de Access denied, consulte ¿Por qué recibo errores de Access denied ? para obtener ayuda.

Si desea utilizar las imágenes de contenedor en los despliegues de Kubernetes, consulte Utilizar un secreto de extracción de imágenes para acceder a imágenes de otras cuentas de IBM Cloud o registros privados externos de espacios de nombres Kubernetes no predeterminados.

Acceder a los espacios de nombres en automatización

Puede utilizar claves de API de ID de servicio para automatizar el envío por push y la extracción de imágenes de contenedor a y desde los espacios de nombres.

Las claves APIUn código único que se utiliza para autenticar y autorizar las solicitudes de API. El código se pasa a una API para identificar la aplicación o el usuario que llama y para rastrear y controlar cómo se utiliza la API. están vinculadas a ID de usuario o ID de servicio en su cuenta y puede utilizarlas en IBM Cloud®. Puede utilizar una clave de API en la CLI o como parte de la automatización para autenticarse como su identidad servicio o usuario. Las claves de API de usuario están asociadas con un usuario y sus políticas de acceso. Una clave de API de ID de servicio tiene sus propias políticas de acceso. Puede tener varios identificadores de servicio con diferentes políticas detalladas para que su automatización tenga capacidades específicas y limitadas.

Cuando se crea un clúster IBM Cloud Kubernetes Service o Red Hat® OpenShift® on IBM Cloud®, el clúster se crea con un ID de servicio IAM IBM Cloud al que se le asigna una política de acceso al servicio de lector IAM a IBM Cloud Container Registry. Las credenciales de ID de servicio se autentican en una clave de API de ID de servicio no caducada que se almacena en secretos de extracción de imagen en el clúster. Los secretos de extracción de imagen se añaden al espacio de nombres de Kubernetes default y a la lista de secretos de la cuenta de servicio default de este espacio de nombres de Kubernetes. Si necesita más claves de API de ID de servicio o falta la clave de API de ID de servicio, puede crear una clave de API de ID de servicio manualmente.

Puede utilizar claves de API de ID de servicio en los lugares siguientes:

  • Clústeres de IBM Cloud Kubernetes Service o Red Hat OpenShift on IBM Cloud. Cuando crea clústeres de IBM Cloud Kubernetes Service y Red Hat OpenShift on IBM Cloud, se crea automáticamente un ID de servicio para cada clúster. Si desea más de un ID de servicio, puede crearlos manualmente.
  • Kubernetes y clústeres de Red Hat® OpenShift® que no están en IBM Cloud. Debe crear su propio ID de servicio, clave de API y secreto de extracción.
  • CLI de Docker y otros clientes. Debe crear su propio ID de servicio y clave de API.

Creación de una clave de API de ID de servicio manualmente

Cree una clave de API de ID de servicio que pueda utilizar para iniciar sesión en el registro.

Para crear una clave de API de ID de servicio, siga estos pasos:

  1. Cree un ID de servicio; consulte ibmcloud iam service-id-create.

  2. Asigne políticas de servicio al ID de servicio para controlar el nivel de acceso que está permitido cuando el ID de servicio se utilice para autenticarse con IBM Cloud Container Registry, consulte Gestión del acceso a los recursos.

  3. Cree una clave de API de ID de servicio; consulte Gestión de claves de API de ID de servicio e ibmcloud iam service-api-key-create.

Creación de una clave de API de usuario manualmente

Cree una clave de API de usuario que pueda utilizar para iniciar sesión en el registro.

Si crea una clave de API de usuario, se utilizan las políticas de acceso del usuario.

Para crear una clave de API de usuario, consulte Gestión de claves de API de usuario e ibmcloud iam api-key-create.

Utilizar software de cliente para autenticarse en la automatización

Utilice una clave de API para iniciar sesión en el registro utilizando clientes comunes.

Los clientes necesitan una clave de API y un dominio, sustituir API_KEY por la clave de API y REGISTRY_DOMAIN por el dominio del registro donde se han configurado los espacios de nombres.

Registro de dominios
Región Región que antes se conocía como REGISTRY_DOMAIN
global No aplicable icr.io
au-syd ap-south au.icr.io
br-sao No aplicable br.icr.io
ca-tor No aplicable ca.icr.io
eu-de eu-central de.icr.io
eu-es No aplicable es.icr.io
eu-gb uk-south uk.icr.io
jp-osa No aplicable jp2.icr.io
jp-tok ap-north jp.icr.io
us-south No aplicable us.icr.io

Para obtener más información sobre cómo utilizar IBM Cloud Container Registry en una interconexión de Continuous Delivery, consulte Utilización de un registro de imágenes privadas.

Se proporcionan ejemplos de cómo autenticarse automáticamente con el registro para los clientes siguientes:

Utilización de Buildah para autenticarse con el registro

Puede utilizar Buildah para autenticarse con el registro de forma que pueda enviar y extraer imágenes al y del registro.

Utilice la clave de API y dominio para iniciar sesión en el registro ejecutando el siguiente mandato de Buildah, sustituya API_KEY por la clave de API y REGISTRY_DOMAIN por el dominio:

buildah login -u iamapikey -p API_KEY REGISTRY_DOMAIN

Utilización de Docker para autenticarse con el registro

Puede utilizar Docker para autenticarse con el registro, de modo que pueda enviar por push y extraer imágenes a y desde el registro.

Utilice la clave de API y dominio para iniciar sesión en el registro ejecutando el mandato Docker siguiente, sustituya API_KEY por la clave de API y REGISTRY_DOMAIN por el dominio:

docker login -u iamapikey -p API_KEY REGISTRY_DOMAIN

Utilización de Podman para autenticarse con el registro

Puede utilizar Podman para autenticarse con el registro de forma que pueda enviar y extraer imágenes al y del registro.

Utilice la clave de API y dominio para iniciar sesión en el registro ejecutando el siguiente mandato Podman, sustituya API_KEY por la clave de API y REGISTRY_DOMAIN por el dominio:

podman login -u iamapikey -p API_KEY REGISTRY_DOMAIN

Utilización de Skopeo para autenticarse con el registro

Puede utilizar Skopeo para autenticarse con el registro de forma que pueda enviar y extraer imágenes al y del registro.

Por ejemplo, puede utilizar el siguiente mandato Skopeo para extraer una imagen de Docker Hub y enviarla al espacio de nombres. Sustituya REGISTRY_DOMAIN por el nombre del dominio, NAMESPACE por el espacio de nombres y API_KEY por la clave de API:

skopeo --insecure-policy --override-os linux copy docker://busybox:latest docker://REGISTRY_DOMAIN/NAMESPACE/busybox:latest --dest-creds iamapikey:API_KEY

Acceso interactivo a los espacios de nombres

Puede utilizar señales portadoras y señales de renovación para enviar y extraer imágenes a los y de los espacios de nombres de forma interactiva.

Se proporcionan ejemplos de cómo acceder a los espacios de nombres de forma interactiva para los clientes siguientes:

Utilización de Buildah para acceder al espacio de nombres

Inicie sesión en el registro utilizando la CLI de Buildah.

Puede utilizar la CLI de Buildah para iniciar sesión en el registro utilizando una señal portadora, sustituya REGISTRY_DOMAIN por dominio:

ibmcloud iam oauth-tokens | sed -ne '/IAM token/s/.* //p' | buildah login -u iambearer --password-stdin REGISTRY_DOMAIN

Utilización de Docker para acceder al espacio de nombres

Inicie sesión en el registro utilizando la CLI de Docker.

Puede utilizar la CLI de Docker para iniciar sesión en el registro utilizando una señal de renovación en IBM Cloud CLI:

ibmcloud cr login --client docker

Puede utilizar la CLI de Docker para iniciar sesión en el registro utilizando una señal portadora:

  1. Genere una señal de portadora utilizando ibmcloud iam oauth-tokens.

  2. Inicie sesión en el registro utilizando el mandato docker login. Sustituya BEARER_TOKEN por la señal portadora y REGISTRY_DOMAIN por el dominio:

    docker login -u iambearer --password BEARER_TOKEN REGISTRY_DOMAIN
    

Utilización de Podman para acceder al espacio de nombres

Acceda al registro y extraiga una imagen mediante la CLI, donde IMAGE_NAME es el nombre de la imagen.

ibmcloud cr login --client podman
podman pull IMAGE_NAME

Utilización de Skopeo para acceder al espacio de nombres

Inicie sesión en el registro utilizando la CLI de Skopeo.

Puede utilizar la CLI de Skopeo para iniciar sesión en el registro utilizando una señal portadora, sustituya REGISTRY_DOMAIN por dominio:

ibmcloud iam oauth-tokens | sed -ne '/IAM token/s/.* //p' | skopeo login -u iambearer --password-stdin REGISTRY_DOMAIN

Acceso mediante programación a los espacios de nombres

Utilice su propio código para acceder a los espacios de nombres en IBM Cloud Container Registry.

La mayoría de los usuarios pueden utilizar el mandato ibmcloud cr login para simplificar docker login, pero si está implementando la automatización o está utilizando un cliente distinto, es posible que desee autenticarse manualmente. Debe presentar un nombre de usuario y una contraseña. En IBM Cloud Container Registry, el nombre de usuario indica el tipo de secreto que se presenta en la contraseña.

Son válidos los siguientes nombres de usuarios:

  • iambearer La contraseña contiene un señal de acceso a IAM. Este tipo de autenticación es de corta duración, pero puede derivarse de todos los tipos de identidad IAM. Por ejemplo, de ibmcloud iam oauth-tokens.
  • iamrefresh La contraseña contiene una señal de renovación de IAM que el registro utiliza internamente para generar una señal de acceso de IAM. Este tipo de autenticación es más duradero. Este tipo de autenticación es utilizado por el mandato ibmcloud cr login.
  • iamapikey La contraseña es una clave de API de IAM que el registro utiliza internamente para generar una señal de acceso de IAM. Este tipo de autenticación es el preferido para la automatización. Puede utilizar una clave de API de usuario o una clave de API de ID de servicio. Para obtener más información, consulte Acceder a los espacios de nombres en automatización.