Despliegues Parametrizados
Resumen
Cómo parametrizar despliegues en OpenShift usando variables de entorno, ConfigMaps para configuración, y Secrets para datos sensibles. Ejemplo completo: WordPress + MySQL.
Conceptos Clave
Variables de Entorno
Propósito: Pasar configuración a contenedores
containers:
- image: myapp
env:
- name: DATABASE_HOST
value: mysql.default.svc.cluster.local
- name: DATABASE_USER
value: wordpressUso en app: $DATABASE_HOST, $DATABASE_USER
ConfigMap
Propósito: Almacenar configuración (no sensible)
Características:
- Key-value pairs
- Montaje como archivos o envvars
- Reutilizable en múltiples Pods
- Fácil actualización
Uso:
oc create configmap myconfig --from-literal=key=value
oc set env deployment/myapp --from=configmap/myconfigSecret
Propósito: Almacenar datos sensibles (encriptados)
Tipos:
Opaque: Generic key-valuekubernetes.io/dockercfg: Credenciales Dockerkubernetes.io/dockerconfigjson: Docker config JSONkubernetes.io/basic-auth: Usuario/contraseñakubernetes.io/ssh-auth: SSH key
Uso:
oc create secret generic mysecret --from-literal=password=secret123
oc set env deployment/myapp --from=secret/mysecretAgrupación de Aplicaciones
- Application grouping: Agrupar despliegues relacionados en topología
- Connect: Establecer relaciones visuales entre componentes
Ejemplo: WordPress + MySQL
Arquitectura
Route myapp.example.com
↓
Service wordpress
↓
Deployment wordpress (replicas=2)
↓ (conecta a MySQL via env)
Deployment mysql
├─ Volume (almacenamiento)
└─ Service mysql
ConfigMaps
mysql-config:
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
Secrets
mysql-secret:
MYSQL_PASSWORD: <generated>
MYSQL_ROOT_PASSWORD: <generated>
Despliegue
oc new-app mysql:5.7 -e MYSQL_ROOT_PASSWORD=secret
oc new-app wordpress:latest -e WORDPRESS_DB_HOST=mysql
oc expose service wordpress --hostname=myapp.example.comRelaciones
Conecta con
- Parte de: OpenShift
- Usa: ConfigMap, Secret, Environment variables
- Ejemplo de: Despliegue real multi-tier