Mejores prácticas y recomendaciones para ejecutar contenedores y Kubernetes en entornos de producción

Mejores prácticas y recomendaciones para ejecutar contenedores y Kubernetes en entornos de producción
El ecosistema de tecnologías de contenedores está evolucionando y cambiando rápidamente, por lo que faltan buenas prácticas en este campo. Sin embargo, Kubernetes y los contenedores se utilizan cada vez más, tanto para modernizar aplicaciones antiguas como para desarrollar aplicaciones en la nube modernas. 

Comando Kubernetes aaS de Mail.ru reunió pronósticos, consejos y mejores prácticas para líderes del mercado de Gartner, 451 Research, StacxRoх y otros. Esto permitirá asegurar y acelerar el despliegue de contenedores en entornos de producción.

Cómo saber si su empresa está lista para desplegar contenedores en un entorno de producción

Según Gartner, en 2022, más del 75% de las organizaciones utilizarán aplicaciones containerizadas en producción. Esto es significativamente mayor que en la actualidad, cuando menos del 30% de las empresas utilizan tales aplicaciones. 

Según 451 Research, se prevé que el mercado para la aplicación de tecnologías de contenedores en 2022 alcanzará $ 4.3 mil millones. Esto es más del doble de las cifras anticipadas en 2019, con una tasa de crecimiento del mercado del 30%.

En en la encuesta de Portworx y Aqua Security el 87% de los encuestados afirmó que actualmente utilizan tecnologías de contenedores. En comparación, en 2017, ese porcentaje era del 55%. 

A pesar del creciente interés y el aumento en la implementación de contenedores, su lanzamiento a producción requiere capacitación debido a la inmadurez tecnológica y la falta de know-how. Las organizaciones deben tener una visión realista de los procesos de negocio que requieren la containerización de aplicaciones. Los líderes de TI deben evaluar si poseen el conjunto de habilidades necesarias para avanzar, teniendo en cuenta la necesidad de una rápida capacitación. 

Los expertos de Gartner consideran que las preguntas en la imagen a continuación ayudarán a entender si está preparado para el despliegue de contenedores en producción:

Mejores prácticas y recomendaciones para ejecutar contenedores y Kubernetes en entornos de producción

Los errores más comunes al aplicar contenedores en producción

Las organizaciones a menudo subestiman los esfuerzos necesarios para operar contenedores en producción. Gartner encontró varios errores comunes en los escenarios de clientes al aplicar contenedores en entornos de producción:

Mejores prácticas y recomendaciones para ejecutar contenedores y Kubernetes en entornos de producción

Cómo asegurar los contenedores

La seguridad no se puede abordar "después". Debe estar integrada en el proceso de DevOps, por lo que incluso se ha acuñado un término especial: DevSecOps. Las organizaciones necesitan planificar la protección del entorno de contenedores a lo largo de todo el ciclo de vida del desarrollo, que incluye el proceso de construcción y desarrollo, la implementación y el lanzamiento de la aplicación.

Recomendaciones de Gartner: 

  1. Integra el proceso de escaneo de imágenes de aplicaciones para buscar vulnerabilidades en el pipeline de integración continua / entrega continua (CI / CD). Las aplicaciones son escaneadas en las etapas de construcción y ejecución del software. Subraya la necesidad de escanear e identificar componentes de código abierto, bibliotecas y frameworks. El uso por parte de los desarrolladores de versiones antiguas y vulnerables es una de las principales causas de vulnerabilidades en contenedores.
  2. Mejora la configuración usando pruebas del Center for Internet Security (CIS), disponibles tanto para Docker como para Kubernetes.
  3. Asegúrate de aplicar control de acceso, proporciona separación de funciones e implementa una política de gestión de secretos. Información confidencial, como claves de Secure Sockets Layer (SSL) o credenciales de bases de datos, está cifrada por el orquestador o servicios de gestión de terceros y se proporciona durante la ejecución.
  4. Evita contenedores con privilegios elevados mediante la gestión de políticas de seguridad, esto reducirá los riesgos potenciales de violaciones.
  5. Utiliza herramientas de seguridad que proporcionen listas blancas, monitoreo de comportamiento y detección de anomalías para prevenir acciones maliciosas.

Recomendaciones de StacxRox:

  1. Utiliza las capacidades integradas de Kubernetes. Configura el acceso para los usuarios utilizando roles. Asegúrate de no otorgar permisos innecesarios a individuales, incluso si puede llevar tiempo pensar en los permisos mínimos necesarios. Puede parecer tentador dar privilegios amplios a un administrador de clústeres, ya que ahorra tiempo en las etapas iniciales. Sin embargo, cualquier compromiso o error en la cuenta puede llevar a consecuencias devastadoras más adelante. 
  2. Evita la duplicación de permisos de acceso. A veces es útil hacer que diferentes roles se superpongan, pero esto puede llevar a problemas operativos y crear "zonas muertas" al eliminar permisos. Además, es importante eliminar roles no utilizados e inactivos.
  3. Establezca políticas de red: aísle los módulos para limitar su acceso; permita explícitamente el acceso a Internet a aquellos módulos que lo necesiten utilizando etiquetas; permita explícitamente la comunicación entre los módulos que deban interactuar entre sí. 

Cómo organizar la monitorización de contenedores y los servicios en ellos

Seguridad y monitorización — los principales problemas de las empresas al desplegar clústeres de Kubernetes. Los desarrolladores suelen centrarse más en las funciones de las aplicaciones que están creando que en los aspectos de monitorización de estas aplicaciones. 

Recomendaciones de Gartner:

  1. Intente monitorizar el estado de los contenedores o servicios en ellos junto con la monitorización de los sistemas host.
  2. Prefiera proveedores y herramientas con una profunda integración en la orquestación de contenedores, especialmente Kubernetes.
  3. Elija herramientas que proporcionen un registro detallado, detección automática de servicios y recomendaciones en tiempo real mediante el uso de analítica y/o aprendizaje automático.

En el blog de SolarWinds se aconseja:

  1. Usar herramientas para la detección automática y el seguimiento de métricas de contenedores, correlacionando métricas de rendimiento como la CPU, la memoria y el tiempo de actividad.
  2. Asegurar una planificación de capacidad óptima prediciendo los plazos de insuficiencia de capacidad en función de las métricas de monitorización de contenedores.
  3. Organizar la monitorización de aplicaciones alojadas en contenedores en términos de disponibilidad y rendimiento, lo que es útil tanto para la planificación de capacidad como para resolver problemas de rendimiento.
  4. Automatizar flujos de trabajo, proporcionando soporte para la gestión y escalado de contenedores y sus entornos de alojamiento.
  5. Automatizar el control de acceso para rastrear la base de usuarios, desactivar cuentas obsoletas y de invitados, y eliminar privilegios innecesarios.
  6. Asegurarse de que su conjunto de herramientas pueda rastrear estos contenedores y aplicaciones en diversos entornos (en la nube, locales o híbridos) para visualizar y correlacionar el rendimiento en la infraestructura, red, sistemas y aplicaciones.

Cómo almacenar datos y asegurar su seguridad

Con el aumento de la cantidad de contenedores de trabajo que mantienen el estado, los clientes deben considerar la ubicación de los datos fuera del host, así como la necesidad de proteger esos datos. 

Según la encuesta de Portworx y Aqua Security, la seguridad de los datos ocupa el primer lugar en la lista de problemas de seguridad mencionados por la mayoría de los encuestados (61%). 

El cifrado de datos es la principal estrategia de seguridad (64%), sin embargo, los encuestados también utilizan la supervisión en tiempo de ejecución

(49%), el escaneo de vulnerabilidades en registros (49%), el escaneo de vulnerabilidades en canalizaciones CI/CD (49%) y el bloqueo de anomalías a través de la protección en tiempo de ejecución (48%).

Recomendaciones de Gartner:

  1. Elija soluciones de almacenamiento de datos basadas en principios de arquitectura de microservicios. Es mejor optar por aquellas que cumplen con los requisitos de almacenamiento de datos para servicios de contenedores, son independientes del hardware, son gestionadas por API, tienen arquitectura distribuida, soportan implementación local y despliegue en la nube pública.
  2. Evite complementos e interfaces propietarias. Elija proveedores que ofrezcan integración con Kubernetes y que soporten interfaces estándar, como CSI (Container Storage Interfaces).

Cómo trabajar con redes

El modelo tradicional de red corporativa, donde los especialistas de TI crean entornos de desarrollo, prueba, aseguramiento de calidad y producción para cada proyecto, no siempre se alinea bien con el flujo de trabajo de desarrollo continuo. Además, las redes de contenedores abarcan múltiples niveles.

En en el blog de Magalix se recopilaron reglas de alto nivel que debe cumplir la implementación de una solución de red en clúster:

  1. Los pods programados en el mismo nodo deben poder intercambiar datos con otros módulos sin usar NAT (traducción de direcciones de red).
  2. Todos los demonios del sistema (procesos en segundo plano, como kubelet) que se ejecutan en un nodo determinado pueden interactuar con los pods que se están ejecutando en el mismo nodo.
  3. Los pods que utilizan la red del host, deben poder comunicarse con todos los demás pods en otros nodos sin utilizar NAT. Tenga en cuenta que la red del host solo se admite en hosts de Linux.

Las soluciones de red deben estar estrechamente integradas con los primitivas y políticas de Kubernetes. Los líderes de TI deben esforzarse por un alto grado de automatización de la red, proporcionando a los desarrolladores las herramientas adecuadas y suficiente flexibilidad.

Recomendaciones de Gartner:

  1. Verifique si su CaaS (contenedor como servicio) o su red SDN (Red Definida por Software) son compatibles con redes Kubernetes. Si no, o si el soporte es insuficiente, utilice una interfaz de red CNI (Interfaz de Red de Contenedores) que ofrezca la funcionalidad y políticas necesarias.
  2. Asegúrese de que su CaaS o PaaS (plataforma como servicio) soporte la creación de controladores de entrada y/o balanceadores de carga que distribuyan el tráfico entrante entre los nodos del clúster. Si no es posible, considere el uso de proxies de terceros o mecanismos de service mesh.
  3. Capacite a sus ingenieros de red en el manejo de redes Linux y herramientas de automatización de redes para reducir la brecha de habilidades y mejorar la flexibilidad.

Cómo gestionar el ciclo de vida de las aplicaciones

Para una entrega de aplicaciones automatizada y continua, es necesario complementar la orquestación de contenedores con otras herramientas de automatización, como productos de infraestructura como código (IaC). Estos incluyen Chef, Puppet, Ansible y Terraform. 

También se requieren herramientas de automatización de construcción y despliegue de aplicaciones (ver "Cuadrante Mágico para la Orquestación de Despliegue de Aplicaciones"). Los contenedores también ofrecen capacidades de escalabilidad similares a las que existían al desplegar máquinas virtuales (VM). Así, los líderes de TI deben tener herramientas para la gestión del ciclo de vida de los contenedores.

Recomendaciones de Gartner:

  1. Establezca estándares para las imágenes base de contenedores considerando el tamaño, licenciamiento y flexibilidad para la adición de componentes por parte de los desarrolladores.
  2. Utilice sistemas de gestión de configuración para manejar el ciclo de vida de los contenedores que alojan la configuración en capas basadas en imágenes base, disponibles en repositorios públicos o privados.
  3. Integre la plataforma CaaS con herramientas de automatización para automatizar todo el flujo de trabajo de la aplicación.

Cómo gestionar contenedores con orquestadores

Las principales características para el despliegue de contenedores se proporcionan en los niveles de orquestación y planificación. Al planificar, los contenedores se distribuyen en los hosts más óptimos del clúster, según lo dictado por los requisitos del nivel de orquestación. 

Kubernetes se ha convertido de facto en el estándar de orquestación de contenedores, con una comunidad activa y es respaldado por la mayoría de los principales proveedores comerciales. 

Recomendaciones de Gartner:

  1. Defina los requisitos básicos para los controles de seguridad, monitoreo, gestión de políticas, retención de datos, gestión de redes y ciclo de vida de los contenedores.
  2. Con base en estos requisitos, elija la herramienta que mejor se adapte a sus necesidades y escenarios de uso.
  3. Utilice investigaciones de Gartner (ver “Cómo elegir un modelo de despliegue de Kubernetespara entender las ventajas y desventajas de los diferentes modelos de despliegue de Kubernetes y seleccionar el más adecuado para su tarea.
  4. Seleccione un proveedor que pueda proporcionar orquestación híbrida para contenedores de trabajo en múltiples entornos con una integración estrecha con backends, planes de gestión comunes y modelos de precios coherentes.

Cómo aprovechar las capacidades de los proveedores de la nube

En Gartner consideran, que el interés por el despliegue de contenedores en la nube pública IaaS está creciendo debido a la disponibilidad de ofertas CaaS listas para usar, así como la integración estrecha de estas ofertas con otros productos ofrecidos por los proveedores de nube.

Las nubes IaaS ofrecen consumo de recursos bajo demanda, escalabilidad rápida y gestión de servicios, lo que ayuda a evitar la necesidad de un profundo conocimiento sobre la infraestructura y su mantenimiento. La mayoría de los proveedores de nube ofrecen un servicio de gestión de contenedores, y algunos ofrecen varias opciones de orquestación. 

Los principales proveedores de nube de servicios gestionados se presentan en la tabla: 

Proveedor de nube
Tipo de servicio
Producto/servicio

Alibaba
Servicio de Nube Nativa
Alibaba Cloud Container Service, Alibaba Cloud Container Service for Kubernetes

Amazon Web Services (AWS)
Servicio de Nube Nativa
Amazon Elastic Container Services (ECS), Amazon ECS for Kubernetes (EKS), AWS Fargate

Giant Swarm
MSP
Infraestructura de Kubernetes Gestionada de Giant Swarm

Google
Servicio de Nube Nativa
Google Container Engine (GKE)

IBM
Servicio de Nube Nativa
IBM Cloud Kubernetes Service

Microsoft
Servicio de Nube Nativa
Azure Kubernetes Service, Azure Service Fabric

Oracle
Servicio de Nube Nativa
OCI Container Engine for Kubernetes

Platform9
MSP
Kubernetes Gestionado

Red Hat
Servicio Alojado
OpenShift Dedicado & Online

VMware
Servicio Alojado
Cloud PKS (Beta)

Soluciones en la Nube de Mail.ru*
Servicio de Nube Nativa
Contenedores en la Nube de Mail.ru

* No vamos a ocultarlo, nosotros mismos nos agregamos en la traducción 🙂

Los proveedores de nubes públicas también están añadiendo nuevas capacidades y lanzando productos locales. En un futuro cercano, los proveedores de nubes desarrollarán el soporte para nubes híbridas y entornos multicloud. 

Recomendaciones de Gartner:

  1. Evalúe objetivamente la capacidad de su organización para desplegar y gestionar las herramientas adecuadas, así como considere servicios alternativos para la gestión de contenedores en la nube.
  2. Elija cuidadosamente el software, utilizando código abierto donde sea posible.
  3. Opte por proveedores que cuenten con modelos operativos unificados en entornos híbridos, que ofrezcan gestión de clústeres combinados desde un solo panel, así como proveedores que faciliten el uso autónomo de IaaS.

Algunos consejos para elegir un proveedor de Kubernetes aaS del blog de Replex:

  1. Es recomendable buscar distribuciones que ofrezcan alta disponibilidad lista para usar. Esto incluye soporte para varias arquitecturas básicas, componentes de etcd de alta disponibilidad, así como respaldo y recuperación.
  2. Para garantizar la movilidad de los entornos de Kubernetes, es mejor elegir proveedores de nube que soporten una amplia gama de modelos de despliegue: desde locales hasta híbridos y multicloud. 
  3. Además, las ofertas de los proveedores deben evaluarse en función de la facilidad de configuración, instalación y creación de clústeres, así como de actualizaciones, monitoreo y resolución de problemas. El requisito básico es el soporte para actualizaciones de clústeres totalmente automatizadas con un tiempo de inactividad cero. La solución elegida también debería permitir ejecutar actualizaciones manualmente. 
  4. La gestión de la identidad y el acceso es crucial tanto desde la perspectiva de la seguridad como de la administración. Asegúrese de que la distribución de Kubernetes elegida soporte la integración con las herramientas de autenticación y autorización utilizadas dentro de la empresa. RBAC y control de acceso detallado también son conjuntos de funciones importantes.
  5. La distribución seleccionada debe tener una solución de red propia, definida por el software y que abarque un amplio rango de requisitos planteados por diversas aplicaciones o infraestructura, o bien soportar una de las implementaciones de red más populares basadas en CNI, incluyendo Flannel, Calico, kube-router u OVN.

La implementación de contenedores en producción se está convirtiendo en una tendencia principal, como lo demuestra una encuesta realizada en la sesión de Gartner sobre infraestructura, operaciones y estrategias en la nube (IOCS) en diciembre de 2018:

Mejores prácticas y recomendaciones para ejecutar contenedores y Kubernetes en entornos de producción
Como podemos ver, el 27% de los encuestados ya utilizan contenedores en su trabajo, y el 63% tiene la intención de hacerlo.

En en la encuesta de Portworx y Aqua Security El 24% de los encuestados informaron que invierten más de medio millón de dólares al año en tecnologías de contenedores, mientras que el 17% de los encuestados gastan más de un millón de dólares al año en ellas. 

El artículo fue preparado por el equipo de la plataforma en la nube Soluciones en la Nube de Mail.ru.

Lecturas adicionales sobre el tema:

  1. Mejores prácticas de DevOps: informe DORA.
  2. Kubernetes con espíritu de piratería con plantilla de implementación.
  3. 25 herramientas útiles para el despliegue y la implementación de Kubernetes.

Fuente: habr.com

Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS 🔥 Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS | ProHoster