DevOps de Noche

Today we will deploy Google Kubernetes Engine, Terraform Cloud worspaces and variable sets, Cloud Build triggers, Cloud Deploy Delivery Pipeline providing Continuous Delivery for Grafana and the sample (Google) microservices app via Skaffold.
Un repositorio y presentación para DevOps Days La Paz 2022
https://github.com/edamsoft-sre/DevOpsDeNoche
How to use the Terraform resources
google_compute_network
google_compute_subnetwork
tfe_workspace
tfe_variable-set
cloud_build_trigger
google_clouddeploy_delivery_pipeline
google_container_cluster
google_container_node_pool
Private Google Kubernetes clusters with access control.
Private Google Cloud Build worker pool
Skaffold via Cloud Build and via Cloud Deploy
Keynote Video

Configuración completa de Google Cloud Platform y Google Kubernetes Engine

- incluye red Compute Network
- CICD con Cloud Build y Cloud Deploy
- apps de ejemplo Grafana (monitoreo) y Microservices (ejemplo Google Kubernetes)
Instalación
Cuenta gratuita de Terraform Cloud y API Token
Cuenta Free Tier de Google Cloud Platform
Llave JSON Key de Usuario de Google Cloud con estos permisos
- Cloud Build Service Agent
- Cloud Deploy Admin
- Compute Network Admin
- Kubernetes Engine Admin
- Project IAM Admin
- Service Account Admin
- Service Account User
- Service Usage Admin
Esta llave se coloca en Terraform Cloud como variable de entorno GOOGLE_CREDENTIALS
Hacer Git Fork del repositorio https://github.com/edamsoft-sre/DevOpsDeNoche
Actualizar vcs_repo en los recursos tfe_workspace con los datos del Fork en
3_infraestructura_escalable/terraform-cloud/workspaces.tf
Configuración de Terraform Cloud para Workspaces y Variables Compartidas
En 3_infraestructura_escalable/terraform-cloud se encuentra la base de la Infraestructura como Código, los Workspaces y Variables base de Terraform Cloud. Primero se configura este Workspace de forma manual con las siguientes variables:
- entorno: nombre del entorno como Demo, Dev, Prod
- tfe_email: correo de admin Terraform Cloud
- project: proyecto de GCP
- tfe_org: nombre de Organizacion Terraform Cloud
- region: Region Google Cloud
- oauth_token: un token oauth de Github con permiso para leer el repositorio
- TFE_TOKEN: el User API Token de Terraform Cloud
Con este Workspace inicial se definen otros cuatro Workspaces de Terraform Cloud utilizando el proveedor TFE de Hashicorp. De esta forma automatizamos la configuración de Terraform Cloud mismo.
terraform-cloud - la configuración base que brinda los otros 4 Workspace, y variables compartidas definidas arriba
- var.region
- var.subnets
- var.entorno
De esta forma no es necesario repetir las variables en cada Workspace y configuración. Una vez creados los Workspace de trabajo, se añade la llave JSON de Google Cloud omo variable de entorno GOOGLE_CREDENTIALS
Workspaces de Trabajo
devops-days-servicios-google
- configuración de servicios API Google Cloud Platform
- creación de usuario-gke, usuario-cloudbuild y usuario-grafana para correr estos servicios
- configuración de Roles IAM para estas cuentas de servicios
devops-days-red-vpc
- Configuración de una Red VPC (Google Compute Network), Subnetworks, Router y Cloud NAT
Kubernetes
Esto permite crear clusters Kubernetes / Private GKE con subnets ya definidas y con acceso a Internet.
devops-days-kubernetes-us-central1-a
- Para mayor seguridad se configuran GKE Private con nodos privados (sin IP publica). Por conveniencia se mantiene el accesso a Kubernetes master con IP pública.
- Se puede controlar el acceso con las variables var.acceso_publico y var.cidr_autorizadas
devops-days-kubernetes-us-east1-a
- Se pueden añadir más clusters GKE Kubernetes añadiendo más Workspace, en la configuracion existen dos
- En Terraform Cloud se define la variable var.zone que define la Zona donde colocar el cluster
- La configuración está basada en una Region Google Cloud y puede tener hasta 4 clusters en cada zona.
CICD
devops-days-cicd
- El último Workspace de Terraform Cloud está dedicado a los Pipelines de CICD
- Integración Continua con Google Cloud Build
- Despliegue Continuo con Google Cloud Deploy (un Pipeline gratis en Free Tier, adicionales $15-mes)
Apps de Ejemplo
Grafana
Se despliega Grafana de la siguiente forma:
gcloud deploy releases create grafana –project=days-devops
–delivery-pipeline=pipeline-demo
–region=us-central1 –to-target=dev-central1-a-target
Google Microservices
- Una aplicación de tienda en linea ejemplo de Google Cloud Platform
- Se despliega de forma automatica a Kubernetes utilizando Cloud Build y Skaffold
- Se debe hacer Git Fork del repo https://github.com/edamsoft-sre/google-microservices-demo
Tabla de Contenido del Repositorio
Capítulo Zero: Formato y pruebas de variables Terraform
Capítulo Uno: Diseñando Organizacion Google en Terraform para Escalar a Trescientos Desarrolladores.
2 Arquitectura de la Organización DevOps
Capítulo Dos: Definir la Organizacion, Roles y Permisos en Terraform
3 Terraform Cloud, GCP Network, Kubernetes, IAM