Build (BuildConfig en OpenShift)
Resumen de una línea
Sistema automático de construcción de imágenes de contenedores en OpenShift que compila código/Dockerfile y produce ImageStreams sin intervención manual.
Definición
Un Build es un proceso que construye una imagen de contenedor a partir de código fuente o Dockerfile. Se controla mediante un recurso BuildConfig que define:
- Estrategia de construcción (Dockerfile, S2I, etc.)
- Fuente del código (Git, repositorio, binarios)
- Registro de destino
- Triggers automáticos
Estrategias de Build
1. Docker Build
Dockerfile en repositorio
↓
BuildConfig (estrategia: Docker)
↓
docker build contexto
↓
Imagen nueva → ImageStream
Características:
- Construye desde Dockerfile
- Contexto desde Git
- Full control sobre la imagen
2. S2I (Source-to-Image)
Código fuente en repositorio
↓
BuildConfig (estrategia: S2I)
↓
Builder Image (ej: python:3.9)
↓
S2I detecta tipo, compila, crea imagen
↓
Imagen nueva → ImageStream
Ventajas:
- No necesita Dockerfile
- Automático: detecta lenguaje
- Seguro: Builder Images confiables
- Rapid development
3. Dockerfile Build
Igual que Docker Build pero explícito
BuildConfig
Recurso que define un build:
apiVersion: build.openshift.io/v1
kind: BuildConfig
metadata:
name: myapp
spec:
source:
git:
uri: https://github.com/user/repo
ref: main
strategy:
dockerStrategy:
dockerfilePath: Dockerfile
output:
imageStream: myapp:latest
triggers:
- type: GitHub
github:
secret: webhook-secretCiclo de Vida
Git push
↓ (webhook trigger)
BuildConfig activado
↓
Nuevo Build creado (myapp-1, myapp-2, ...)
↓
Proceso construcción (clone, build, push)
↓
Build completado (Success/Failed)
↓
ImageStream actualizado
↓ (ImageStream trigger en Deployment)
Redeploy automático
Gestión de Builds
Crear BuildConfig
oc new-build https://github.com/user/repo --name=myapp --strategy=dockerListar BuildConfigs
oc get bcEjecutar build manual
oc start-build myapp
# o
oc start-build myapp --follow # Ver logs en vivoVer builds ejecutados
oc get builds
oc logs build/myapp-1Ver logs de build en progreso
oc logs -f bc/myappTriggers Automáticos
GitHub Webhook
Git push → GitHub notifica → BuildConfig activa
ImageStream
Cambio en imagen base → Nuevo build
(ej: python:3.9 actualizado → rebuild automática)
Scheduled
Builds periódicos (como cron)
S2I en Detalle
Builder Images disponibles:
python— Python 2.7, 3.6, 3.8, 3.9, etc.nodejs— Node.js 12, 14, 16, etc.ruby— Ruby 2.6, 2.7, 3.0, etc.java— OpenJDK 8, 11, 17dotnet— .NET Core- Custom: Crear builder image propia
Proceso S2I:
- Descarga builder image
- Clone repositorio en
/tmp/build - Detecta tipo (package.json → Node, requirements.txt → Python, etc.)
- Ejecuta script
assembledel builder - Crea imagen final
- Push a registro
Ventajas de BuildConfig
| Ventaja | Descripción |
|---|---|
| Automatización completa | Git push → imagen nueva → app actualizada |
| No requiere infraestructura | No necesitas Jenkins/GitLab CI aparte |
| Seguridad | Construye dentro del clúster con permisos controlados |
| Integración nativa | Webhooks, triggers, ImageStreams sincronizadas |
| Sin Dockerfile | S2I permite desplegar sin escrib Dockerfile |
| Versionado automático | Builds numerados, logs disponibles |
Relaciones
Conecta con
- Parte de: OpenShift (característica específica)
- Produce: ImageStream (output de cada build)
- Triggers automáticos con: ImageStream (cambios en imágenes base)
- Complementa: PaaS (Platform as a Service) (automatización de despliegues)