Agentes Dinamicos · Pod por Build
En lugar de mantener VMs estaticas como agentes, Jenkins usa el plugin de Kubernetes para crear un pod por cada build. El pod nace cuando el pipeline empieza y muere cuando termina. Cero mantenimiento, cero estado residual.
El Ciclo de Vida de un Agente
Seis pasos desde el trigger hasta la destruccion del pod. Todo automatizado — el desarrollador solo ve el resultado del pipeline.
Declarar el Agente en el Jenkinsfile
El pod del agente se define directamente en el Jenkinsfile con YAML inline. Jenkins interpreta esta definicion y crea el pod antes de ejecutar el primer stage.
pipeline {
agent {
kubernetes {
yaml '''
apiVersion: v1
kind: Pod
spec:
containers:
- name: tools
image: alpine/k8s:1.29.2
command: [cat]
tty: true
'''
}
}
stages {
stage('Lint YAML') {
steps {
container('tools') {
sh 'yamllint k3s/manifests/'
}
}
}
}
} El contenedor tools usa la imagen alpine/k8s:1.29.2 que incluye kubectl, yamllint, ansible-lint y tofu. El comando cat con tty: true mantiene el contenedor vivo mientras Jenkins le envia comandos via JNLP.
RBAC: Como Jenkins Crea Pods
Para que Jenkins pueda crear y destruir pods de agentes, su ServiceAccount necesita permisos RBAC especificos. Sin esto, el plugin de Kubernetes falla con errores de autorizacion.
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: jenkins-agent
namespace: aiops
rules:
- apiGroups: [""]
resources: ["pods", "pods/log", "pods/exec"]
verbs: ["create", "get", "list", "watch", "delete"]
- apiGroups: [""]
resources: ["secrets", "configmaps"]
verbs: ["get"] Siguiente: Pipeline Setup
Con los agentes dinamicos entendidos, la pagina siguiente muestra el Jenkinsfile completo: stages de linting, validacion y notificacion a n8n en caso de fallo.