ImageStreams Avanzado: Etiquetas y Actualizaciones
Resumen
Gestión avanzada de ImageStreams: etiquetado, promoción entre entornos (dev→test→prod), actualizaciones automáticas de imágenes base, y patrones de versioning.
Conceptos Clave
Gestión de Tags
Crear Tags
# Tag nuevo apuntando a existente
oc tag nginx:latest nginx:stable
# Tag apuntando a externa
oc tag myregistry/app:v2 app:latest
# Tag apuntando a otra IS
oc tag proj-a/app:v1 proj-b/app:v1Eliminar Tags
oc delete istag app:old-versionVer Tags
oc get istag -A # Todos los tags
oc describe is app # Tags específicos de appPatrones de Versioning
Latest (Moving Tag)
app:latest → Apunta a build más reciente
app:latest → Se actualiza con cada build
app:latest → Riesgoso en producción
Stable (Fixed Tag)
app:stable → Apunta a build aprobado
app:stable → Se actualiza cuando "promover"
app:stable → Seguro en producción
Semantic Versioning
app:v1.0.0 → Release específica
app:v1.0 → Patch versions
app:v1 → Minor versions
Promoción entre Entornos
Desarrollo:
Build → app:dev (latest)
Pruebas:
Cuando ready: oc tag app:dev app:test
Deployment prueba usa app:test
Producción:
Cuando aprobado: oc tag app:test app:stable
Deployment prod usa app:stable
Ventaja: Misma imagen en todos entornos, trazabilidad
Actualizaciones Automáticas
Monitorear Imagen Base
oc import-image python:3.9 \
--scheduled=true \
--from=python:3.9
# OpenShift chequea periódicamente python:3.9Workflow:
python:3.9 actualiza en Docker Hub
↓ (OpenShift chequea)
ImageStream detecta cambio
↓
IS apunta a nuevo digest
↓ (BuildConfig ImageChange trigger)
Nuevo build automático
↓
Imagen app actualizada
↓ (Deployment trigger)
Redeploy automático
BuildConfig + ImageStream Integration
Build referencia imagen base via IS
spec:
strategy:
sourceStrategy:
from:
kind: ImageStreamTag
name: python:3.9 # NOT docker.io/library/python:3.9
triggers:
- type: ImageChange
imageChangeParams:
automatic: true
from:
kind: ImageStreamTag
name: python:3.9 # Trigger si cambiaResultado:
python:3.9 actualiza
↓
BuildConfig detecta (ImageChange trigger)
↓
Nuevo build automático
↓
app:latest actualizado
↓
Deployment redeploy
Diferencias: Scheduled vs Manual
- Scheduled: OpenShift chequea periódicamente
- Manual:
oc import-imagecuando quieras
Multi-Entorno Pattern
Repositorio:
main branch → Deployment dev (app:dev)
release branch → Deployment prod (app:stable)
Tags:
app:dev = build de main reciente
app:stable = tag manual cuando release
Flujo:
1. Dev: push → build → app:dev
2. Test: oc tag app:dev app:test
3. Prod: oc tag app:test app:stable
Relaciones
Conecta con
- Extensión de: ImageStream
- Usado por: Build (BuildConfig en OpenShift) (producción)
- Patrón para: Multi-entorno (dev/test/prod)
- Automation: Triggers automáticos