Builds: Construcción Automática de Imágenes
Resumen
Sistema BuildConfig de OpenShift: construcción automática de imágenes desde Git, estrategias (S2I, Docker), triggers (webhooks), y gestión del ciclo de vida de builds.
Conceptos Clave
BuildConfig (Repaso)
Recurso que define cómo construir imágenes automáticamente
Componentes:
- Source: Dónde está el código (Git repo, binarios)
- Strategy: Cómo construir (S2I, Docker, etc.)
- Output: Dónde guardar imagen (ImageStream)
- Triggers: Cuándo construir (push, periódico, manual)
Estrategias de Build
S2I (Source to Image)
spec:
strategy:
sourceStrategy:
from:
kind: ImageStreamTag
name: python:3.9Proceso:
- Descarga builder image (python:3.9)
- Inyecta código fuente
- Ejecuta script
assembledel builder - Crea imagen final
Ventaja: Sin Dockerfile
Docker Build
spec:
strategy:
dockerStrategy:
dockerfilePath: DockerfileProceso:
- Clone repo
- Busca Dockerfile
- Ejecuta
docker build - Push imagen
Ventaja: Control total
Creación de BuildConfig
Automática (oc new-build)
oc new-build python:3.9~https://github.com/user/myapp \
--name=myapp \
--strategy=sourceManual YAML
apiVersion: build.openshift.io/v1
kind: BuildConfig
metadata:
name: myapp
spec:
source:
git:
uri: https://github.com/user/myapp
ref: main
strategy:
sourceStrategy:
from:
kind: ImageStreamTag
name: python:3.9
output:
imageStream: myapp:latest
triggers:
- type: GitHub
github:
secret: webhook-secret
- type: ConfigChangeCiclo de Vida de un Build
Git push
↓ (GitHub webhook)
BuildConfig triggered
↓
Nuevo Build creado (myapp-1, myapp-2, ...)
↓
Pod de build (efímero)
├─ Clone repo
├─ Build (S2I o Docker)
└─ Push imagen
↓
Build finalizado (Success/Failed)
↓
ImageStream actualizado
↓ (ImageStream trigger)
Deployment redeploy automático
Triggers Automáticos
GitHub Webhook
# OpenShift crea webhook automáticamente si secret configurado
# Git push → GitHub notifica → Build triggeredImageStream Trigger
triggers:
- type: ImageChange
imageChangeParams:
automatic: true
from:
kind: ImageStreamTag
name: python:3.9 # Cambio en imagen baseConfigChange
triggers:
- type: ConfigChange
# Triggers cuando BuildConfig cambiaGestión de Builds
Ver BuildConfigs
oc get bc
oc describe bc myappEjecutar build manual
oc start-build myapp
oc start-build myapp --follow # Ver logsVer builds ejecutados
oc get builds
oc logs build/myapp-1Ver logs en vivo
oc logs -f bc/myappVersionado de Builds
OpenShift numera builds automáticamente:
myapp-1 (first build)
myapp-2 (second build)
...
myapp-N (latest)
Cada build es reproducible, logs preservados
Flujo CI/CD Automático
Desarrollador:
1. Código → GitHub
2. Push
OpenShift automático:
1. Webhook trigger
2. Clone
3. Build
4. Test (si configurado)
5. Push imagen
6. Actualizar ImageStream
7. Redeploy
Resultado:
- Nueva versión en producción
- Sin intervención manual
Relaciones
Conecta con
- Parte de: OpenShift (característica PaaS)
- Produce: ImageStream (output de build)
- Usa: BuildConfig (recurso)
- Integra: Git webhooks, CI/CD