Como trabajar
Configuración¶
Configuración de repositorio:¶
Realizar la configuración descrita en code.
Crear manifiestos¶
Cada célula de trabajo (líder técnico) debe tener su propio repositorio de manifiestos.
El repositorio de manifiestos no es más que un repositorio en GitHub que contiene ramas para los ambientes QA y PROD de cada aplicación de nuestro dominio. Es recomendable utilizar un repositorio de manifiestos para cada namespace/proyecto, en donde se encuentren las ramas de manifiestos de todas las aplicaciones del mismo namespace.
Para crear un repositorio podemos utilizar el template que se encuentra en la organización de architecture-it
.
Los manifiestos deben estar en la organización pertinente al equipo y no en architecture-it
Lar organizaciones disponibles son:
- architecture-it
- customer-experience
- operations-innovation
- corporate-solutions-gla
- warehouse-andreani
- infraestructure-services
- administrative-solucions
- data-office
para eso debemos seguir los siguientes pasos:
-
Entrar en la organización de
architecture-it
y crear un nuevo repositorio. -
Seleccionar en la opción de
repository template
el templatearchitecture-it/manifiestos-arquitectura
. -
No debemos marcar el check de Include all branches ya que solo necesitamos
main
. -
Seleccionar en Owner la organización de destino.
-
Elegir un nombre acorde al repositorio.
Branches de manifiesto¶
La estrategia de despliegue necesita que para el ambiente de QA y PROD se cuente con la configuración pertinente. Por lo que debemos generar para cada aplicación dos branches.
La nomenclatura de la branch se correlacionará con el proyecto y nombre de la aplicación en OCP por lo que debemos tener criterio a la hora de nombrarlo.
la nomenclatura de nombrado es: {project}-{appname}-{qa | prod}
Ejemplo:
integra-publicador-qa
integra-publicador-prod
notificaciones-sms-api-qa
notificaciones-sms-api-prod
Notas importantes: - La longitud total de la rama más larga (PROD) no debe superar los 53 caracteres, por lo que es recomendable no utilizar nombres de aplicación (ni de namespace) demasiado largo. - Solo se pueden utilizar letras en minúscula y guiones para el nombre de la app.
Configuración de despligue.¶
Debemos realizar la configuración correspondiente para cada ambiente utilizando el value.yaml
como se explica en manifiesto.
Solicitud de creación de pipeline¶
Se debe solicitar la creación del pipeline como se especifica en ticket
Despliegue¶
Para hacer un despliegue se debe realizar un cambio en la rama cicd
del repositorio de código o en la rama del manifiesto. Esto desencadena el Pipeline de Azure DevOps
Si el commit se realiza sobre una de las ramas de manifiestos, solo desencadenará un despliegue de la última imagen en el ambiente correspondiente a la rama. Si se realiza en la rama cicd
del repositorio de código desencadenará el pipeline completo, construirá una nueva imagen y la desplegará en ambos ambientes una vez cumplidas las aprobaciones requeridas.
Restricciones de seguridad:
-
Se debe agregar reglas a la rama de
cicd
para que no sea posible realizar unpush
en esa rama sin antes hacer unPullRequest (PR)
. -
Se debe configurar él workflow de CI para que se ejecute en cada
PR
a la ramacicd
. -
Los manifiestos deben ser exclusivamente manejado por los Líderes Técnicos
Environment variables¶
Debemos cargar siempre las environment variables dentro de los manifiestos, esto es más apuntando a los proyectos en NET que utilizan el appsettings.yml
ya que el no hacerlo significará realizar todo el proceso de despliegue y upgrade de versión por un cambio de configuración. Si se modifica algo de los manifiestos el proceso de despliegue solo refresca el despliegue en OCP.