Acceso a registros de contenedores

Las imágenes que utiliza IBM Cloud® Code Engine normalmente se almacenan en un registro que puede ser tanto de acceso público (registro público) como estar configurado con acceso limitado para un pequeño grupo de usuarios (registro privado).

Un registro de contenedor, o registro, es un servicio que almacena imágenes de contenedor. Por ejemplo, IBM Cloud Container Registry y Docker Hub son registros de contenedor. Un registro de contenedor puede ser público o privado. Para acceder a un registro de contenedor público no se requieren credenciales. En cambio, el acceso a un registro privado requiere credenciales.

Code Engine necesita acceder a los registros de contenedor para completar las acciones siguientes:

  • Para recuperar (o "extraer") una imagen de contenedor para ejecutar una aplicación o un trabajo
  • Para almacenar una imagen de contenedor recién creada como salida de una compilación de imagen
  • Para almacenar y recuperar archivos locales cuando se ejecuta una compilación desde el origen local

Code Engine trata muchos de los detalles subyacentes de las interacciones entre el sistema y el registro.

Para extraer imágenes de un registro, Code Engine utiliza un tipo especial de secreto de Kubernetes que se denomina imagePullSecret. Este secreto de extracción de imágenes almacena las credenciales para acceder a un registro de contenedores. Cuando añades acceso a un registro de contenedores con Code Engine para extraer imágenes, estás creando un secreto de extracción de imágenes. Para más información sobre los secretos de extracción de imágenes, consulte la documentación de Kubernetes.

Tipos de registros de imágenes

Las imágenes se almacenan normalmente en un registro que puede ser accesible para el público (registro público) o configurado con acceso limitado para un pequeño grupo de usuarios (registro privado).

Los registros públicos, como por ejemplo Docker Hub público, se pueden utilizar para familiarizarse con Docker y Code Engine para crear su primera aplicación o trabajo. Pero para cargas de trabajo de empresa, utilice un registro privado, como el que se proporciona en IBM Cloud Container Registry para proteger las imágenes de ser utilizadas por usuarios no autorizados. Para los registros privados, utilice secretos de registro para garantizar que las credenciales están disponibles para acceder al registro privado.

Tipos de registro de imágenes públicos y privados
Registry Descripción
IBM Cloud Container Registry

Con este tipo de registro, puede crear su propio repositorio de imágenes seguro en IBM Cloud Container Registry, donde podrá almacenar y compartir imágenes entre usuarios de forma segura.
Con IBM Cloud Container Registry, puedes

  • Gestionar el acceso a las imágenes de tu cuenta.
  • Utilizar las imágenes y aplicaciones de ejemplo proporcionadas por IBM, como IBM Liberty, como imagen de base y añadirle tu propio código de aplicación.
Cualquier otro registro privado

Conecte cualquier registro privado existente a Code Engine mediante la adición de acceso. La adición de acceso guarda de forma segura el URL y las credenciales del registro en un secreto de Kubernetes.
Con los registros privados, puede:

  • Utilizar registros privados existentes independientemente de su origen ( Docker Hub, registros propiedad de la organización u otros registros privados de Cloud).
Public Docker Hub

Utiliza este tipo de registro para extraer imágenes públicas existentes de Docker Hub directamente en tus aplicaciones o trabajos Code Engine.

Importante:

  • Es posible que este tipo de registro no cumpla los requisitos de seguridad de su organización, como la gestión de accesos, el análisis de vulnerabilidades o la privacidad de las aplicaciones.
  • Cuando extraiga una imagen de Docker Hub para utilizarla con aplicaciones o trabajos en Code Engine, tenga en cuenta los límites de tarifa de Docker para usuarios del plan gratuito (no autenticados). Es posible que experimente límites de tirada si recibe un error 429 que indica que ha alcanzado su límite de tirada. Para aumentar los límites de tarifa, puede actualizar su cuenta a una suscripción Docker Pro o Team.

Con Docker Hub, puede hacerlo:

  • Se puede hacer referencia a estas imágenes directamente al crear una app o un trabajo, sin necesidad de configuración adicional.
  • Incluye varias aplicaciones de código abierto.

Tipos de secretos de registro

Para acceder a las imágenes de un registro, Code Engine utiliza uno de los siguientes tipos de secretos de registro.

  • Code Engine secreto gestionado - Si su registro utiliza un espacio de nombres IBM Cloud Container Registry que está en su cuenta, puede dejar que Code Engine cree y gestione el secreto de registro por usted. En la consola, este secreto de registro creado automáticamente se denomina Code Engine managed secret. En la CLI, el nombre de un secreto de registro creado automáticamente tiene el formato ce-auto-icr-private-<region>.
  • Secreto gestionado por el usuario - En este caso es crea y gestiona usted el secreto. Puede acceder a imágenes de su cuenta con una clave de API o utilizar una señal de acceso para el registro de contenedor de su elección; por ejemplo, Docker Hub. En este caso, el secreto de registro que aparece en la consola es el nombre de su secreto de registro.

Si su registro es público y no requiere credenciales; por ejemplo, Code Engine imágenes de muestra en icr.io/codeengine o Docker Hub público, entonces no necesita un secreto de registro. En este caso, el secreto de registro que aparece en la consola es None.

Configuración de autorizaciones para registros de imágenes

Si el registro es público, no tiene que configurar autorizaciones para extraer imágenes. Recuerde que puede extraer de imágenes de un registro público cuando aún está empezando con Code Engine. Utilice un registro privado para las cargas de trabajo de la empresa.

¿Qué autoridades necesito?

Para determinar las autorizaciones que necesita, tenga en cuenta los casos siguientes:

  • Al desplegar aplicaciones o ejecutar trabajos, Code Engine puede acceder automáticamente a imágenes que están en su propia cuenta.

  • Si desea acceder a imágenes de una cuenta compartida, de otras cuentas de IBM Cloud o de una cuenta de Docker privada, debe tener asignadas las autorizaciones de acceso adecuadas.

  • Cuando despliega aplicaciones o ejecuta trabajos y su registro utiliza un espacio de nombres IBM Cloud Container Registry que está en su cuenta, puede dejar que Code Engine cree y gestione automáticamente el secreto del registro por usted, siempre que su cuenta tenga los permisos necesarios, tal y como se describe en la siguiente tabla.

    • En la consola, este secreto de registro se denomina Code Engine managed secret. Esta opción está disponible cuando se utilizan los flujos de trabajo Configurar una imagen o Especificar detalles de compilación para crear una imagen con Code Engine.
    • En la CLI, este secreto de registro tiene el formato, ce-auto-icr-private-<region>. Este secreto de registro se crea automáticamente cuando se especifica la opción --build-source pero no se proporciona la opción --registry-secret con los mandatos app create, app update, job create o job update.
Autoridades de acceso al registro de imágenes
Acción Acceso de servicio de IAM Descripción
Extraer imágenes Reader acceso de servicio Cuando despliega una imagen como una aplicación o un trabajo, debe extraer la imagen de un registro. Para extraer imágenes, necesita acceso de lectura. Si el registro es público, ya tiene acceso de lectura a las imágenes. Si el registro es privado, se requiere un secreto de registro.
Enviar imágenes Acceso de servicio de Reader y Writer Cuando crea código fuente, debe enviar la imagen a un registro. Para enviar imágenes a su registro, debe tener acceso de lectura y escritura, y debe tener un secreto de registro.
Crear un espacio de nombres Acceso de servicio de Reader, Writer y Manager Esta acción solo está soportada para IBM Cloud Container Registry.
Code Engine ha creado automáticamente un secreto de registro Acceso de servicio de
Reader, Writer y Manager de acceso de plataforma de Administrator
Esta acción solo está soportada para IBM Cloud Container Registry.

¿Puedo utilizar una identificación de servicio?

Sí, puede crear un ID de servicio y asignarle autorizaciones. Tenga en cuenta que la interfaz de usuario de Code Engine también crea automáticamente los ID de servicio cuando crea automáticamente el acceso a IBM Cloud Container Registry. NO suprima este ID de servicio ya que perderá el acceso a las imágenes del registro.

¿Puedo acceder a las imágenes en un registro diferente?

¡Sí! Veamos cómo.

¿Puedo restringir el acceso pull a un determinado registro regional o incluso a un único espacio de nombres?

Sí, puede editar la política IAM del ID de servicio existente que restringe el rol de acceso al servicio Lector a dicho registro regional o a un recurso de registro como, por ejemplo, un espacio de nombres. Para poder personalizar las políticas IAM de registro, hay que habilitar IBM Cloudlas políticas IAM para IBM Cloud Container Registry.

Acceso a imágenes desde una cuenta pública

Si la imagen se almacena en un repositorio público, como por ejemplo un Docker Hub público, puede hacer referencia a la imagen directamente cuando despliegue la aplicación o ejecute el trabajo. Tenga en cuenta que aunque almacenar imágenes en un registro público está bien para familiarizarse con las aplicaciones y los trabajos, las imágenes de empresa deben almacenarse en un registro privado.

Acceso a imágenes en su propia cuenta desde la consola

Si accede a Code Engine desde una cuenta que posee o administra, Code Engine puede extraer y guardar imágenes automáticamente a y desde un espacio de nombres de IBM Cloud Container Registry de su cuenta cuando cree o actualice aplicaciones, trabajos o compilaciones desde la consola. Code Engine puede incluso crear un espacio de nombres por usted cuando guarde una imagen. Para obtener más información, consulte los temas siguientes.

Acceso a imágenes desde su cuenta con una clave de API

Si va a acceder a Code Engine con la CLI, primero debe crear una clave de API de IAM y, a continuación, guardar la clave de API de IAM como acceso de registro en Code Engine.

En los pasos siguientes se crea una clave de API que almacena las credenciales de un ID de usuario. En lugar de utilizar un ID de usuario, es posible que desee crear una clave de API para un ID de servicio que tenga una política de acceso al servicio de IBM Cloud IAM sobre IBM Cloud Container Registry. Si elige autenticar un ID de usuario, asegúrese de que el usuario sea un ID o plan funcional para que, en el caso de que el usuario abandone, Code Engine pueda seguir accediendo al registro.

Creación de una clave de API desde la consola

Para crear una clave de API de IBM Cloud IAM desde la consola,

  1. Inicie Visión general de acceso (IAM).

  2. Seleccione Claves de API.

  3. Pulse Crear una clave de API de IBM Cloud.

  4. Especifique un nombre y una descripción opcional para la clave de API y pulse Crear.

  5. Copie la clave de API o pulse Descargar para guardarla.

    No podrá volver a ver esta clave de API, así que asegúrese de guardarla en un lugar seguro.

Ahora que ha creado la clave de API, guárdela como acceso de registro.

Creación de una clave de API con la CLI

Para crear una clave de API de IBM Cloud IAM con la CLI, ejecute el mandato iam api-key-create. Por ejemplo, para crear una clave API llamada cliapikey con una descripción de My CLI API key y guardarla en un archivo llamado key_file, ejecute el siguiente comando :

ibmcloud iam api-key-create cliapikey -d "My CLI API key" --file key_file

Si elige no guardar la clave en un archivo, debe registrar la clave de API que se visualiza durante la creación. No la podrá recuperarla más adelante.

Ahora que ha creado la clave de API, guárdela como acceso de registro.

Acceso a imágenes en una cuenta compartida

Para acceder a imágenes desde IBM Cloud Container Registry en una cuenta compartida, debe tener asignado la autorización competente.

Si tiene previsto desplegar apps y ejecutar trabajos desde la cuenta compartida, Code Engine puede extraer o enviar imágenes para usted cuando despliegue la aplicación o cree su trabajo.

Si desea extraer imágenes de la cuenta compartida a su propia cuenta, debe tener autorización para acceder a IBM Cloud Container Registry.

Acceso a imágenes en una cuenta diferente

Puede asignar políticas de acceso de IBM Cloud IAM a usuarios o un ID de servicio para restringir los permisos a espacios de nombres de imágenes o a acciones específicas (como enviar o extraer). A continuación, cree una clave de API y almacene estas credenciales de registro en Code Engine.

Por ejemplo, para acceder a las imágenes de otras cuentas de IBM Cloud, cree una clave de API que almacene las credenciales de IBM Cloud Container Registry de un usuario o un ID de servicio en dicha cuenta. A continuación, en Code Engine, utilice esa clave para crear acceso en su cuenta.

Acceso a imágenes en una cuenta de Docker Hub privada

Para acceder a imágenes en una cuenta de Docker Hub privada, cree acceso de registro proporcionando la contraseña o una señal de acceso. Si utiliza una señal de acceso, puede otorgar y revocar más fácilmente el acceso a su cuenta de Docker Hub sin requerir un cambio de contraseña. Para obtener más información sobre los tokens de acceso y Docker Hub, consulte Crear y administrar tokens de acceso.

Después de decidir si desea utilizar la contraseña directamente o para crear una señal de acceso, cree el acceso de registro.

Adición de acceso de registro a Code Engine

Para configurar el acceso a IBM Cloud Container Registry en una cuenta IBM Cloud diferente, para extraer imágenes de una cuenta de Docker Hub privada o para extraer o enviar imágenes utilizando la CLI de Code Engine, puede utilizar la clave de API de IBM o la contraseña o la señal de acceso de Docker Hub para crear acceso de registro a través de Code Engine para almacenar la clave de autenticación o la señal para usted.

Adición de acceso de registro desde la consola

Antes de empezar, cree un proyecto.

  1. Una vez que su proyecto esté en estado Activo, haga clic en el nombre de su proyecto en la página Code Engine Projects.
  2. En la página Componentes, pulse Secretos y mapas de configuración.
  3. En la página Secretos y mapas de configuración, pulse Crear para crear el secreto.
  4. En la página Crear secreto o configmap, realice los pasos siguientes:
    1. Seleccione Secreto de registro y pulse Siguiente.
    2. Proporcione un nombre; por ejemplo, mysecret-registry.
    3. Especifique el registro de destino para este secreto, como por ejemplo IBM Cloud Container Registry o Docker Hub.
    4. Especifique la ubicación del registro.
    5. Especifique un nombre de usuario. Si este secreto es para IBM Cloud Container Registry, el nombre de usuario es iamapikey. Si este secreto es para Docker Hub, es su ID de Docker.
    6. Especifique las credenciales para el nombre de usuario. Para IBM Cloud Container Registry, utilice la clave de API de IAM. Para Docker Hub, puede utilizar la contraseña de Docker Hub o una señal de acceso. Para otros registros de destino, especifique la contraseña o la clave de API para el nombre de usuario.
    7. Pulse Crear para crear el secreto.

Ahora que su secreto está creado desde la consola, vaya a la página Secretos y configmaps para ver una lista de los secretos y configmaps definidos. Puede aplicar filtros para personalizar la lista para que se ajuste a sus necesidades.

Puede añadir acceso a un registro de contenedores cuando cree una aplicación o un trabajo o cuando cree una imagen. Pulse Configurar imagen y especifique la imagen del contenedor que se va a ejecutar, incluyendo el registro donde está almacenada la imagen y el acceso de registro que se debe utilizar para recuperar la imagen.

Adición de acceso de registro con la CLI

A partir de la versión de la CLI 1.42.0, la definición y el trabajo con secretos en la CLI se unifican bajo el grupo de comandos secret grupo de comandos. Consulte los mandatos ibmcloud ce secret. Utilice la opción --format para especificar la categoría del secreto, como basic_auth, generic, hmac, ssh, tls o registry. Aunque puede seguir utilizando el registry grupo de comandos, aproveche las ventajas del grupo de comandos unificado secret unificado. Para crear un secreto de acceso al registro de un contenedor, utilice el comando ibmcloud ce secret create --format registry comando. Para obtener más información sobre cómo trabajar con secretos en Code Engine, consulte Trabajar con secretos.

Para añadir acceso a IBM Cloud Container Registry o Docker Hub con la CLI, utilice el comando secret create --format registry comando. Este comando requiere un nombre del secreto de registro, la dirección URL del servidor de registro y la información de nombre de usuario y contraseña para acceder al servidor de registro, y también permite otros argumentos opcionales. Para obtener una lista completa de opciones, consulte el comando ibmcloud ce secret create comando

Por ejemplo, el siguiente comando crea acceso de registro a una instancia de IBM Cloud Container Registry llamada myregistry que se encuentra en el servidor de registro us.icr.io:

ibmcloud ce secret create --format registry --name myregistry --server us.icr.io --username iamapikey --password API_KEY

Salida de ejemplo

Creating registry secret 'myregistry'...
OK

La siguiente tabla resume las opciones que se utilizan con el secret create --format registry comando en este ejemplo. Para obtener más información sobre el comando y sus opciones, consulte la sección ibmcloud ce secret create comando.

Descripción del mandato
Opción Descripción
--name

El nombre del secreto de registro. Utilice un nombre que sea exclusivo dentro del proyecto. Este valor es obligatorio.

  • El nombre debe empezar y terminar con un carácter alfanumérico en minúsculas.
  • El nombre debe tener 253 caracteres o menos y puede contener letras en minúsculas, números, puntos (.) y guiones (-).
--server Especifique el URL del servidor de registro. Para Container Registry, el nombre de servidor es <region>.icr.io. Por ejemplo, us.icr.io. Para Docker Hub, el valor es https://index.docker.io/v1/.
--username Especifique el nombre de usuario para acceder al servidor de registro. Para Container Registry, el nombre es iamapikey. Para Docker Hub, es su ID de Docker.
--password Especifique la contraseña de . Para Container Registry, la contraseña es la clave de API. Para Docker Hub, puede utilizar la contraseña de Docker Hub o una señal de acceso.

Autorización del acceso a Container Registry con el ID de servicio

Antes de poder añadir acceso a un ID de servicio en una cuenta diferente, primero debe autorizar el acceso al ID de servicio.

Cuando se crea un ID de servicio, se puede restringir el acceso a un IBM Cloud Container Registry regional o incluso a un espacio de nombres específico en esa cuenta de IBM Cloud Container Registry.

Autorización del acceso a Container Registry con el ID de servicio desde la consola

Para extraer o enviar imágenes de o a IBM Cloud Container Registry, debe crear un ID de servicio, crear una política de acceso para el ID de servicio y crear una clave de API para almacenar las credenciales.

Paso 1 Crear o identificar un ID de servicio y autorizarlo para el servicio IBM Cloud Container Registry

  1. Inicie Visión general de acceso (IAM).
  2. Seleccione ID de servicio.
  3. Si tiene un ID de servicio que desea utilizar, selecciónelo. Si no es así, seleccione Crear, especifique un nombre y una descripción y pulse Crear.
  4. En la página ID de servicio, en la sección Políticas de acceso, seleccione Asignar acceso.
  5. En la sección Asignar a un ID de servicio acceso adicional,
    1. Seleccione Registro de contenedores para el tipo de acceso. Pulse Siguiente.
    2. Seleccione el tipo de acceso: Todos los recursos o Recursos específicos. Si especifica Recursos específicos, puede añadir atributos basados en el grupo de recursos, la geografía, la región, el tipo de recurso, el ID de recurso o el nombre de recurso para restringir aún más el acceso. Si selecciona un determinado grupo de recursos, asegúrese de seleccionar el acceso de Visor para el acceso de Grupo de recursos. Pulse Siguiente.
    3. En la sección Roles y acciones, seleccione el tipo de acceso que desea otorgar. Si tiene previsto utilizar solo imágenes para las aplicaciones y los trabajos, seleccione Lector. Si desea enviar el código fuente y las imágenes a Container Registry, seleccione también Escritor. Pulse Revisar.
    4. Pulse Añadir y luego Asignar.

Paso 2 Habilitación del descubrimiento de Container Registry

Para permitir que la consola de Code Engine descubra automáticamente el registro de contenedor, debe autenticar el ID de servicio en el IAM Identity Service.

  1. En la página ID de servicio, en la sección Políticas de acceso, seleccione Asignar acceso.
  2. En la sección Asignar a un ID de servicio acceso adicional,
    1. Seleccione IAM Identity Service el tipo de acceso. Pulse Siguiente.
    2. Seleccione Recursos específicos para el ámbito de recurso. Seleccione Tipo de recurso como tipo de atributo, mantenga string equals como operador y especifique serviceid como valor. Pulse Añadir una condición.
    3. Seleccione ID de recurso como tipo de atributo, mantenga string equals como operador y coloque el identificador del ID de servicio. Puede encontrar su ID de servicio en la página Detalles del ID de servicio o en el navegador URL al configurarlo. Pulse Siguiente.
    4. En la sección Roles y acciones, seleccione el acceso Operador de la plataforma. Click Review
    5. Pulse Añadir y luego Asignar.

Paso 3 Crear una clave de API para un ID de servicio

Crear una clave de API para un ID de servicio.

  1. En la página ID de servicio, seleccione Claves de API y luego Crear.

  2. Especifique un nombre y una descripción opcional para la clave de API y pulse Crear.

  3. Copie la clave de API o pulse Descargar para guardarla.

    No podrá volver a ver esta clave de API, así que asegúrese de guardarla en un lugar seguro.

Ahora que tiene las políticas de acceso establecidas para el ID de servicio y la clave de API creada, puede añadir acceso a Code Engine para extraer imágenes del registro de contenedor.

Autorización del acceso a Container Registry con la CLI

Para extraer imágenes de IBM Cloud Container Registry en una cuenta distinta, debe crear un ID de servicio, crear políticas de acceso para el ID de servicio y crear una clave de API para almacenar sus credenciales.

  1. Cree un ID de servicio de IBM Cloud IAM para el proyecto que se utiliza para las políticas de IAM y las credenciales de clave de API en el secreto de extracción de imágenes con el mandato iam service-id-create. Asegúrese de proporcionar al ID de servicio una descripción que le ayude a recuperar el ID de servicio posteriormente; por ejemplo, puede incluir el nombre del proyecto. Para ver una lista completa del mandato iam service-id-create y sus opciones, consulte el mandato ibmcloud iam service-id-create.

    Por ejemplo, el siguiente mandato crea un ID de servicio denominado codeengine-myproject-id con la descripción Service ID for IBM Cloud Container Registry in Code Engine project myproject:

    ibmcloud iam service-id-create codeengine-myproject-id --description "Service ID for IBM Cloud Container Registry in Code Engine project my proj"
    
  2. Cree una política de IBM Cloud IAM personalizada para el ID de servicio que otorgue acceso a IBM Cloud Container Registry con el mandato iam service-policy-create. Para ver una lista completa del mandato iam service-policy-create y sus opciones, consulte el mandato ibmcloud iam service-policy-create.

    Por ejemplo, el siguiente mandato crea una política para el ID de servicio codeengine-myproject-id con el rol de Reader:

    ibmcloud iam service-policy-create codeengine-myproject-id --roles Reader --service-name container-registry
    

    La siguiente tabla resume las opciones que se utilizan con el iam service-policy-create comando en este ejemplo. Para obtener más información sobre el comando y sus opciones, consulte la sección ibmcloud iam service-policy-create comando.

    componentes del comando iam service-policy-create
    Opción Descripción
    <service_ID> Obligatorio. Sustitúyala por el ID de servicio de codeengine-<project_name>-id que ha creado previamente.
    --roles <service_access_role> Obligatorio. Especifique el rol de acceso al servicio para IBM Cloud Container Registry al que desea limitar el acceso al ID de servicio. Los valores posibles son Reader, Writer y Manager. Si está extrayendo imágenes, el acceso de Reader es suficiente. Para obtener más información, consulte Configuración de autorizaciones para registros de imágenes.
    --service-name <container-registry> Obligatorio. Especifique container-registry para crear una política de IAM para IBM Cloud Container Registry.
  3. Cree una política de servicio personalizada para permitir el acceso al servicio iam-identity para que Code Engine pueda recuperar la clave de API para el ID de servicio con el mandato iam service-policy-create.

    Por ejemplo, cree una política para el ID de servicio codeengine-myproject-id con el rol Operator (Operador):

    ibmcloud iam service-policy-create codeengine-myproject-id --roles Operator --service-name iam-identity
    

    La siguiente tabla resume las opciones que se utilizan con el iam service-policy-create comando en este ejemplo. Para obtener más información sobre el comando y sus opciones, consulte la sección ibmcloud iam service-policy-create comando.

    componentes del comando iam service-policy-create
    Opción Descripción
    <service_ID> Obligatorio. Sustitúyala por el ID de servicio de codeengine-<project_name>-id que ha creado previamente.
    --roles <platform_access_role> Obligatorio. Especifique el rol de acceso a la plataforma al que desea reducir el acceso al ID de servicio. Los valores posibles son Administrator, Editor, Operator y Viewer. El ID de servicio requiere el rol Operator o superior.
    --service-name <iam-identity> Obligatorio. Especifique iam-identity para crear una política de IAM para los servicios de identificación de IAM.
  4. Cree una clave de API para el ID de servicio con el mandato iam service-api-key-create. Para ver una lista completa del mandato iam service-api-key-create y sus opciones, consulte el mandato ibmcloud iam service-api-key-create. Asigne un nombre a la clave de API similar al ID de servicio e incluya el ID de servicio que ha creado previamente, codeengine-<project_name>-id. Asegúrese de especificar para la clave de API una descripción que le ayude a recuperar la clave posteriormente.

    Por ejemplo, el siguiente comando crea una clave que se denomina codeengine-myproject-key para el ID de servicio codeengine-myproject-id con una descripción de API key for service ID codeengine-myproject-id for Code Engine myproject:

    ibmcloud iam service-api-key-create codeengine-myproject-key codeengine-myproject-id --description "API key for service ID codeengine-myproject-id for Code Engine myproject"
    

    Salida de ejemplo

    Please preserve the API key! It cannot be retrieved after it's created.
    
    Name          codeengine-myproject-key
    Description   API key for service ID codeengine-myproject-id for Code Engine myproject
    Bound To      crn:v1:bluemix:public:iam-identity::a/1bb222bb2b33333ddd3d3333ee4ee444::serviceid:ServiceId-ff55555f-5fff-6666-g6g6-777777h7h7hh
    Created At    2019-02-01T19:06+0000
    API Key       i-8i88ii8jjjj9jjj99kkkkkkkkk_k9-llllll11mmm1
    Locked        false
    UUID          ApiKey-222nn2n2-o3o3-3o3o-4p44-oo444o44o4o4
    

    No podrá volver a ver esta clave de API, así que asegúrese de guardarla en un lugar seguro.

    Ahora que tiene las políticas de acceso establecidas para el ID de servicio y la clave de API creada, puede añadir acceso a Code Engine para extraer imágenes del registro de contenedor.

Control del acceso a Container Registry para cargas de trabajo de Code Engine

Supongamos que desea controlar el acceso a IBM Cloud Container Registry cuando Code Engine extraiga imágenes. Por ejemplo, desea controlar el acceso a Container Registry a direcciones IP específicas. Tenga en cuenta los siguientes enfoques.

Consideraciones sobre las imágenes del registro

El nombre de la imagen que se utiliza para la app o el trabajo debe estar en uno de los formatos siguientes.

  • REGISTRY/NAMESPACEorDOCKERUSERorDOCKERORG/REPOSITORY:TAG donde REGISTRY y TAG son opcionales. Si no se especifica REGISTRY, el valor predeterminado es docker.io. Si no se especifica TAG, no incluya los dos puntos (:). El valor predeterminado para TAG es latest.
  • REGISTRY/NAMESPACEorDOCKERUSERorDOCKERORG/REPOSITORY@IMAGEID donde REGISTRY es opcional. Si no se especifica REGISTRY, el valor predeterminado es docker.io y ibm como organización de Docker.
Reglas para el nombre de la imagen
Componente Caracteres permitidos Longitud Reglas adicionales
REGISTRY a-zA-Z0-9 -_. --__ 1-253 (0-127Periods)(label:1-63,noDashOnEnd)
NAMESPACE a-z 0-9 -_ --__ 4-30 (start/end with letterOrNumber)
DOCKERUSERorDOCKERORG a-z 0-9 4-30
REPOSITORY a-z 0-9 -_. / 2-255 (start/end with letterOrNumber)
TAG a-zA-Z0-9 -_. --__.. 0-128 (NOT start with periodOrDash)
IMAGEID a-z 0-9 : (startwith sha256: noOtherColon)

Las partes del nombre de imagen deben cumplir los criterios siguientes.

  • REGISTRY debe tener 253 caracteres o menos y puede contener letras minúsculas o mayúsculas, números, puntos (.), guiones (-) y subrayados (_). No utilice un guión (.) como último carácter. No utilice más de 127 puntos (.) y las etiquetas entre ellos pueden tener entre 1 y 63 caracteres de longitud.
  • NAMESPACE debe tener entre 4 y 30 caracteres y debe empezar y terminar con una letra o un número en minúsculas. NAMESPACE puede contener caracteres alfanuméricos en minúsculas, guiones (-) y subrayados (_).
  • DOCKERUSERorDOCKERORG se puede utilizar para registros de Docker en lugar de NAMESPACE. Especifique el nombre de usuario de Docker o la organización de Docker. El nombre de usuario y la organización de Docker deben tener entre 4 y 30 caracteres y contener sólo caracteres alfanuméricos en minúsculas o números.
  • REPOSITORY debe tener entre 2 y 255 caracteres y debe empezar y terminar con una letra o un número en minúsculas. REPOSITORY puede contener caracteres alfanuméricos en minúsculas, barras inclinadas (/), puntos (.), guiones (-) y subrayados (_).
  • TAG debe tener entre 0 y 128 caracteres y puede contener letras minúsculas o mayúsculas, números, puntos (.), guiones (-) y subrayados (_). El TAG no debe empezar con un punto o guión. Si no incluye un TAG, tampoco incluya los dos puntos.
  • IMAGEID tiene el prefijo sha256: y puede contener letras y números en minúsculas.