Hola soy Oscar Mas y me gustaría enseñaros que es Spinnaker.
Spinnaker es una herramienta de Continuos Delivery creada y diseñada para Netflix, la cual liberaron y actualmente es una herramienta OpenSource.
Una de las ventajas que nos aporta Spinnaker es la gestión de migración de un entorno en producción al nuevo entorno sin downtime y con un rápido rollback, este proceso es conocido como Blue-Green.
La lista de contribuidores al código de Spinnaker es amplia y con empresas muy importantes como pueden ser Google o Microsoft.
Si queremos estar al día de las versiones nuevas que va sacando Spinnaker, las podremos ver en la siguiente URL: https://groups.google.com/forum/#!forum/spinnaker-announce
Si durante el proceso de instalación de Spinnaker hay algún comando que no os queda claro, os dejo el enlace a la documentación oficial, donde explican la funcionalidad de cada comando y los parámetros que podemos usar: https://www.spinnaker.io/reference/halyard/commands/
El esquema lógico sería el siguiente:
Antes de empezar la instalación se da por hecho que tenemos una plataforma de Kubernetes configurada y un servidor de Registry, como se muestra en el esquema lógico.
El certificado que hemos de usar en nuestro servidor de Registry no puede ser auto-signado, ha se ser generado por una entidad oficial. En pocas palabras, no puede ser un certificado self signed.
Durante el proceso de configuración, necesitaremos un Storage ubicado en S3.
El único sistema operativo basa en Ubuntu soportado por Spinnaker es Ubuntu 14.04 LTS, así que toda la instalación de Spinnaker la realizaré en Ubuntu 14.04 LTS.
Nos descargaremos el instalador y lo lanzaremos de la siguiente manera:
root@spinnaker:~# curl -O https://raw.githubusercontent.com/spinnaker/halyard/master/install/stable/InstallHalyard.sh root@spinnaker:~# bash InstallHalyard.sh
Una vez acabado de instalar, nos realizará dos preguntas, que por defecto ya son correctas.
Le indicaremos que la instalación de Spinnaker va a ser de modo local en nuestro equipo:
root@spinnaker:~# hal config deploy edit --type localdebian
Veremos las versiones que nos ofrece Spinnaker para poder instalar y escogeremos una de ellas de la siguiente forma:
root@spinnaker:~# hal version list root@spinnaker:~# hal config version edit --version 1.5.1
Ahora configuraremos nuestro almacenamiento, el cual estará en Amazon S3. Una vez lanzado el comando, nos solicitará la Secret Key de nuestro almacenamiento en S3:
root@spinnaker:~# YOUR_SECRET_KEY_ID="AKIAIXANYZW4UACABREQ" root@spinnaker:~# REGION="eu-west-1" root@spinnaker:~# hal config storage s3 edit \ --access-key-id $YOUR_SECRET_KEY_ID \ --secret-access-key \ --region $REGION
Una vez configurado nuestro Storage, habilitaremos nuestro “persistent store” y le indicaremos que es de Amazon S3
root@spinnaker:~# hal config storage edit --type s3
Ahora necesitamos que nuestro sistema de Spinnaker tenga acceso a nuestor Kubernetes. El contenido del fichero “$HOME/.kube/config” lo he copiado de uno de mis nodos de Kubernetes.
root@spinnaker:~# mkdir -p $HOME/.kube root@spinnaker:~# ls $HOME/.kube/config root@spinnaker:~# curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl root@spinnaker:~# mv kubectl /usr/bin/ && chmod +x /usr/bin/kubectl root@spinnaker:~# kubectl get nodes
Habilitaremos nuestro registry y nuestro kubernetes:
root@spinnaker:~# hal config provider docker-registry account list root@spinnaker:~# hal config provider kubernetes enable
Crearemos el secret en Kubernetes para poder acceder al Registry:
root@spinnaker:~# kubectl create secret docker-registry registry-k8s-spinnaker \ --docker-username='oscarmas' --docker-password='mi_password' \ --docker-server='https://registry.ilba.cat/v1/' \ --docker-email='[email protected]' secret "registry-k8s-spinnaker" created
Configuraremos nuestro Spinnaker para poder acceder al Registry:
root@spinnaker:~# hal config provider docker-registry account add docker-registry \ --address registry.ilba.cat \ --username oscarmas \ --password
Y una vez configurado nuestro registry en Spinnaker, lo habilitaremos y crearemos la cuenta:
root@spinnaker:~# hal config provider docker-registry enable
root@spinnaker:~# hal config provider kubernetes account add registry-k8s-spinnaker \ --kubeconfig-file /home/rootdevel/.kube/config \ --docker-registries docker-registry \ --context $(kubectl config current-context) \ --namespaces default
root@spinnaker:~# hal config provider kubernetes enable
Instalación de todos los paquetes necesarios para el depliegue de Spinnaker:
root@spinnaker:~# hal deploy apply
Y ahora solamente nos queda instalarlo:
root@spinnaker:~# /home/rootdevel/.hal/default/install.sh
Una vez acabado de instalar, si observamos el equipo podremos ver que está trabajando a tope mientras realiza la instalación de Spinnaker:
Una vez acabada la instalación y habiendo esperado un rato. Verificaremos que ha arrancado todos los servicios:
root@spinnaker:~# netstat –nlpt
Como podreís observar en la captura anterior, donde se muestran los puertos que ha arrancado nuestro Spinnaker, veremos que por seguridad todos los servicios de Spinnaker están escuchando al localhost. Para poder acceder desde nuestro equipo a la administración de Spinnaker, nos conectaremos por ssh redireccionando los puertos de la siguiente manera:
Y ya solamente nos queda acceder por web atacando al localhost por el puerto 9000. Os dejo una par de capturas de pantalla:
Spinnaker también nos ofrece poder gestionarlo mediante API’s. Podremos ver las API’s accediendo a la URL: http://localhost:8084/swagger-ui.html


Leave a Reply