Guia Despliegues Tyson (Fronts)

De Plataforma COA Crowd
Saltar a: navegación, buscar

La siguiente guia es exclusiva para el proyecto de Findep Transformación Digital.

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):
    Manejo de Repositorios
  • Dar permisos al team de arquitectura y Autonomation para el caso de instance  (En caso de no tenerlo, solicitarlo a Braulio):
Permisos a Arquitectura y Autonomation

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
Pipelines Azure
  • Seleccionar la opcion de "Azure Repos Git"
    Opcion de Repositorios en CI
  • Buscar el repositorio y seleccionarlo
  • Seleccionar la configuracion del pipeline en la opcion "Existing Azure Pipelines YAML file"
    Existing Azure Pipelines YAML file
  • Seleccionar la rama "tyson/uat" y el path del pipe es el siguiente: /.ci/pipe/azure-pipelines_beta.yml
    Path /.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:
    GCR y guardado de Pipeline CI
    Edit Pipeline CI
  • Nos vamos a la seccion de Triggers y editamos el nombre del pipeline, por "[nombre de servicio] CI tyson uat"
Triggers en CI
Cambio de nombre de Pipeline CI
  • 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.
    Guardado de Pipeline CI
  • Finalmente nos pedira autorizar la ejecucion del pipeline con el kubernetes dado (En caso de no ver el mensaje, refrescar la pagina).
Autorizacion de Pipeline CI

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"

Creacion de Pipeline CD
  •  Se crea un nuevo pipeline, y a cada elemento que agreguemos seleccionaremos la opcion de Empty Job
Empty Job
  • Se selecciona en la parte de artifacts la opcion de add new artifact y buscamos el pipeline de CI de nuestro servicio:
    Seleccionando Artifact
  • Determinamos el trigger de nuestro pipe para que se ejecute cada que se cree una nueva compilacion (Pipeline CI) de nuestro servicio:
    Configurando Trigger del Pipeline CD
  • Cambiamos el nombre al stage que se crea por default y damos click en la opcion de 1 job, 0 tasks:
    Modificando nombres de stages
  • 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''''
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
    Creación de Deploy CI
  • 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.
Creacion de Stage Delete CD
  • 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:
Configuracion del Delete CD
  • Regresamos al pipeline y creamos el Stage de Report derivado del stage de Deploy, para que terminando el despliegue, se ejecute ese stage:
    Creacion de Stage Report CD
  • 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.
    Agent Job del Report CD
  • 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
Script de Report CD
  • Finalmente le cambiamos el nombre al pipeline con la siguiente estructura "[nombre del servicio] CD tyson uat"  y lo guardamos.
    Nombre de Pipeline CD

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:

Stage de Deploy y Report Success
  • 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))
Servicio en tyson


  • 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:

https://docs.google.com/presentation/d/1Hp1Jn-2AD3c0D4jKC6OC4Ioyc1EiGAmwIy6kQp2ZAIk/edit#slide=id.g1420d95a04b 0_145