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:
- Un clúster en IBM Cloud® Kubernetes Service o Red Hat OpenShift en IBM Cloud.
- Una instancia de IBM Cloud Object Storage estándar y un grupo.
- IBM Cloud® Secrets Manager. Tenga en cuenta que solo se permite una instancia de Secrets Manager. Si ya tiene un servicio Secrets Manager, asegúrese de sustituir el valor
predeterminado
sm_service_nameen el paso 2. - Clave de firma de imagen GPG.
- Una cadena de herramientas de CI de DevSecOps totalmente funcional que crea, prueba y despliega una aplicación Node.js de ejemplo utilizando las prácticas recomendadas de conformidad y seguridad de DevSecOps.
Antes de empezar
- Para completar esta guía de aprendizaje, utilice una cuenta de IBM Cloud de pago según uso o de suscripción de la que sea propietario o sobre la que tenga acceso completo de administrador. Si ya tiene una cuenta IBM Cloud y necesita actualizarla, consulte Actualización de su cuenta.
- Instale la CLI de IBM Cloud si desea interactuar con los elementos de la cadena de herramientas o la infraestructura después de que se hayan creado.
- Obtenga una credencial de acceso personal GitLab. Especifique un nombre para la señal de acceso personal. Cree la señal en la misma región que la cadena de herramientas de CI. Asegúrese de copiar y guardar la señal, porque la necesitará más adelante y no podrá volver a acceder a ella.
- Cree una clave API IBM Cloud. Asegúrese de copiar y guardar o descargar el valor de la clave de API, porque lo necesitará más adelante y no podrá volver a acceder al mismo.
Creación de un espacio de trabajo de Schematics
-
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.
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.
-
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
-
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. -
Para la variable
gitlab_token, especifique la señal de acceso personal que ha obtenido anteriormente. -
Para la variable
ibmcloud_api_key, especifique la clave de API de IBM Cloud que ha obtenido anteriormente. -
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. -
Para la variable
kube_version, ejecute:ibmcloud ks versionsen una línea de comando para ver las versiones disponibles. -
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. -
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, oprivate_vlan_num(los valores por defecto son para el centro de datos dal12/us-south ). -
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.
-
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.
-
En la página Trabajos de Schematics, puede ver el registro ampliando el nombre del trabajo.
-
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.
- Vaya a su cadena de herramientas CI recién creada en DevSecOps.
- Haga clic en el Git que empieza por
compliance-app. - Para activar la línea pr, actualice algún texto en el archivo
README.mdy, a continuación, inicie un PR contra la ramamain. - En el campo Rama de destino, cambie el nombre de la rama de
maina otro. Por ejemplo,mybranch. - Asegúrese de que la casilla "Iniciar una nueva solicitud de fusión con estos cambios" está seleccionada.
- Haga clic en Confirmar cambios.
- Opcional. En la página Nueva solicitud de fusión, añada una descripción.
- 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:
-
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. -
Para ver el progreso, haga clic en el enlace
pr-pipeline.
Figura 1. Cuadro de mandos de pr-pipeline
Notas:
-
Si se encuentra alguna vulnerabilidad, falla el paso de finalización del código.
-
Para encontrar las vulnerabilidades, vaya a
code-unit-tests>run-stagepara ver los registros. (captura de pantalla) -
Resolver las vulnerabilidades, y luego se activa la pr-pipeline.
-
Vuelve al mosaico del repositorio de aplicaciones.
-
En el panel de navegación, haga clic en Fusionar solicitudes.
-
Seleccione el RP.
-
Opcional. Haga clic en el botón Aprobar (si no, verá un error al final de la ejecución del ci-pipeline).
-
Seleccione "Eliminar rama de origen"
-
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ú 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.