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:
-
Cree un ID de servicio; consulte
ibmcloud iam service-id-create
. -
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.
-
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.
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:
-
Genere una señal de portadora utilizando
ibmcloud iam oauth-tokens
. -
Inicie sesión en el registro utilizando el mandato
docker login
. SustituyaBEARER_TOKEN
por la señal portadora yREGISTRY_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, deibmcloud 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 mandatoibmcloud 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.