Configuración de canalizaciones de despliegue continuo Tekton con DevSecOps

Con este tutorial, puede configurar una cadena de herramientas y una canalización de despliegue continuo (CD) que se adhieran a las mejores prácticas de cumplimiento.

Antes de empezar

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

El servicio Continuous Delivery proporciona plantillas que le guían a través de la configuración de la cadena de herramientas y crean procesos en un orden lógico. Un indicador de progreso muestra los pasos para completar la configuración. Siga los pasos para acceder a la plantilla de la cadena de herramientas CI.

  1. En la consola ' IBM Cloud ', haz clic en el icono ' Menú ' ' Icono del menú > ' Automatización de plataformas > ' Cadenas de herramientas.
  2. En la página Cadenas de herramientas, pulse Crear cadena de herramientas.
  3. Haga clic en la ficha CD-Desarrolle con DevSecOps.

Configurar la cadena de herramientas CI

La página Bienvenida resume el propósito de la cadena de herramientas junto con punteros a la documentación y materiales relacionados.

  1. Pulse Iniciar.

  2. Introduzca un Nombre de la cadena de herramientas dentro de su cadena de herramientas para la misma región y grupo de recursos en el 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.

  3. Seleccione una región en la lista desplegable.

    La región de la cadena de herramientas puede diferir del clúster y de la región de registro.

  4. Seleccione un grupo de recursos de la lista desplegable.

  5. Pulse Continuar.

    Sólo puede avanzar al paso siguiente una vez completada y validada la configuración del paso actual. Siempre puede hacer clic en Atrás para ver 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.

    Algunos pasos incluyen un botón Cambiar a configuración avanzada. Estos pasos le presentan por defecto la configuración mínima. Sin embargo, los usuarios avanzados que necesiten un control más preciso pueden hacer clic en el conmutador Cambiar a configuración avanzada para ver las opciones de la integración subyacente.

Configurar las integraciones de las herramientas de CD

La integración de herramientas de CD abarca la configuración de las distintas integraciones de herramientas y servicios que utiliza la cadena de herramientas de CD. Si utiliza una plantilla de cadena de herramientas de canalización de CI para configurar su proceso de CI, consulte su cadena de herramientas de CI y copie los nombres de los repositorios que se utilizan en esa cadena de herramientas.

Repositorios relacionados con la aplicación

Si desea configurar su cadena de herramientas CI desde cero, configure estos repositorios durante la creación de la cadena de herramientas CI.

Inventario
La información sobre el despliegue se rastrea utilizando este repositorio. Para cada ejecución exitosa de la tubería de CI, la tubería de CD crea una nueva rama que se nombra como el número de CR creado, y se fusiona con el maestro una vez concluido el despliegue. Por ejemplo, https://<region>.git.cloud.ibm.com/myorg/my-compliance-ci-inventory.
Problemas
Almacena las incidencias que se producen durante el proceso de compilación y despliegue. Por ejemplo, https://<region>.git.cloud.ibm.com/myorg/my-compliance-ci-issues.
Pruebas
Recoge todas las pruebas de conformidad en bruto que pertenecen a la aplicación. Por ejemplo, https://<region>.git.cloud.ibm.com/myorg/my-compliance-ci-evidence.
Cadena de herramientas
En este repositorio se almacenan las definiciones de los pipelines tekton, como pipelines, triggers y listeners. Por ejemplo, https://<region>.git.cloud.ibm.com/myorg/my-compliance-ci-toolchain.

Después de capturar los nombres de los repositorios de la cadena de herramientas de CI, proceda con Guided Setup para comenzar la creación de la cadena de herramientas de CD. Durante el proceso de configuración, para cada repositorio puede proporcionar la URL a un repositorio IBM alojado en Git Repos and Issue Tracking existente. Actualmente, la cadena de herramientas sólo permite crear repositorios en Git Repos and Issue Tracking. Futuras versiones proporcionarán soporte para crear repositorios con GitHub, GitHub Enterprise (GHE), y otros proveedores SCM.

Inventario

El repositorio de inventario registra detalles de artefactos creados por las cadenas de herramientas de CI. El comportamiento predeterminado de la cadena de herramientas es Utilizar inventario existente para vincular un repositorio de inventario existente para la cadena de herramientas. Actualmente, la cadena de herramientas sólo admite enlaces a los repositorios Git Repos and Issue Tracking existentes. Para obtener más información, consulte Repositorios relacionados con la aplicación.

  1. Puede aceptar la configuración por defecto que se proporciona en la plantilla.
  2. Pulse Continuar.

Problemas

El repositorio de incidencias registra las incidencias que se encuentran mientras se ejecuta el canal CI.

  1. Puede aceptar la configuración por defecto que se proporciona en la plantilla.
  2. Haga clic en Continuar

Configuración de la canalización

El repositorio de configuración del pipeline contiene archivos YAML y scripts necesarios para el despliegue, las pruebas y otras tareas personalizadas. Para obtener más información sobre Git, consulte Configuración de sus Git Repos and Issue Tracking. Para obtener más información sobre los scripts personalizables, consulte Scripts personalizados.

  1. Acepte la configuración predeterminada para Proveedor de origen y Crear un nuevo repositorio de configuración de despliegue.

    La cadena de herramientas clona la muestra hello-compliance-deployment en su organización Git. Para obtener más información sobre los repositorios de Git, consulte Configuración de su Git Repos and Issue Tracking. Para obtener más información sobre los scripts personalizables, consulte Scripts personalizados.

  2. Introduzca un Nuevo nombre de repositorio.

  3. Pulse Continuar.

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. Almacene estos secretos de forma segura en una herramienta de gestión de secretos, como por ejemplo 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.

Puede utilizar el método de AppRole método de autenticación para leer valores secretos.

  1. Este tutorial utiliza IBM Cloud® Secrets Manager como bóveda para los secretos. Los campos Región, Grupo de recursos y Nombre del servicio se rellenan automáticamente en función de las opciones disponibles. Haz clic en los indicadores desplegables para ver las demás opciones.
  2. Escriba su Secrets Manager nombre de instancia.
  3. Seleccione el tipo de autorización en la lista desplegable.
  4. Pulse Continuar.

Almacenamiento de pruebas

El armario de pruebas almacena todas las pruebas y artefactos generados por el proceso de CI de DevSecOps.

  1. Seleccione un Repositorio de armario de pruebas existente.
  2. Seleccione el Repository URL, que se creó al configurar la cadena de herramientas de integración continua (CI). Para obtener más información sobre el almacenamiento de pruebas, consulte Pruebas.
  3. Active el control deslizante del cubo IBM Cloud Object Storage para almacenar todas las pruebas en el cubo IBM Cloud Object Storage.
  4. Pulse Continuar.

Nube Object Storage Cubo

Debe disponer de la instancia IBM Cloud Object Storage y de un depósito que actúe como almacén de pruebas de cumplimiento.

  1. Los campos Cloud Object Storage instance, Bucket name y Cloud Object Storage endpoint se rellenan automáticamente.
  2. Introduzca su clave API de 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 existente.
  3. Pulse Continuar.

El campo de punto final es opcional. Se recomienda seleccionar o proporcionar el punto final durante la configuración de la cadena de herramientas o durante la ejecución de la canalización.

Desplegar

Configure el destino del inventario y el clúster Kubernetes donde se despliega la aplicación:

  1. La dirección Nombre de la aplicación por defecto es hello-compliance-app.

  2. Introduzca su clave API en IBM Cloud. La clave API se utiliza para interactuar con la herramienta CLI IBM Cloud en varias tareas.

    • 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 existente.
    • Desde aquí se puede crear una nueva clave pulsando el botón Nuevo +.

    La clave API recién generada puede guardarse inmediatamente en una bóveda de secretos.

  3. Si la clave de API es válida y tiene acceso suficiente, el Container Registry, Container Registry namespace, Dev cluster region, Resource group, Cluster name, Cluster namespace se rellenan automáticamente. Puede modificar cualquiera de estos campos para adaptarlos a su configuración.

  4. Pulse Continuar.

Clave de API de IBM Cloud

La clave API se utiliza para interactuar con la herramienta CLI ibmcloud en varias tareas.

  • Se puede importar una clave API existente de un proveedor secreto intance creado como prerrequisitos (Recomendado)
  • Se puede copiar y pegar una clave existente (No recomendado)
  • Se puede crear una nueva clave haciendo clic en Nuevo +. Genere una api-key si no tiene ninguna. La clave de API recién generada se puede guardar inmediatamente en una instancia existente de Key Protect

Cuando se rellena el campo Clave API, los campos relacionados con el registro y el clúster se rellenan automáticamente.

Ramas de origen y de destino del inventario

  1. Acepte la opción Single cluster (push based deployment) para desplegar su aplicación en destinos como Virtual Server Instance o personalice el proceso de despliegue, utilice la opción Custom.
  2. Haga clic en Continuar para ver la página del clúster.
  3. Introduzca el campo IBM Cloud API Key para interactuar con la herramienta CLI en varias tareas. Nota se puede importar una clave existente desde un almacén de secretos haciendo clic en el icono de la clave.
  4. Compruebe los campos Región del clúster, Grupo de recursos, Nombre del clúster y Espacio de nombres del clúster donde se crea el clúster de destino.
  5. Pulse Continuar.

Gestión de solicitudes de cambio

  1. Seleccione IBM Cloud repositorio alojado 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.
  2. Pulse Continuar.

DevOps Insights cadena de herramientas

Vincula una instancia DevOps Insights existente de otra cadena de herramientas a esta canalización, de modo que todos los registros de compilación, despliegue y prueba de las canalizaciones de las cadenas de herramientas de CI y CD puedan recopilarse en el mismo lugar.

La cadena de herramientas de CD puede publicar los registros de despliegue en una instancia DevOps Insights existente. Para activar esta función, proporcione el ID de la cadena de herramientas que contiene la instancia DevOps Insights existente seleccionando en la lista de ID de cadenas de herramientas DevOps Insights.

  1. Proporcione su DevOps Insights IBM Cloud API Key.
  2. Acepta la configuración por defecto.
  3. Compruebe su Región, Grupo de recursos, DevOps Insights toolchain ID, y DevOps Insights target environment campos donde se crea su entorno de destino.
  4. Pulse Continuar.

Herramientas opcionales

Slack

Configura el Slack para recibir notificaciones sobre tus pull requests, o eventos del CI pipeline. También puede añadir la herramienta Slack después de la creación de la cadena de herramientas.

  1. Introduzca su webhook de Slack. Para obtener más información, consulte Slack webhook.
  2. Introduce tu Canal de Slack para publicar el mensaje.
  3. Introduce el Nombre del equipo de la banda. Por ejemplo, si su equipo URL https://team.slack.com, el nombre del equipo es team.
  4. Elegir los eventos para los que desea recibir notificaciones para Notificaciones automatizadas de Slack.
  5. Pulse Continuar.

Trabajador privado

La integración de la herramienta de trabajador privado de canalización de entregas se conecta con uno o varios trabajadores privados que pueden ejecutar cargas de trabajo de canalización de entregas de forma aislada. Para obtener más información, consulte Como trabajar con trabajadores privados.

  1. Introduzca un Nombre para el trabajador privado de la canalización de entregas.
  2. Introduzca su clave API de 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 existente.
  3. Pulse Continuar.

Creación de la cadena de herramientas de entrega continua

  1. En la página Resumen, pulse Crear.
  2. Espere a que se cree la cadena de herramientas para ver la página de resumen como se muestra en la captura de pantalla. Este proceso puede durar unos minutos.

caption-side=bottom"
DevSecOps CD toolchain created DevSecOps CD toolchain created

Puede configurar las integraciones de cadenas de herramientas individuales después de crear la interconexión.

Explore la cadena de herramientas de entrega continua

Ejecute la interconexión de promoción

Asegúrese de que la canalización CI se ha ejecutado correctamente antes de ejecutar la canalización de promoción.

  1. Haga clic en cd-pipeline.

  2. Haga clic en Ejecutar para Disparador de promoción manual.

  3. Haga clic en Ejecutar para activar la canalización.

  4. Haga clic en Disparador de promoción manual > #1promotion-pipelinerun tubería. Espere a que finalice la ejecución de la tubería de promoción y compruebe el registro de ejecución.

    El pipeline de promoción crea una pull request con el contenido del inventario en el entorno de origen del inventario como la rama master dirigida a la rama del entorno de destino del inventario como staging o production.

  5. Una vez que el proceso de promoción finaliza correctamente, el registro de tareas de promote proporciona un enlace a la solicitud de extracción en el repositorio de inventario. El nombre de la solicitud de extracción tiene el formato promote <inventory source environment> to <inventory target environment>, por ejemplo, promote master to prod

  6. Abra la solicitud de extracción en su navegador con el enlace proporcionado en el registro. Complete los datos de las secciones siguientes:

    • Prioridad: (obligatorio) Establecer como Critical, High, Moderate, Low, o Planning.
    • Cesionario de la solicitud de cambio: (obligatorio) Email-ID del cesionario.
    • Descripción adicional: Descripción sobre los cambios en la aplicación.
    • Propósito/Objetivo: Propósito de los cambios que se realizan en la aplicación.
    • Explicación del impacto: Impacto del cambio en el comportamiento o entorno de la aplicación.
    • Plan de retirada: Pasos a seguir si se produce un fallo en la implantación.
  7. Rellene los campos de la solicitud de extracción y haga clic en Guardar.

  8. Añade la etiqueta EMERGENCY a tu pull request si falló alguna comprobación de conformidad en CI y quieres continuar con el despliegue

  9. Fusiona el pull request de Git Repos and Issue Tracking.

Los detalles de la solicitud de extracción se utilizan durante la canalización de CD que se ejecuta para crear y actualizar en el repositorio de solicitudes de cambio.

Ejecución de la interconexión de entrega continua

Ejecutar el proceso de promoción

  1. Asegúrese de que la canalización CI se ha ejecutado correctamente antes de ejecutar Promotion Pipeline.

  2. El pipeline de promoción crea un Pull Request con el contenido del inventario en el entorno de origen del inventario. Por ejemplo, master rama dirigida a la rama del entorno de destino del inventario, por ejemplo, staging o prod. Se crea una rama intermedia para la solicitud de extracción que se puede descartar después de fusionar la solicitud de extracción.

    ' Ejecutando el pipeline de promoción
    Ejecutando el pipeline de promoción

  3. Una vez que la tarea Promotion Pipeline finaliza correctamente, la tarea promote le proporciona un enlace a la tarea Pull Request mencionada anteriormente en el repositorio de inventario. El nombre de la solicitud de extracción tiene el siguiente formato:

    promote <Inventory Source Environment> to <Inventory Target Environment>
    
  4. Abra la Pull Request en el navegador con el enlace proporcionado en el registro. Rellene las secciones como se indica a continuación:

    • Prioridad: (obligatorio) Crítica, Alta, Moderada, Baja, Planificación
    • Destinatario de asignación de solicitud de cambio: (obligatorio) ID del correo electrónico del destinatario de asignación
    • Descripción adicional: descripción sobre los cambios en la aplicación
    • Finalidad: la finalidad de los cambios realizados en la aplicación
    • Explicación del impacto: el impacto del cambio en el comportamiento o el entorno de la aplicación
    • Plan de retirada: Pasos a seguir si falla la implantación
  5. Complete los campos de la Pull Request y guárdelos.

  6. Fusione el Pull Request desde el Git Repos and Issue Tracking.

Los detalles de Pull Request son utilizados por el proceso de CD para crear una solicitud de cambio en el repositorio de gestión de solicitudes de cambio durante la ejecución del proceso de CD.

Ejecución de la interconexión de entrega continua

Puede activar un canal de CD de forma manual o automática. Puede activar el canal de CD manualmente en cualquier momento, pero si no hay cambios desde el último despliegue con éxito, el canal de CD se detiene antes de tiempo ya que no hay nada que desplegar. Un Git Repos and Issue Tracking disparador está configurado para activar la tubería automática de CD, pero está desactivado por defecto y puede ser activado después de la primera promotion.You puede añadir y utilizar force-redeploy variable para volver a ejecutar el CD sin cambios en el código. Ver la captura de pantalla exitosa de la tubería de CD de DevSecOps.

caption-side=bottom"
DevSecOps CD pipeline manual promotion DevSecOps CD pipeline manual promotion

caption-side=bottom"
DevSecOps CD pipeline promoción automática DevSecOps CD pipeline promoción automática

También puede activar la CD Pipeline manualmente en cualquier momento, pero si no hay cambios desde el último despliegue satisfactorio, la CD Pipeline no despliega nada nuevo.

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

caption-side=bottom"
DevSecOps CD pipeline successful DevSecOps CD pipeline successful

Flujo de las tareas en la interconexión de entrega continua:

caption-side=bottom"
DevSecOps Tareas de DC Tareas de DC de DevSecOps

Tras una correcta ejecución de la canalización de CD, puede encontrar la aplicación de ejemplo que se está ejecutando en el espacio de nombres prod. El url de la app se puede encontrar bajo el subpaso run stage del paso prod deployment de la ejecución de la interconexión de entrega continua. Utilice ese url para comprobar que la app esté en ejecución.

aplicación 'DevSecOps ' ejecutando aplicación
' DevSecOps ejecutando aplicación