Creación de imágenes para las apps
Una imagen de Docker es la base para cada contenedor que pueda crear con IBM Cloud® Kubernetes Service.
Una imagen se crea a partir de un Dockerfile, que es un archivo que contiene las instrucciones para crear la imagen. Un Dockerfile podría hacer referencia a los artefactos de compilación en sus instrucciones que se almacenan por separado, como por ejemplo una app, la configuración de la app y sus dependencias.
Despliegue de contenedores desde una imagen de IBM Cloud Container Registry en el espacio de nombres default de Kubernetes
Puede desplegar contenedores en el clúster desde una imagen pública proporcionada por IBM o desde una imagen privada almacenada en el espacio de nombres de IBM Cloud Container Registry. Para obtener más información sobre cómo el clúster accede a las imágenes del registro, consulte Visión general sobre cómo está autorizado el clúster para extraer imágenes de IBM Cloud Container Registry.
Antes de empezar:
-
Cree un archivo de configuración de despliegue denominado
<deployment>.yaml. -
Defina el despliegue y la imagen que desee a utilizar del espacio de nombres de IBM Cloud Container Registry.
apiVersion: apps/v1 kind: Deployment metadata: name: <deployment> spec: replicas: <number_of_replicas> selector: matchLabels: app: <app_name> template: metadata: labels: app: <app_name> spec: containers: - name: <app_name> image: <region>.icr.io/<namespace>/<image>:<tag><deployment>- Asigne un nombre a su despliegue.
<number_of_replicas>- Especifique el número de pods de réplica que crea el despliegue.
app: <app_name>- Utilice el nombre de la app como etiqueta para el contenedor.
name: <app_name>- Asigne un nombre a su contenedor, como por ejemplo el nombre de la etiqueta de la
app. image: <region>.icr.io/namespace>/image>:tag>-
- Sustituya las variables de URL de imagen por la información de la imagen:
region>: el punto final de la API de IBM Cloud Container Registry regional para el dominio de registro. Para obtener una lista del dominio de la región donde ha iniciado sesión, ejecuteibmcloud cr api.namespace>: El espacio de nombres del registro. Para obtener información de su espacio de nombres, ejecuteibmcloud cr namespace-list.image>:tag>: La imagen y el código que desea utilizar para el contenedor. Para obtener una lista de las imágenes que están disponibles en el espacio de nombres de registro, ejecuteibmcloud cr images.
-
Cree el despliegue en el clúster.
kubectl apply -f <deployment>.yaml
Cómo hacer referencia al secreto de extracción de imágenes en el despliegue del pod
Si el administrador del clúster no ha almacenado el secreto de extracción de imágenes en la cuenta de servicio de Kubernetes, los despliegues que no especifiquen una cuenta de servicio no podrán utilizar el secreto de extracción de imágenes para desplegar contenedores. En su lugar, puede definir un secreto de extracción de imágenes en el despliegue del pod. Cuando se hace referencia al secreto de extracción de imágenes en un despliegue de pod, el secreto de extracción de imágenes es válido para dicho pod únicamente y no se puede compartir entre pods del espacio de nombres de Kubernetes.
Antes de empezar
- Cree un secreto de extracción de imágenes para acceder a las imágenes de otros registros o espacios de nombres de Kubernetes, distintos de
default. - Inicie una sesión en la cuenta. If applicable, target the appropriate resource group. Establezca el contexto para el clúster.
Para hacer referencia al secreto de extracción de imágenes en el despliegue del pod,
-
Cree un archivo de configuración de pod denominado
mypod.yaml. -
Defina el pod y el secreto de extracción de imágenes para acceder a las imágenes de IBM Cloud Container Registry.
Para acceder a una imagen privada,
apiVersion: v1 kind: Pod metadata: name: mypod spec: containers: - name: <container_name> image: <region>.icr.io/<namespace_name>/<image_name>:<tag> imagePullSecrets: - name: <secret_name>Para acceder a una imagen pública de IBM Cloud,
apiVersion: v1 kind: Pod metadata: name: mypod spec: containers: - name: <container_name> image: icr.io/<image_name>:<tag> imagePullSecrets: - name: <secret_name>container_name>- El nombre del contenedor para desplegar en el clúster.
namespace_name>: El espacio de nombres del registro donde se almacena la imagen. Para obtener una lista de los espacios de nombres disponibles, ejecuteibmcloud cr namespace-list.image_name>: El nombre de la imagen que se va a utilizar. Para ver una lista de todas las imágenes disponibles en una cuenta de IBM Cloud, ejecuteibmcloud cr image-list.tag>: La versión de la imagen que desea utilizar. Si no se especifica ninguna etiqueta, la imagen que está etiquetada como más reciente se utiliza de forma predeterminada.<secret_name>: El nombre del secreto de extracción de imágenes que ha creado anteriormente.
-
Guarde los cambios.
-
Cree el despliegue en el clúster.
kubectl apply -f mypod.yaml
Envío de imágenes a IBM Cloud Container Registry
Después de que el administrador del clúster configure un registro de imágenes con IBM Cloud Container Registry, puede guardar y compartir de forma segura imágenes de Docker con otros usuarios añadiendo las imágenes a su espacio de nombres.
Por ejemplo, puede extraer una imagen de un origen de registro privado o público y luego etiquetarla para utilizarla más adelante en IBM Cloud Container Registry. O bien puede enviar una imagen de Docker con la que trabaje a su espacio de nombres para que otros usuarios puedan acceder a la imagen. Para empezar, consulte Adición de imágenes a su espacio de nombres.
Gestión de la seguridad de las imágenes en IBM Cloud Container Registry con Vulnerability Advisor
Vulnerability Advisor comprueba el estado de seguridad de las imágenes del contenedor proporcionadas por IBM o por terceros o añadidas al espacio de nombres de IBM Cloud Container Registry de la organización.
Cuando añade una imagen a un espacio de nombres, Vulnerability Advisor la explora automáticamente para detectar problemas de seguridad y potenciales vulnerabilidades. Si encuentra problemas de seguridad, se proporcionan instrucciones para poder arreglar el problema de vulnerabilidad notificado. Para empezar, consulte Gestión de la seguridad de imágenes con Vulnerability Advisor.
Configuración de contenido de confianza para imágenes de contenedor
Puede crear contenedores a partir de imágenes de confianza que están firmadas y almacenadas en IBM Cloud Container Registry, y evitar despliegues de imágenes vulnerables o que no hayan sido firmadas.
- Firme imágenes para un contenido de confianza. Después de establecer la confianza en sus imágenes, puede gestionar el contenido de confianza y los firmantes que pueden extraer las imágenes para su registro.
- Para imponer una política para que solo se puedan utilizar imágenes firmadas para crear contenedores en el clúster, instale el proyecto Portieris de código abierto.
- Los usuarios del clúster pueden desplegar app creadas a partir de imágenes de confianza.
Habilitación de la aplicación de seguridad de imágenes en el clúster
Al habilitar la aplicación de seguridad de imágenes en el clúster, se instala el proyecto Portieris Kubernetes de código abierto. A continuación, puede crear políticas de imagen para impedir que los pods que no cumplan las políticas, como las imágenes no firmadas, se ejecuten en el clúster.
Para obtener más información, consulta la documentación de « Portieris ».
Imágenes mutadas: de forma predeterminada, Portieris utiliza el controlador de admisión MutatingAdmissionWebhook para mutar la imagen y referirse a ella mediante un resumen en lugar de una etiqueta. Sin embargo,
es posible que tenga alguna tecnología de despliegue que rechace una imagen mutada. Si es así, puedes utilizar las opciones « opción de mutación de imagen » y « política » para modificar el comportamiento predeterminado.
Habilitación o inhabilitación de la aplicación de seguridad de imágenes
Puedes activar o desactivar la aplicación de las medidas de seguridad de imágenes para tu clúster desde la CLI o la consola. Para versiones anteriores, consulta la documentación de « Portieris ».
Habilitación o inhabilitación de la obligatoriedad de seguridad de imágenes con la CLI
Consulte los mandatos siguientes.
Habilitación o inhabilitación de la obligatoriedad de seguridad de imágenes desde la consola
- Desde la consola, seleccione su grupo.
- Busque el campo de aplicación de seguridad de imágenes y haga clic en Activar o Desactivar.
Políticas de imágenes predeterminadas
Al habilitar la aplicación de seguridad de imágenes, IBM Cloud Kubernetes Service crea automáticamente determinadas políticas de imágenes en el clúster. Al inhabilitar la característica, se elimina la CRD ClusterImagePolicy subyacente,
que elimina todas las políticas de imagen predeterminadas y las políticas de imágenes personalizadas que haya creado.
- Las políticas de imágenes con el nombre
ibm-signed-image-enforcementrestringen las imágenes que se ejecutan en el espacio de nombres solo en imágenes de IBM Cloud Kubernetes Service. No modifique estas políticas de imágenes. Los cambios que realice se sobrescriben en unos minutos. - Otras políticas de imágenes, como
defaultodefault-allow-all, permiten imágenes que no están restringidas por otra política de imagen. Puede modificar estas políticas de imagen y conservar los cambios, pero no cambie el nombre de la política de imagen. Si cambia el nombre de la política, se crean más políticas con el nombre y los valores predeterminados.
Para revisar las políticas de imagen en el clúster,
Antes de empezar
-
Liste las políticas de imágenes que se aplican globalmente al clúster. Para ver un ejemplo de configuración, consulta la documentación sobre la política « Portieris ».
kubectl get ClusterImagePolicy -
Liste las políticas de imágenes que se aplican a espacios de nombres específicos dentro del clúster. Para ver un ejemplo de configuración, consulta la documentación sobre la política « Portieris ».
kubectl get ImagePolicy --all-namespaces