Configurar una cadena de herramientas de CD para la Infraestructura como Código

Este tutorial es la tercera parte de una serie de tres tutoriales en los que aprenderás las mejores prácticas de IBM Cloud® DevSecOps utilizando una implementación de referencia completa que está disponible como servicio y funciona con IBM Cloud® Continuous Delivery. En la parte 3 de esta serie de tutoriales, utilizará la plantilla de cadena de herramientas para la implementación continua (CD) con las prácticas recomendadas relacionadas con la seguridad y el cumplimiento normativo en DevSecOps.

Antes de empezar

Antes de comenzar la parte 3 de esta serie de tutoriales, asegúrese de haber completado los siguientes requisitos previos:

  1. Complete la Parte 1: Establezca los requisitos previos.
  2. Complete la Parte 2: Configure una cadena de herramientas CI para la Infraestructura como Código(Terraform).
  3. Vea el vídeo Introducción a DevSecOps en IBM Cloud- Parte 2.

CD - Implementación de una aplicación segura con prácticas de DevSecOps

La cadena de herramientas CD de DevSecOps contiene únicamente un proceso de implementación continua. Se implementan las siguientes recomendaciones:

  • se cambia la automatización de la gestión para ayudar a los desarrolladores, aprobadores y auditores a realizar un seguimiento de los despliegues desde el punto de vista del cumplimiento.
  • Crea un resumen de las pruebas a partir de las pruebas recopiladas en el proceso de CI.
  • Crea una solicitud de cambio en el repositorio de gestión de cambios basado en Git Repos and Issue Tracking y añade a este la documentación de la implementación.
  • Utiliza el repositorio de inventario para promocionar los artefactos creados a entornos de implementación como el de pruebas y el de producción.
  • Comprueba el CR y lo aprueba automáticamente si se superan todas las comprobaciones.
  • Si se aprueba la solicitud de cambio (CR) o se trata de una emergencia, la cadena de herramientas implementa la imagen desde el inventario a producción.

Visión general de la configuración guiada para la cadena de herramientas de entrega continua

Cualquiera de los métodos de esta guía de aprendizaje le va a ofrecer una experiencia de configuración guiada. Se le guiará a lo largo del proceso de configuración de la cadena de herramientas y se le mostrarán las opciones de configuración recomendadas que son necesarias para crear su cadena de herramientas.

Un indicador de progreso muestra los pasos para completar la configuración. Puede utilizar el indicador de progreso para volver a un paso anterior. Las opciones de configuración del paso actual se visualizan en el área principal de la página.

DevSecOps Página de bienvenida de la cadena de herramientas de Despliegue Continuo Figura 1.
DevSecOps Página de bienvenida de la cadena de herramientas de implantación continua

Para avanzar al paso siguiente, pulse Continuar. Sólo puede avanzar al paso siguiente una vez completada y validada la configuración del paso actual. Puede ir al paso anterior pulsando el botón Atrás.

Algunos pasos incluyen un conmutador Cambiar a configuración avanzada. Estos pasos le muestran, de forma predeterminada, la configuración mínima necesaria. No obstante, los usuarios avanzados que necesiten un control más detallado pueden hacer clic en el botón Cambiar a configuración avanzada para mostrar todas las opciones de la integración subyacente.

DevSecOps Conmutador de configuración avanzada Figura 2.
DevSecOps Configuración avanzada

Cuando se hayan completado correctamente todos los pasos, se crea la cadena de herramientas haciendo clic en Crear en el paso Resumen.

Siempre puede volver a los pasos anteriores en el instalador guiado. El instalador de la cadena de herramientas conserva todos los valores de configuración de los pasos sucesivos.

Inicie la configuración de la cadena de herramientas de entrega continua

Inicie la configuración de la cadena de herramientas de entrega continua utilizando una de las opciones siguientes:

  • Haz clic en Crear cadena de herramientas.

    Crear cadena de herramientas

  • En la consola IBM Cloud, haga clic en el icono Menu y seleccione DevOps. En la página Cadenas de herramientas, haz clic en Crear cadena de herramientas. En la página Crear una cadena de herramientas, haz clic en CD-Develop con prácticas de e DevSecOps.

Configurar el nombre y la región de la cadena de herramientas de CD

Revise la información predeterminada para la configuración de la cadena de herramientas. El nombre de la cadena de herramientas la identifica en IBM Cloud. Asegúrese de que el nombre de la cadena de herramientas sea exclusivo dentro de las cadenas de herramientas de la misma región y grupo de recursos en IBM Cloud.

Elija la cadena de herramientas de CI asociada en el menú desplegable para copiar parte de la configuración de CI para ayudar en la configuración de esta cadena de herramientas de CD.

DevSecOps cadena de herramientas CI asociada Figura 3.
DevSecOps cadena de herramientas CI asociada

Advertencia: Esta acción puede sobrescribir algunos de los valores que ya ha introducido.

Configurar integraciones de herramientas de CD

Si ya se ha vinculado a una cadena de herramientas CI existente en el paso Bienvenido, los nombres de los repositorios relacionados con la aplicación que se utilizan en esa cadena de herramientas se rellenan previamente. Revise los URL de repositorio y, a continuación, continúe con los pasos siguientes.

Repositorios relacionados con la aplicación

Si quieres configurar tu cadena de herramientas de CD desde cero, configura estos repositorios durante la creación de la cadena de herramientas de CI y, a continuación, utilízalos o enlázalos aquí.

Para obtener la URL correspondiente, ve al CI Pipeline y selecciona la ficha de la herramienta correspondiente. Haga clic con el botón derecho en la tarjeta de herramientas y seleccione Copiar dirección de enlace.

  • Inventario: El repositorio de inventario registra los detalles de los artefactos creados por los flujos de trabajo de CI y CD. Por ejemplo, https://<region>.git.cloud.ibm.com/myorg/my-compliance-ci-inventory
  • Problemas: El repositorio de incidencias registra las incidencias que se encuentran mientras se ejecuta el canal de CI. Por ejemplo, https://<region>.git.cloud.ibm.com/myorg/my-compliance-ci-issues.
  • Pruebas: aquí se recopilan todas las pruebas de conformidad sin formato que pertenecen a la aplicación. Por ejemplo, https://<region>.git.cloud.ibm.com/myorg/my-compliance-ci-evidence.

Actualmente, la cadena de herramientas solo admite enlaces a repositorios Git Repos and Issue Tracking alojados en IBM.

Inventario

URL del repositorio: URL del repositorio de inventario configurado en su cadena de herramientas de CI, tal y como se ha indicado en el paso anterior.

Problemas

URL del repositorio: URL del repositorio de incidencias configurado en tu cadena de herramientas de CI, tal y como se ha indicado en el paso anterior.

Configuración de la canalización

El repositorio de configuración de interconexión contiene archivos YAML y scripts necesarios para el despliegue, las pruebas y otras tareas personalizadas.

Para este tutorial, el repositorio de configuración del pipeline es el mismo que el definido para el CI de DevSecOps para Infrastructure as Code ( IaC ). Seleccione Utilizar repositorio de configuración de despliegue existente y seleccione el repositorio que se utiliza para la configuración de canalización de la cadena de herramientas de CI.

Para obtener más información sobre los repositorios de Git, consulte Configuración de Git Repos and Issue Tracking. Para obtener más información sobre los scripts personalizables, consulte Scripts personalizados.

Secretos

Varias herramientas en esta cadena de herramientas, y posiblemente en sus scripts personalizables, requieren secretos para acceder a recursos privilegiados. Una clave de API de IBM Cloud es un ejemplo de un secreto de este tipo. Almacena estos secretos de forma segura en una herramienta de gestión de secretos recomendada por IBM, como IBM Key Protect for IBM Cloud, IBM Cloud® Secrets Manager o HashiCorp Vault. La herramienta de gestión de secretos puede integrarse en la cadena de herramientas para que pueda referenciar fácilmente los secretos en su pipeline Tekton.

Este tutorial utiliza IBM Cloud® Secrets Manager como cámara acorazada para los secretos.

Almacenamiento de pruebas

El armario de pruebas almacena las pruebas de todas las tareas que ejecuta la canalización. Estas pruebas son recogidas por la tubería durante la ejecución de la misma.

Seleccione el cubo Cloud Object Storage (COS) configurado para su cadena de herramientas de integración continua (CI). Asegúrese de que se utiliza el mismo cubo COS en todas las cadenas de herramientas de integración continua (CI), Continuous Delivery (CD) y cumplimiento continuo (CC).

Es una buena práctica utilizar un cubo Cloud Object Storage como almacén de pruebas para almacenar todas las pruebas y artefactos que se recopilan durante la ejecución de la canalización.

Para más información sobre el almacenamiento de pruebas, véase Pruebas.

Pruebas

URL del repositorio: URL del repositorio de Evidence Locker configurado en su cadena de herramientas de integración continua (CI), tal y como se ha indicado en el paso anterior.

Grupo de nube Object Storage

Para utilizar esta función, debe disponer de una instancia de Cloud Object Storage y un bucket. Haga clic en Usar buckets de Cloud Object Storage como almacén de pruebas para crear una instancia de Cloud Object Storage. Para obtener más información sobre cómo configurar un depósito que pueda actuar como almacén de pruebas de cumplimiento normativo, consulte Configuración de Cloud Object Storage para almacenar pruebas.

  • Los campos instancia de Cloud Object Storage, nombre de Bucket y punto final de Cloud Object Storage se rellenan automáticamente.
  • Introduce la clave API del ID de servicio
    • Es preferible: Se puede importar una clave existente de un almacén de secretos haciendo clic en el icono de la clave.
    • Se puede copiar y pegar una clave ya existente.

El campo endpoint es opcional. Seleccione o proporcione el punto final durante la configuración de la cadena de herramientas o durante la ejecución de la canalización.

Destino de despliegue

Para el caso de uso DevSecOps para Terraform, elija la opción Despliegue personalizado.

Destino personalizado

Esta opción requiere la clave API IBM Cloud que se utiliza en los scripts de despliegue de la canalización. Los scripts de despliegue proporcionados utilizan Schematics para cargar el artefacto de configuración de Terraform en el espacio de trabajo Schematics y utilizan Schematics CLI plan y apply comandos para entregar la configuración de Terraform en IBM Cloud.

Clave de API de IBM Cloud

La clave API interactúa con la herramienta CLI IBM Cloud en varias tareas:

  • Es preferible: Importar una clave existente de un almacén de secretos haciendo clic en el icono de la clave.
  • Copia y pega una clave existente.
  • Cree una clave pulsando el botón Nuevo +.

Guarde la clave API recién generada en un almacén de secretos.

Gestión de solicitudes de cambio

Utilice un repositorio IBM Cloud-hosted Git Repos and Issue Tracking para gestionar las solicitudes de cambio. Para obtener más información, consulte Automatización de la gestión de cambios.

Herramientas opcionales

Slack

Configure la herramienta Slack para recibir notificaciones sobre sus eventos PR/CI Pipeline:

  • Webhook Slack
  • Es preferible: Se puede importar un webhook existente desde un almacén de secretos haciendo clic en el icono de la llave.
  • Copie y pegue un webhook existente.
  • Canal Slack: envíe un mensaje a un canal Slack existente.
  • Slack nombre del equipo: la frase antes de . slack.com en nuestro equipo URL. Por ejemplo, si la URL de tu equipo es https://team.slack.com, el nombre del equipo es team.
  • Notificaciones automatizadas de Slack: Personalice su selección eligiendo los eventos para los que desea recibir notificaciones.

Puede añadir la herramienta Slack después de crear la cadena de herramientas.

Una vez creada la cadena de herramientas, activa o desactiva el envío de notificaciones mediante la propiedad de entorno slack-notifications en tu canalización de CD (0 = desactivado, 1 = activado)

Creación de la cadena de herramientas de entrega continua

En la página Resumen, haz clic en Crear y espera a que se cree la cadena de herramientas.

Configure las integraciones de cada cadena de herramientas una vez creado el proceso.

DevSecOps CD Toolchain Creado Figura 4.
DevSecOps Cadena de herramientas de CD creada

Explore la cadena de herramientas de entrega continua

Una vez creada la cadena de herramientas de CD, haga clic en la tarjeta cd-pipeline para abrir y ejecutar la cadena de promoción.

Ejecute la interconexión de promoción

Asegúrate de que el proceso de CI se haya ejecutado correctamente antes de ejecutar el proceso de promoción.

La interconexión de promoción crea una Solicitud de extracción con el contenido del inventario en la rama de entorno de origen de inventario (por ejemplo: maestro) dirigida a la rama de entorno de destino de inventario (por ejemplo: transferencia o producción).

  • En el panel de cd-pipeline, haga clic en Ejecutar pipeline y seleccione el Activador de promoción manual. Haz clic en Ejecutar para activar el proceso.
  • Espere a que finalice la ejecución de la tubería de promoción y compruebe el registro de ejecución.
  • Una vez que el proceso de promoción se haya completado con éxito, el registro de tareas promote proporciona un enlace a la solicitud de incorporación de cambios en el repositorio de inventario. El nombre de la solicitud de incorporación de cambios sigue el formato promote <Inventory Source Environment> to <Inventory Target Environment>.
  1. Abre la solicitud de incorporación de cambios en tu navegador mediante el enlace que aparece en el registro. Rellena los datos de las siguientes secciones:

    • Prioridad: (obligatorio) Una de las siguientes: Crítica, Alta, Moderada, Baja, Planificación.
    • Responsable de la solicitud de cambio: (obligatorio) dirección de correo electrónico del responsable.
    • Descripción adicional: Descripción de los cambios en la aplicación.
    • Objetivo: Objetivo de los cambios que se realizan en la aplicación.
    • Explicación del impacto: impacto del cambio en el comportamiento de la aplicación o en el entorno.
    • Plan de restitución: pasos para restituir si se produce un error de despliegue.
  2. Rellena los campos de la solicitud de incorporación de cambios y haz clic en Guardar.

  3. Añada la etiqueta EMERGENCY a su PR si ha fallado alguna comprobación de conformidad en CI y desea continuar con la implantación

  4. Fusione la solicitud de extracción de Git Repos and Issue Tracking.

Los detalles de la solicitud de incorporación de cambios son utilizados por el proceso de entrega continua (CD Pipeline) para crear una solicitud de cambio en el repositorio de gestión de solicitudes de cambio durante la ejecución del proceso de entrega continua.

Configurar el CD Pipeline

variables de terraform

Para este tutorial, especifique el nombre de la instancia de protección de claves que se creará en el entorno de producción.

Para ello, seleccione Propiedades del entorno en la línea de comandos y haga clic en Añadir.

Configuración de CD Pipeline
Figura 5. Configuración de la tubería de CD

Añade una propiedad de tipo Text Value y nombre TF_VAR_key_protect_instance. Establezca un valor significativo que indique la entrega al entorno de producción, como key-protect-production-202210191453. El valor de esta propiedad de entorno se inyecta como valor de la variable de configuración key_protect_instance terraform.

También debe configurar el proveedor IBM Cloud para Terraform con el ibmcloud_api_key apropiado que se autentique con el IBM Cloud como se describe en Configuración del plugin IBM Cloud Provider

Añade una propiedad de tipo Secure Value y nombre TF_VAR_ibmcloud_api_key. Establezca el valor de la clave api que se utilizará para la creación de recursos en IBM Cloud.

La muestra utilizada en este tutorial espera un resource_group para crear la instancia KeyProtect. El nombre por defecto de resource_group es Default. Si esto no es apropiado para su cuenta, reemplace la variable por defecto resource_group en el archivo variables.tf o especifique el valor de la variable resource_group a utilizar estableciendo la propiedad de entorno TF_VAR_resource_group en el nombre del grupo de recursos apropiado.

Rama de configuración de la tubería

La rama del repositorio de configuración del pipeline se define como master en las propiedades del entorno de CD Pipeline por defecto. Cambia la rama a main para este tutorial.

Para ello, seleccione Propiedades del entorno en la línea de comandos de cd y haga clic en edit para cambiar el valor a main

CD Configuración de la tubería rama
Figura 6. Rama de configuración de CD Pipeline

Ejecución de la interconexión de entrega continua

Inicia un proceso de CD de una de las siguientes formas:

  • Se recomienda: activar manualmente el proceso de CD.
  • Opcional: automáticamente tras cada Merge acción en el repositorio de inventario. Se ha configurado un disparador Git Repos and Issue Tracking para activar automáticamente el proceso de entrega continua (CD), pero está desactivado de forma predeterminada.

También puede activar el proceso de CD manualmente en cualquier momento, pero si no hay cambios desde el último despliegue con éxito, el proceso de CD se aborta antes de tiempo porque no hay nada que desplegar. Puede añadir y utilizar force-redeploy variable para volver a ejecutar el CD sin cambios de código.

Una ejecución correcta de una interconexión de entrega continua tiene este aspecto:

DevSecOps CD Pipeline Éxito Figura 7.
DevSecOps Éxito del CD Pipeline

Una vez ejecutado correctamente el proceso de CD, podrá encontrar el servicio de instancia KeyProtect en la lista de recursos.

KeyProtect instancia de servicio creada Figura 8.
KeyProtect instancia de servicio creada