Añadiendo Jenkins al entorno para Integración continua

En el año 2010 cuando tuve por primera vez la necesidad de implementar prácticas de integración continua, continuous delivery y continuous deployment, tras ser sugerido por un colega que se encontraba trabajando en España para el BBVA de implementar éstas prácticas. En ese entonces sólo usábamos Collabnet Subversion para versionar el código, así que tuvimos que realizar muchos cambios al proyecto como convertir el proyecto a Maven, migramos a Gitlab Server, dejábamos los artefactos en Nexus Sonatype OSS, realizamos análisis con Sonarqube, jobs de Hudson CI para las construcciones, delivery y deploy sobre dos servidores de Apache Tomcat 6 con Replication Session. En las estaciones de trabajo teníamos Netbeans, con PMB y JRebel para el reload de código en caliente. A día de hoy ese entorno sigue funcionando tras casi 10 años de implementado.

En esta oportunidad toca añadir Jenkins, el fork de Hudson que tiene una gran acogida como herramienta de Continuous Integration, para ello se propone el siguiente escenario.

jenkins
Entorno propuesto
Sigue leyendo “Añadiendo Jenkins al entorno para Integración continua”

Generar nuestra Docker Machine conectada a nuestro Registry Mirror y Private Registry

Buenos días, siguiendo con la serie de post, en esta oportunidad muestro como poder crear nuestro servidor local de docker utilizando la docker-machine que se encuentra de Docker Toolbox, y enlazaremos desde la creación de la VM a nuestros servidores creados en las entradas anteriores:

El entorno quedaría como sigue:

Entorno configurado
Sigue leyendo “Generar nuestra Docker Machine conectada a nuestro Registry Mirror y Private Registry”

Generar nuestro Local Docker Container Registry Mirror (Caché) – SSL autofirmado

Buenos días, en esta oportunidad veremos como modificar la instalación de un Docker Registry que nos sirva como caché de imágenes de docker, esto debido a que es sabido que cuando utilizamos múltiples imágenes de Docker Hub las descargamos de internet en cada estación de trabajo, motivo por el cual si un equipo de desarrollo es grande, dependiendo de la cantidad de veces que realizen ciclos de construcciones y limpieza de las imágenes locales (dentro de la pc del developer) podría estar consumiendo ancho de banda y tiempo innecesario, que puede ser aprovecha de mejor manera.

Utilizaremos como base el pos anterior “Generar nuestro Local Docker Container Registry Server – SSL autofirmado“, para lo cual se plantea el siguiente esquema de configuración de nuestro entorno.

En el esquema planteado se propone utilizar dos servidores de Docker Registry:

  • icr-mirror-00.registry.com : Este registry estará configurado como mirror de Docker Hub (podría ser otro servidor), configurado sin autenticación.
    • Cuando realizemos un #docker pull
      • Se buscará la imagen en este servidor y si se encuentra la devolverá al cliente.
      • En caso de no encontrarla descargará la imagen del servidor (Docker Hub) , la devolverá al cliente y guardará una copia dentro de si mismo.
  • icr-docker-00.registry.com : Este registry será el que usemos para guardar las imágenes privadas, se encuentra protegido por usuario y contraseña.
Sigue leyendo “Generar nuestro Local Docker Container Registry Mirror (Caché) – SSL autofirmado”

Generar nuestro Local Docker Container Registry Server – SSL autofirmado

Buenos días,

Después de muchos años sin escribir en el blog, aprovechando la cuarentena por el COVID-19 aprovecho para publicar nuevamente.

Durante las clases que imparto en distintos entrenamientos que ofrezco, los alumnos me preguntaron cómo podían hacer para tener un Container Registry Server de forma local, al mismo estilo de Azure Container Registry (ACR), Amazon Elastic Container Registry (ECR), Google Container Registry (GCR), Docker Cloud Registry que sea capaz de persistir fuera de su entorno runtime de docker.

Esta solicitud me pareció interesante debido a que cuando empiezas a tener una gran cantidad de entornos de prueba, en muchos casos se puede llegar a destruir la instalación de docker, con lo cual las imágenes de docker descargadas, las construidas por tus propias iniciativas, se verían afectadas, asimismo a quienes empiezan a utilizar Jenkins con sus Jobs o Pipelines en el stage para el Continuous Delivery omiten las configuraciones que deben tenerse en cuenta para almacenar la imagen en un container registry externo.

El proyecto utiliza:

  1. Vagrant
  2. Virtualbox
  3. Docker CE, de la guía https://www.digitalocean.com/community/tutorials/how-to-install-and-use-docker-on-ubuntu-16-04
  4. docker-compose,
  5. Utilidad para autogenerar certificados firmados. https://github.com/ConnorAtherton/shell-helpers/blob/master/scripts/ssl_setup.sh
  6. Guía Oficial de Docker para montar un registry

Como se trata de tener un servidor lo más parecido al entorno real, le vamos a realizar una configuración para que sea accedido desde la red, esto lo logramos mediante un adaptador de tipo puente (brigde) el cual simula ser otro dispositivo conectado directo a la red.

Sigue leyendo “Generar nuestro Local Docker Container Registry Server – SSL autofirmado”