Configure la infraestructura de DevSecOps y la cadena de herramientas de CI para desplegar una aplicación segura

Utilice esta guía de aprendizaje para la configuración automatizada y el suministro de la infraestructura para las cadenas de herramientas de CI y CD utilizando una plantilla de inicio rápido basada en Terraform. La plantilla utiliza las prácticas recomendadas de conformidad y seguridad de DevSecOps. La plantilla utiliza un espacio de trabajo de IBM Cloud® Schematics, que automatiza la creación de la infraestructura necesaria para desplegar de forma segura su aplicación en Kubernetes o en Red Hat® OpenShift®. La plantilla utiliza la estructura de conducto de la cadena de herramientas DevSecOps IBM Cloud® Continuous Delivery. La cadena de herramientas está preconfigurada para la entrega continua con integración de inventario, gestión de cambios, recopilación de pruebas y despliegue.

IBM Cloud Schematics proporciona Terraform como un servicio, de manera que pueda utilizar un lenguaje de script de alto nivel para modelar los recursos que desee en su entorno de IBM Cloud y habilitar la infraestructura como código (IaC). Terraform es un software de código abierto desarrollado por HashiCorp. Terraform permite un suministro de recursos predecible y coherente para crear entornos de nube complejos y de varios niveles.

En esta guía de aprendizaje, seguirá tres pasos sencillos para crear un espacio de trabajo de Schematics, aplicar un plan de ejecución de Terraform y actualizar el valor de propiedades de entorno. Cuando aplica el plan, el espacio de trabajo de Schematics configura su infraestructura segura. Esta infraestructura es compartible con su equipo, y funciona para las DevSecOpsUna metodología que integra las prácticas de seguridad con el ciclo de vida de operaciones y desarrollo de software. El objetivo de la fusión es priorizar el equilibrio de la velocidad de desarrollo y la seguridad. Plantillas de cadenas de herramientas de CI y CD.

La configuración de infraestructura automatizada crea recursos que se suministran automáticamente mediante los valores predeterminados de las plantillas de CI y CD de DevSecOps. Encontrará los valores predeterminados en la sección Variables del espacio de trabajo de Schematics. Se crean los recursos siguientes:

Antes de empezar

Creación de un espacio de trabajo de Schematics

  1. Pulse una de las opciones siguientes para el destino de despliegue de clúster. Esta acción le lleva a la página Desplegar en IBM Cloud donde crea un espacio de trabajo de Schematics. Complete los campos necesarios de dicha página y, a continuación, pulse Siguiente.

    Despliegue en Kubernetes en IBM Cloud

    Desplegar en OpenShift on IBM Cloud

    En función de la opción que seleccione, la plantilla Terraform correspondiente de este repositorio se importa automáticamente en el nuevo espacio de trabajo de Schematics.

  2. Verifique la información y, a continuación, pulse Crear. Se crea el espacio de trabajo Schematics y se visualiza la página de valores del espacio de trabajo Schematics.

Aplicación del plan de ejecución de Terraform

  1. En la sección Variables de la página Valores de Schematics, especifique los valores para cada variable. Los campos obligatorios no tienen valores predeterminados. Puede alterar temporalmente los valores predeterminados.

    Si anula el valor de sm_service_name, el plan de ejecución de Terraform utiliza el recurso existente en lugar de crear un nuevo recurso.

  2. Para la variable gitlab_token, especifique la señal de acceso personal que ha obtenido anteriormente.

  3. Para la variable ibmcloud_api_key, especifique la clave de API de IBM Cloud que ha obtenido anteriormente.

  4. Para la variable registry_namespace, especifique un valor de espacio de nombres de registro de contenedor. Para crear un espacio de nombres, consulte Container Registry Espacios de nombres.

  5. Para la variable kube_version, ejecute: ibmcloud ks versions en una línea de comando para ver las versiones disponibles.

  6. Opcional. Si ya tiene una instancia de Secrets Manager, especifique su nombre para la variable sm_service_name. De lo contrario, no modifique esta variable.

  7. Opcional. Si desea ajustar el tamaño o la ubicación de su clúster, puede anular las siguientes variables: datacenter, default_pool_size, machine_type, hardware, public_vlan_num, o private_vlan_num (los valores por defecto son para el centro de datos dal12/us-south ).

  8. Opcional. Pulse Generar plan. Esta acción crea un plan de ejecución de Terraform y comprueba la configuración para ver si hay errores de sintaxis. En la página Trabajos de Schematics, puede revisar los archivos de registro para ver si hay errores y para ver los recursos de IBM Cloud que se deben crear, modificar o suprimir para alcanzar el estado correcto de la plantilla de Terraform.

  9. Después de especificar todos los valores para las variables y cuando esté satisfecho con los cambios, pulse Aplicar plan para ejecutar el código de infraestructura.

    Este paso tarda algún tiempo en completarse (normalmente 20-30 minutos, pero puede tardar más), porque se crea un nuevo clúster de Kubernetes o de OpenShift.

  10. En la página Trabajos de Schematics, puede ver el registro ampliando el nombre del trabajo.

  11. Después de aplicar el plan, visualice el URL de la cadena de herramientas de CI de IBM Cloud DevSecOps que se ha generado. El URL se encuentra casi al final del archivo de registro en una línea que empieza por View the toolchain at:.

Si aplica el plan una segunda vez, se suprime el clúster de Kubernetes o de OpenShift creado anteriormente y las aplicaciones desplegadas en el mismo se suprimen y se crea un nuevo clúster. Sin embargo, si anula el nombre de clúster predeterminado, se utilizará ese clúster.

Despliegue de la app

Siga estos pasos para ejecutar la canalización.

  1. Vaya a su cadena de herramientas CI recién creada en DevSecOps.
  2. Haga clic en el Git que empieza por compliance-app.
  3. Para activar la línea pr, actualice algún texto en el archivo README.md y, a continuación, inicie un PR contra la rama main.
  4. En el campo Rama de destino, cambie el nombre de la rama de main a otro. Por ejemplo, mybranch.
  5. Asegúrese de que la casilla "Iniciar una nueva solicitud de fusión con estos cambios" está seleccionada.
  6. Haga clic en Confirmar cambios.
  7. Opcional. En la página Nueva solicitud de fusión, añada una descripción.
  8. Haga clic en Crear solicitud de fusión.

Se activa la línea de producción pr en la cadena de herramientas ci. Verifique que la tubería se está ejecutando completando estos pasos:

  1. Vuelva a su cadena de herramientas CI y haga clic en la ficha Delivery Pipeline de su sitio pr-pipeline. En la página Dashboard del pr-pipeline, puede ver el pr-pipeline en ejecución.

  2. Para ver el progreso, haga clic en el enlace pr-pipeline.

    pr-pipeline
    Figura 1. Cuadro de mandos de pr-pipeline

Notas:

  1. Si se encuentra alguna vulnerabilidad, falla el paso de finalización del código.

  2. Para encontrar las vulnerabilidades, vaya a code-unit-tests > run-stage para ver los registros. (captura de pantalla)

  3. Resolver las vulnerabilidades, y luego se activa la pr-pipeline.

  4. Vuelve al mosaico del repositorio de aplicaciones.

  5. En el panel de navegación, haga clic en Fusionar solicitudes.

  6. Seleccione el RP.

  7. Opcional. Haga clic en el botón Aprobar (si no, verá un error al final de la ejecución del ci-pipeline).

  8. Seleccione "Eliminar rama de origen"

  9. Haga clic en Fusionar.

Al fusionar este PR se activa automáticamente el ci-pipeline. Para verificarlo, vuelva al mosaico ci-pipeline de la cadena de herramientas y compruebe que el pipeline se está ejecutando. Haga clic en el enlace del oleoducto para ver el progreso.

Este paso despliega la aplicación en el clúster recién creado. La aplicación URL se encuentra en la parte inferior del archivo de registro en el paso deploy-dev > run-stage de la ci-pipeline.

Próximos pasos

Continúe en la sección "Explorar su cadena de herramientas de CI" de la siguiente guía de aprendizaje y ejecute los conductos CI-PR y CI. Luego continúe con el resto de los pasos de esta guía de aprendizaje para desplegar una app segura.

En cualquier momento, puede ver todos los recursos que se han creado con esta guía de aprendizaje pulsando el icono Menú Icono de menú y seleccionando Lista de recursos. Puede ver su espacio de trabajo de Schematics, su clúster, su instancia de IBM Cloud Object Storage, su servicio Secrets Manager, su servicio de entrega continua y su cadena de herramientas.