Cómo implementar Drone CI en Kubernetes

ACTUALIZACIÓN: Después de escribir esta publicación, se creó un gráfico de timón para facilitar la instalación de Drone, puede consultarlo aquí.

Drone es un impresionante CI de código abierto escrito en Golang.

Puede instalarlo usando docker compose siguiendo los documentos oficiales. Pero como estoy enamorado de Kubernetes, quería implementarlo para beneficiarme también de la autocuración y la genialidad de k8.

Crear una aplicación Github OAuth

Asumiré que querrás usar Github para la autenticación de tu instancia de Drone. Así que vamos a configurarlo:

  • ve a tu cuenta de Github
  • haga clic en el icono de su perfil y elija Configuración
  • seleccione aplicaciones OAuth en el menú de la izquierda (lo mismo para las organizaciones, pero dentro del perfil de la organización)
  • haga clic en el botón para crear una nueva aplicación
  • rellena los campos con la url que quieras
  • para el último campo agregue / autorizar al final de la url
  • obtener el cliente y el secreto generado

El servidor

Debe tener un clúster de kubernetes en ejecución, si aún no lo tiene, le recomiendo usar Google Cloud Platform (GCP), ya que administrará el clúster de kubernetes por usted.

Para implementar el servidor, utilizaremos una implementación y servicio de Kubernetes de la siguiente manera:

Debe actualizar el contenido de algunos entornos según su contexto, así que continúe y cambie todo el contexto CHANGE_ME. También puede agregar una DRONE_ORGS var para indicar que solo las personas de una determinada organización Github pueden tener acceso a ella.

Para implementarlo solo ejecuta:

kubectl apply -f server-despliegue.yml

Para descubrir la dirección, ejecute:

kubectl obtener servicios -w

Si está viendo un mensaje , ahí es donde aparecerá la dirección IP externa.

Acceda a él y ¡el servidor voila drone está listo! Pero hasta aquí no podemos construir nada todavía.

El agente

Para que sus compilaciones se ejecuten, también debemos implementar drone el agente, para que eso suceda también usaremos una implementación de Kubernetes:

Actualice DRONE_SECRET para que sea el mismo que utilizó en el servidor e impleméntelo:

 kubectl apply -f agent-despliegue.yml

Configurar DNS

Para que la conexión entre Github y Drone funcione, necesitamos configurar DNS, esto dependerá de la plataforma que esté utilizando.

En GCP, vaya a su proyecto y luego Servicios de red> DNS en la nube. Configure un registro A para apuntar la dirección IP al servidor Drone.

Asegúrese de agregar los registros NS para apuntar sus registros DNS a GCP.

¡Sal del edificio!

Acceda a su nuevo servidor CI, regístrese con su cuenta de Github, active el repositorio que desea integrar continuamente.

Ahora todo lo que necesita hacer es agregar un archivo .drone.yml a su proyecto. Este archivo utiliza una forma limpia y directa para configurar su canal de compilación, para un proyecto Ruby simple sería similar a esto:

Mira esta belleza

Empuje el nuevo compromiso a su repositorio y disfrute viendo su compilación en el Drone CI.

¡Disfruta droning!