Diferencia entre revisiones de «Guia Despliegues Tyson»
(→Configuración del proyecto:) |
(→Requisitos) |
||
Línea 1: | Línea 1: | ||
La siguiente guia es exclusiva para el proyecto de Findep Transformación Digital. | La siguiente guia es exclusiva para el proyecto de Findep Transformación Digital. | ||
− | == Requisitos == | + | |
+ | |||
+ | == Requisitos del Servicio == | ||
* Agregar esta linea en el properties del servicio:<pre>server.servlet.context-path:/v1</pre>[[Archivo:Guia 1 2.png{{!}}300px{{!}}center{{!}}middle{{!}}thumb{{!}}Configuracion del v1 en el servicio]] | * Agregar esta linea en el properties del servicio:<pre>server.servlet.context-path:/v1</pre>[[Archivo:Guia 1 2.png{{!}}300px{{!}}center{{!}}middle{{!}}thumb{{!}}Configuracion del v1 en el servicio]] | ||
* Acceso a los siguientes Cluster de Kubernetes (En caso de no tenerlo, solicitarlo a Braulio): | * Acceso a los siguientes Cluster de Kubernetes (En caso de no tenerlo, solicitarlo a Braulio): |
Revisión del 19:44 24 ago 2022
La siguiente guia es exclusiva para el proyecto de Findep Transformación Digital.
Sumario
Requisitos del Servicio
- Agregar esta linea en el properties del servicio:
server.servlet.context-path:/v1
- 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
Configuración del proyecto:
- Crear una rama llamada tyson/uat
- Ejecutar el siguiente script:
sh -c "$(curl -fsSL https://cli-service-stable-v1.tysonbeta.com/v1/)"
Se van a crear las carpetas .ci, pipe y se reemplazará el Dockerfile y el MakeFile.
Editar el archivo ./.ci/pipe/azure-pipelines_beta.yml
- Editar line 23 (GCRName) y colocar el nombre del kubernetes: GCR-TYSON-BETA-Findep Transformación Digital
Para eliminar el JWT editar el archivo ./.ci/k8s/authPolicy.yaml y agregar las siguientes líneas:
- "/${SERVICE_VERSION}/*" - from: - source: namespaces: - "autonomation"
Instance en pipeline CI
- Editar el archivo ./ci/pipe/azure-pipelines_beta.yml:
- Agregar las 2 variables siguientes:
- Dbtype: 'postgres'
- DbInstance: 'findep-microservicios'
- Agregar las 2 variables siguientes:
- Editar el archivo ./ci/pipe/azure-pipelines_beta.yml:
- Agregar las siguientes lineas al job "PrepareK8S" en la seccion de bash:
echo "$(ClusterNamespace)" > $(Pipeline.Workspace)/variables/Namespace echo "$(Dbtype)" > $(Pipeline.Workspace)/variables/DBType echo "$(DbInstance)" > $(Pipeline.Workspace)/variables/DBInstance cp ./src/main/resources/schema.sql $(Pipeline.Workspace)/variables/
- Asegurar que existe el archivo "schema.sql" en la carpeta ./src/main/resources:
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.
Creacion del Stage Instance
- Creamos un nuevo stage, y lo configuramos que se ejecute manualmente de la misma forma que el stage de Delete y lo renombramos a Instance DB
- Damos click a la seccion de 1 job, 0 task y editamos el agent pool por Azure Pipelines y el Agent Specificacion por ubuntu-22.04
- Creamos una tarea de tipo Bash, le decimos que el type es Inline y pegamos el siguiente script:
##=== APPLY SCHEMA ======## Namespace=$(cat ./Namespace) echo "##vso[task.setvariable variable=Namespace]$Namespace" Project=$(cat ./Project) echo "##vso[task.setvariable variable=Project]$Project" Stage=$(cat ./Stage) echo "##vso[task.setvariable variable=Stage]$Stage" DBType=$(cat ./DBType) echo "##vso[task.setvariable variable=DBType]$DBType" DBInstance=$(cat ./DBInstance) echo "##vso[task.setvariable variable=DBInstance]$DBInstance" ShortSHA=$(cat ./ShortSHA) echo "##vso[task.setvariable variable=ShortSHA]$ShortSHA" Submitter=$(cat ./Submitter) echo "##vso[task.setvariable variable=Submitter]$Submitter" echo "project: $Project; namespace: $Namespace; stage: $Stage, DBType: $DBType, DBInstance: $DBInstance, sha: $ShortSHA, submitter: $Submitter" curl https://storage.googleapis.com/tools-findep/findep-devops --output findep-devops chmod +x findep-devops ./findep-devops deploy database -f ./schema.sql -s $Project -n $Namespace -i $DBInstance -e $Stage -t $DBType -a $ShortSHA -u $Submitter
- Finalmente definimos en la sección de Advanced el Working Directory buscando la carpeta de variables:
Fuentes
- Videos de Arquitectura
https://findep-documentation.tysonprod.com/documents/documentation
- Make Instance: