|
1 |
| -# gke_ |
| 1 | +# Challenge DevOps |
| 2 | + |
| 3 | +> ### Pre-requisitos: |
| 4 | +
|
| 5 | +> #### Cuenta GCP (Google Cloud Platform) - Utilizar cuenta free o crear una para evitar cobros a tu persona. |
| 6 | +> #### Crear un Service Account y bajar las credenciales en formato json. |
| 7 | +
|
| 8 | + |
| 9 | +## TASK 1: |
| 10 | + |
| 11 | +Crear un script bash o makefile, que acepte parámetros (CREATE, DESTROY y OUTPUT) con los siguientes pasos: |
| 12 | + |
| 13 | +Exportar las variables necesarias para crear recursos en GCP (utilizar las credenciales previamente descargadas). |
| 14 | + |
| 15 | +Utilizar terraform o pulumi para crear un Cluster de Kubernetes de un solo nodo (GKE). |
| 16 | + |
| 17 | +Instalar ingress controller en el Cluster de k8s. |
| 18 | + |
| 19 | +Crear una imagen docker para desplegar una aplicación tipo RESTFUL API, basada en python que responda a siguientes dos recursos: |
| 20 | + |
| 21 | +/greetings: message —> “Hello World from $HOSTNAME”. |
| 22 | + |
| 23 | +/square: message —> number: X, square: Y, donde Y es el cuadrado de X. Se espera un response con el cuadrado. |
| 24 | + |
| 25 | +Subir la imagen el registry propio del proyecto gcp ej: gcr.io/$MYPROJECT/mypythonapp. |
| 26 | + |
| 27 | +Desplegar la imagen con los objetos mínimos necesarios (no utilizar pods ni replicasets directamente). |
| 28 | + |
| 29 | +El servicio debe poder ser consumido públicamente. |
| 30 | + |
| 31 | +> #### NOTA: variabilizar todos los campos que lo ameritan, por ejemplo el PROJECT, para que el script pueda ser ejecutado por otra persona con otra cuenta GCP. |
| 32 | +
|
| 33 | + |
| 34 | + |
| 35 | +## TASK 2: |
| 36 | + |
| 37 | +Crear un script bash o makefile, con los siguientes pasos: |
| 38 | + |
| 39 | +Exportar las variables necesarias para crear recursos en GCP (utilizar las credenciales previamente descargadas). |
| 40 | + |
| 41 | +Utilizar terraform o pulumi para crear un Cluster de Kubernetes de un solo nodo (GKE). |
| 42 | + |
| 43 | +Crear una VM basada en Centos |
| 44 | + |
| 45 | +Instalar Jenkins en la VM (Puede ser Instalado con Docker o como Servicio, pero es importante que la instalación se realice a través de un playbook de ansible) |
| 46 | + |
| 47 | +Instalar plugins estándar de pipeline, |
| 48 | + |
| 49 | +Crear un sharedlib que pueda compilar maven. |
| 50 | + |
| 51 | +Crear un Job que haga uso del sharedlib para compilar exitosamente un proyecto java simple tipo “Hello World” |
| 52 | + |
| 53 | +El repositorio para la aplicación de Java debe ser publico. |
| 54 | + |
| 55 | +> #### Nota: Todo debe realizarse de manera automática y que sea idempotente, para que cualquier persona pueda alcanzar el mismo resultado con sus propia cuenta, project y credenciales. En el uso de ansible se penalizara para la evaluación la no utilización de los módulos especializados y por su sustitución de modelos genéricos como shell y command. |
0 commit comments