Guia Despliegues Tyson (Fronts)
La siguiente guia es exclusiva para el proyecto de Findep Transformación Digital.
Sumario
Requisitos de permisos para CI/CD
- Acceso a los siguientes Cluster de Kubernetes (En caso de no tenerlo, solicitarlo a Braulio):
- 1. GCR-TYSON-BETA-Findep Transformación Digital (Para CI)
- 2. GKE-TYSON-BETA-Findep Transformación Digital (Para CD)
- Acceso a los repositorios y a la administración de los mismos (En caso de no tenerlo, solicitarlo a Braulio):
- Dar permisos al team de arquitectura y Autonomation para el caso de instance (En caso de no tenerlo, solicitarlo a Braulio):
https://dev.azure.com/findepdev/Findep%20Transformaci%C3%B3n%20Digital/ settings/repositories
Rama de dev
- Estando en la rama de dev, vamos a traernos todos los cambios del repositorio con un git pull
git pull
- Vamos a crear la rama de tyson/dev con el siguiente comando:
git branch -m tyson/dev
- Ahora se va a cambiar el origen del repositorio, seguramente esta apuntando a google repos, hay que pasarlo a que apunte a azure repos:
git remote set-url origin https://findepdev@dev.azure.com/findepdev/Findep%20Transformaci%C3%B3n%20Digital/_git/{nombre de servicio}
- Ejecutar el siguiente script:
sh -c "$(curl -fsSL https://cli-service-stable-v1.tysonbeta.com/v1/)"
- Con el servicio funcionando en dev con el dockerfile de tyson vamos a comenzar el despliegue a UAT. Si el servicio falla por alguna razon, arreglarlo, si no, el error persistira en UAT. Tambien mandamos los cambios a la rama de tyson/dev.
git push origin tyson/dev
Rama de UAT
- Creamos la rama de tyson/uat
git branch -m tyson/uat
Creación de Pipeline CI
- Tener el repositorio con la rama de tyson/uat en el repositorio de Azure actualizado.
- Ir a la sección de "Pipelines" de Azure
- Dar click en New Pipeline
- Seleccionar la opcion de "Azure Repos Git"
- Buscar el repositorio y seleccionarlo
- Seleccionar la configuracion del pipeline en la opcion "Existing Azure Pipelines YAML file"
- Seleccionar la rama "tyson/uat" y el path del pipe es el siguiente: /.ci/pipe/azure-pipelines_beta.yml
- Antes de correr el pipeline, nos vamos a asegurar que el GCR sea el correcto y lo vamos a guardar para configurar los triggers y se haga automaticamente con cada commit que se haga a la rama de tyson/uat. Par eso seleccionamos la opcion de save y despues la de edit:
- Nos vamos a la seccion de Triggers y editamos el nombre del pipeline, por "[nombre de servicio] CI tyson uat"
- En la sección de "Get Sources" seleccionamos la rama de tyson/uat y damos click en la opción de save & queue para que el pipe se ejecute por primera vez. Con esto ya quedo configurado para que se ejecute automáticamente cada que haya un commit nuevo en la rama.
- Finalmente nos pedira autorizar la ejecucion del pipeline con el kubernetes dado (En caso de no ver el mensaje, refrescar la pagina).
Creación de Pipeline CD
* Para la creacion del pipeline de CD, nos vamos a ir a la sección de "Releases" y damos click en el botón de "New" y en "New release pipeline"
- Se crea un nuevo pipeline, y a cada elemento que agreguemos seleccionaremos la opcion de Empty Job
- Se selecciona en la parte de artifacts la opcion de add new artifact y buscamos el pipeline de CI de nuestro servicio:
- Determinamos el trigger de nuestro pipe para que se ejecute cada que se cree una nueva compilacion (Pipeline CI) de nuestro servicio:
- Cambiamos el nombre al stage que se crea por default y damos click en la opcion de 1 job, 0 tasks:
- El Agent job es el tipo de maquina que va a ejecutar esta tarea, en este caso el Agent Job se quedara tal cual está. Damos click en la opcion de + y buscamos la opcion de Deploy to Kubernetes''''
- Seleccionamos en la seccion de Kubernetes service connection el Kubernetes GKE-TYSON-BETA-Findep Transformación Digital
- Ponemos como namespace: autonomation
- En los 3 puntos de los Manifiestos, buscamos el archivo de deploy.yaml en la carpeta de k8s
- Regresamos al pipeline seleccionando la pestaña de pipeline que aparece en la parte superior y ahora vamos a crear el stage del delete
- Damos click a Add en la parte de Stages.
- Cambiamos el nombre del nuevo stage a Delete y vamos a configurarlo para que solo se pueda correr manual.
- Seleccionamos el icono del rayo y seleccionamos la opcion de Manual Only, para que no se ejecute como parte del pipeline automatico y solo se haga manual.
- Ahora entramos a la seccion de 1 job, 0 task, el agent job lo dejamos como esta y agregamos una tarea llamada Kubectl donde configuraremos el Kubernetes Service Connection, el namespace, el comando como delete, habilitamos la opcion de Use Configuration y buscamos el archivo deploy.yaml en la parte de File Path:
- Regresamos al pipeline y creamos el Stage de Report derivado del stage de Deploy, para que terminando el despliegue, se ejecute ese stage:
- Damos click en la seccion de 1 job, 0 task, y editamos el agent job. En Agent Pool seleccionamos Azure Pipelines y en Agent Specification seleccionamos ubuntu-22.04.
- Creamos una nueva tarea de tipo bash. Seleccionamos el type como Inline y pegamos el siguiente script.
ShortSHA=$(cat ./ShortSHA) echo "##vso[task.setvariable variable=ShortSHA]$ShortSHA" Project=$(cat ./Project) echo "##vso[task.setvariable variable=Project]$Project" Submitter=$(cat ./Submitter) echo "##vso[task.setvariable variable=Submitter]$Submitter" Stage=$(cat ./Stage) echo "##vso[task.setvariable variable=Stage]$Stage" echo "project: $Project; sha: $ShortSHA; email: $Submitter; stag: $Stage" curl https://storage.googleapis.com/tools-findep/findep-devops --output findep-devops chmod +x findep-devops ./findep-devops deploy record -s $Project -i $ShortSHA -u $Submitter -e tyson -E $Stage
- Finalmente le cambiamos el nombre al pipeline con la siguiente estructura "[nombre del servicio] CD tyson uat" y lo guardamos.
Probando el servicio en tyson
* Para asegurarnos de que el servicio este funcionando en tyson simplemente podriamos esperar a que el pipeline nos marque en verde el stage:
- Tambien podriamos entrar a los logs del servicio y ver que este todo bien en los pods
https://console.cloud.google.com/kubernetes/service/us-central1/tyson-beta/autonomation/{nombre del servicio}-v1-stable/overview?authuser=0&hl=es&project=findep-calidad-uat-mx&pageState=(%22savedViews%22:(%22i%22:%22f1aafe7c7e91487a96821c88e9601ac7%22,%22c%22:%5B%22gke%2Fus-central1%2Ftyson-beta%22,%22gke%2Fus-central1%2Ffintech-istio-devops%22,%22gke%2Fus-central1-b%2Fgalileo%22,%22gke%2Fus-central1%2Ftools-devops%22,%22gke%2Fus-central1-c%2Fus-central1-task-manager-ua-32c96eed-gke%22,%22gke%2Fus-central1%2Ffindep-dataproc-beta%22%5D,%22n%22:%5B%5D))
- Y podriamos mandar a llamar el actuator del servicio con la siguiente estructura de url:
https://{nombre del servicio}.tysonbeta.com/v1/actuator
- O el swagger con la siguiente estructura de url:
https://{nombre del servicio}.tysonbeta.com/v1/swagger-ui/index.html#/
Fuentes
- Videos de Arquitectura
https://findep-documentation.tysonprod.com/documents/documentation
- Make Instance: