viernes, 16 de marzo de 2018

Integración continua y serverless en google cloud



Siempre hay temas punteros en Google Cloud Español hoy os hablaremos de serverless con integración continua usando google cloud. Existen muchas razones para automatizar las implementaciones: consistencia, seguridad y puntualidad.

Estos aumentan en valor a medida que su software se vuelve más crítico para su negocio. En esta publicación, demostraré lo fácil que es comenzar a automatizar las implementaciones con las herramientas de Google Cloud Platform (GCP) y derivarlo a recursos adicionales para ayudar a que su proceso de implementación sea más robusto.

Supongamos que tiene una aplicación de Google Cloud Functions, Firebase o Google App Engine. En la actualidad, probablemente implemente su función o aplicación a través de comandos de gcloud desde su estación de trabajo local. Veamos un flujo de trabajo ligero que aprovecha dos productos de Google Cloud: Cloud Source Repositories y Cloud Container Builder.


Esta simple pipeline utiliza triggers de compilación en Cloud Container Builder para implementar una función en Cloud Funtions cuando el código fuente se envía "push2 a una rama "prod".

El primer paso es poner tu código bajo control. Si ya está usando un proveedor como GitHub o Bitbucket, es trivial duplicar su código a un repositorio de fuentes de Cloud. Cloud Source Repositories se ofrece sin cargo para hasta cinco usuarios del proyecto, por lo que es perfecto para equipos pequeños.

Los comandos para la línea de comandos se capturan a continuación, pero puede encontrar guías más detalladas en la documentación.

Crea y clona tu repositorio:

$ gcloud source repos create my-function
Created [my-function].

$ gcloud source repos clone my-function
Cloning into 'my-function'...

Ahora, cree una función simple (incluya un paquete.json si tiene dependencias de terceros):
index.js

index.js
exports.f = function(req, res) {
  res.send("hello, gcf!");
};

Luego, crea una definición de compilación Container Builder:

deploy.yaml
steps:
- name: gcr.io/cloud-builders/gcloud
  args:
  - beta
  - functions
  - deploy
  - --trigger-http
  - --source=.
  - --entry-point=f
  - hello-gcf # Function name

Esto es equivalente a ejecutar el comando:

gcloud beta functions deploy --trigger-http --source=. --entry-point=f hello-gcf

Antes de comenzar la primera compilación, configure su proyecto para Container Builder. Primero, habilite dos API: la API de Container Builder y la API de Cloud Functions. Para permitir que Container Builder se implemente, debe darle acceso a su proyecto.

El proceso de compilación usa las credenciales de una cuenta de servicio asociada con esas compilaciones. La dirección de esa cuenta de servicio es:

{numerical-project-id}@cloudbuild.gserviceaccount.com

Deberás agregar un rol de IAM a esa cuenta de servicio: Editor de proyectos. Si usa este proceso para implementar otros recursos, es posible que necesite agregar otros roles de IAM.





Ahora, prueba la configuración de implementación y sus permisos ejecutando:


gcloud container builds submit --config deploy.yaml


Su función ahora se implementa mediante Cloud Container Builder.

Crear un trigger de compilación es fácil: elija su repositorio, la condición de desencadenante (en este caso, empujando hacia la rama "prod") y la compilación para ejecutar (en este caso, la compilación especificada en "deploy.yaml").


Ahora, actualice la rama "prod", actualícela con "master", empújela a los repositorios de Cloud Source y su función se desplegará.


$ git checkout prod
$ git pull origin prod
$ git merge master
$ git push origin prod


Si la implementación falla, se mostrará como una compilación fallida en la pantalla de historial de compilación. Verifique los registros para investigar qué salió mal. También puede configurar el correo electrónico u otras notificaciones utilizando Pub / Sub y Cloud Functions.

Esta es una canalización de implementación simplificada, lo suficiente como para demostrar el poder de la automatización de implementación. En algún momento, probablemente encontrará que este proceso no es todo lo potente que necesita. Por ejemplo, es posible que desee obtener una aprobación manual antes de actualizar la producción. Si eso sucede, consulte Spinnaker, un sistema de automatización de implementación de código abierto que puede manejar flujos de trabajo más complejos.

A medida que avanzas e hacia la automatización de tus implementaciones, estas son algunas otras herramientas y técnicas para que pruebes:




Mejore en los procesos de CD/CI de las implementaciones de software.