This research consists of developing a DevSecOps deployment that solves the need to
automate in an optimal and secure way by using DevSecOps best practices. The process
consists in that the code implemented in a project with a Laravel Framework is
versioned in a Git repository and a container image is generated from the main branch,
which is automatically deployed in a Kubernetes cluster with the use of action flow. To
generate web application deployment processes in a secure and fast way, reducing error
processes or version conflicts, allowing change rollback processes. For the use of the
functionalities of the different platforms, private repositories are used, in this way the
published project will be implemented in a secure way. For the automated work we use
Git, Kubernetes, Actions, Manifestos, PHP, Composer and Laravel technology.
Keywords: Php, Deployment, Docker, Kubernetes, GitHub, Dockerfile, Back-end,
Front-end
Introducción
Un correcto flujo de implementación de aplicaciones web es una parte importante
dentro de cualquier metodología de desarrollo; esto permite reducir tiempos y errores en
los despliegues de aplicaciones web en ambientes de producción. El proceso se
fundamenta por medio del manejo del código fuente versionado en una rama principal,
por el cual se podrá generar un proceso de despliegue en clúster de Kubernetes.
Según Beyer et al. (2016), la ejecución de servicios confiables requiere procesos de
lanzamiento confiables. Los ingenieros de confiabilidad del sitio (SRE) deben saber que
los archivos binarios y las configuraciones que utilizan se construyen de manera
reproducible y automatizada para que los lanzamientos sean repetibles y no sean "copos
de nieve únicos". Los cambios en cualquier aspecto del proceso de lanzamiento deben
ser intencionales, en lugar de accidentales. Los SRE se preocupan por este proceso
desde el código fuente hasta la implementación.
Para McNutt (2013) es recomendable utilizar un sistema de construcción automatizado.
Poder construir rápidamente y bajo demanda; el proceso de construcción debe estar
completamente automatizado y hacer cosas como ejecutar pruebas, empaquetar e
incluso implementar. Un sistema de compilación debe admitir un continuo y periódico
(por ejemplo, todas las noches) proceso de construcción. Una compilación continua
generalmente se desencadena por código y envíos, las compilaciones frecuentes pueden
reducir los costos mediante las primeras identificaciones (y corrección) de errores.
En la actualidad, para un despliegue ágil en el proceso de Release Engineering, los
avances tecnológicos proponen nuevas herramientas que apoyan a estos procesos de una
manera estructurada y con automatizaciones que complementan la información de todo
el proceso. Asimismo, en estos tiempos, dentro de las diferentes metodologías de
desarrollo la etapa de despliegue es muy importante para el proceso de implementación
de una aplicación web. Se debe cumplir con las mejores prácticas de la ingeniería de
lanzamiento utilizando las mejores herramientas para estos procesos (Song et al., 2019).
Las aplicaciones web orientadas al usuario se reconstruyen con frecuencia con un
enfoque de lanzamientos permanentes, permitiendo automatizar hasta minimizar al
máximo la participación de los equipos de despliegue. En los procesos de compilación
la expectativa es tener los mismos resultados, indistintamente de la infraestructura