El Controlador Actions Runner es un proyecto de código abierto que permite la gestión y control de los runners autoalojados de GitHub Actions en un clúster de Kubernetes. Este proyecto, desarrollado principalmente en Go, ofrece una forma eficiente de escalar y personalizar el entorno de ejecución de las acciones de GitHub.
Tecnologías y Frameworks Utilizados
- Go: Lenguaje principal para el desarrollo del back end.
- Kubernetes: Plataforma para la orquestación y ejecución de contenedores, donde se despliega el Controlador Actions Runner.
- Docker: Utilizado para crear imágenes de contenedores de los runners, facilitando su despliegue en diferentes entornos.
- GitHub Actions: Marco de automatización de flujos de trabajo de desarrollo de software.
Pasos de Preparación e Instalación
Preparación
- Asegúrate de tener Docker instalado y en funcionamiento.
- Configura un clúster de Kubernetes y asegúrate de que kubectl esté correctamente configurado.
- Instala Helm, el gestor de paquetes de Kubernetes, si aún no lo has hecho:
curl https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 | bash
Instalación
Paso 1: Agregar Repositorio Helm
Añade el repositorio Helm del Controlador Actions Runner:
helm repo add actions-runner-controller https://charts.actions-runner-controller.github.io
helm repo update
Paso 2: Configurar Valores de Helm
Crea un archivo llamado values.yaml con la siguiente configuración base:
replicaCount: 3
image:
repository: ghcr.io/actions-runner-controller/actions-runner-controller
tag: "latest"
pullPolicy: IfNotPresent
service:
type: ClusterIP
port: 8080
rbac:
create: true
resources: {}
nodeSelector: {}
tolerations: []
affinity: {}
Paso 3: Desplegar el Chart de Helm
Despliega el Controlador Actions Runner utilizando el archivo de valores creado:
helm install actions-runner-controller actions-runner-controller/actions-runner-controller -f values.yaml
Paso 4: Configurar el Servicio de Kubernetes
Si tu clúster soporta Ingress, puedes exponer el servicio creando un recurso Ingress:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: actions-runner-controller-ingress
spec:
rules:
- host: actions-runner-controller.example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: actions-runner-controller
port:
number: 8080
Reemplaza actions-runner-controller.example.com con tu dominio real y configura los registros DNS correspondientes.
Paso 5: Verificar la Instalación
Verifica el estado de los pods después del despliegue:
kubectl get pods -n default
Asegúrate de que todos los pods estén en estado Running. Puedes acceder a la interfaz del Controlador Actions Runner a través del navegador usando el dominio configurado.