Buenas prácticas en OpenShift
La adopción de buenas prácticas en el uso de Red Hat OpenShift Container Platform es fundamental para asegurar despliegues eficientes, seguros y mantenibles. A continuación, se describen los principales lineamientos para optimizar la administración, el desarrollo y la operación en entornos empresariales sobre OpenShift.
Gestión eficiente de recursos
Configurar adecuadamente los valores de requests y limits en los despliegues para CPU y memoria evita el overcommitment y reduce el riesgo de afectaciones por consumo excesivo.
Organizar aplicaciones y equipos en namespaces permite una gestión granular de recursos, políticas y visibilidad.
Seguridad en la plataforma
Gestionar permisos mediante Roles y RoleBindings, restringiendo el acceso solo a lo estrictamente necesario.
Configurar SCCs personalizados para controlar las capacidades de ejecución de los pods y reducir la superficie de ataque.
Mantener el clúster y sus componentes actualizados protege ante vulnerabilidades conocidas.
Despliegue y gestión de aplicaciones
Implementar pipelines CI/CD, preferiblemente usando OpenShift Pipelines (basado en Tekton), para lograr despliegues repetibles y auditables.
Definir los recursos mediante archivos YAML versionados en sistemas de control de código fuente para facilitar la trazabilidad y la reversión de cambios.
Utilizar imágenes distroless o minimalistas, definir usuarios no privilegiados y gestionar vulnerabilidades durante el proceso de build.
Monitoreo y registro
Habilitar y configurar las soluciones integradas, como Prometheus y Alertmanager, permite detectar incidentes y evaluar el rendimiento del clúster.
Implementar log collectors como Elasticsearch o Loki junto con Kibana o Grafana facilita el análisis y la correlación de eventos.
Alta disponibilidad y resiliencia
- Replicación de componentes críticos: Asegurar la redundancia de nodos maestros, etcd y otros servicios clave para minimizar el impacto ante fallos.
- Políticas de rescheduling: Definir pod anti-affinity y node selectors según el tipo de carga de trabajo para distribuir los pods eficientemente.
Gestión de configuraciones y secretos
Separar configuraciones dinámicas o sensibles del código, empleando los recursos nativos de OpenShift.
Limitar la exposición de secretos solo a los servicios/aplicaciones que los requieran, aplicando políticas de RBAC específicas.
Mantenimiento y limpieza del entorno
Adoptar procesos automáticos o manuales para remover pods, imágenes y configuraciones que ya no se utilizan, optimizando los recursos del clúster.
Auditar y actualizar roles, permisos y reglas de seguridad de forma regular.
Definición de límites y solicitudes de recursos
En un archivo de despliegue, es recomendable establecer los siguientes parámetros en la especificación de un contenedor:
resources: requests: memory: "512Mi" cpu: "500m" limits: memory: "1Gi" cpu: "1" Esto asegura que el pod cuente con los recursos mínimos garantizados y límites superiores definidos, contribuyendo al buen funcionamiento general del clúster.