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

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

Equipo Kubernetes aaS de Mail.ru recopiló pronósticos, consejos y mejores prácticas para líderes del mercado de Gartner, 451 Research, StacxRoх y otros. Permitirán y acelerarán la implementación de contenedores en entornos de producción.

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

Según Gartner, en 2022, más del 75% de las organizaciones utilizarán aplicaciones en contenedores en producción. Esto es mucho más que en la actualidad, cuando menos del 30% de las empresas utilizan este tipo de aplicaciones. 

según Investigación 451El mercado proyectado para aplicaciones de tecnología de contenedores en 2022 será de 4,3 millones de dólares, más del doble de la cantidad proyectada en 2019, con una tasa de crecimiento del mercado del 30%.

В Encuesta de Portworx y Aqua Security El 87% de los encuestados dijeron que actualmente utilizan tecnologías de contenedores. A modo de comparación, en 2017 hubo un 55% de estos encuestados. 

A pesar del creciente interés y adopción de contenedores, ponerlos en producción requiere una curva de aprendizaje debido a la inmadurez tecnológica y la falta de conocimientos. Las organizaciones deben ser realistas acerca de los procesos de negocio que requieren la contenedorización de aplicaciones. Los líderes de TI deben evaluar si tienen las habilidades necesarias para seguir adelante con la necesidad de aprender rápidamente. 

Expertos de Gartner Creemos que las preguntas en la imagen a continuación lo ayudarán a determinar si está listo para implementar contenedores en producción:

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

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

Las organizaciones a menudo subestiman el esfuerzo necesario para operar contenedores en producción. Gartner descubrió Algunos errores comunes en escenarios de clientes al utilizar contenedores en entornos de producción:

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

Cómo mantener seguros los contenedores

La seguridad no se puede abordar “más tarde”. Debe integrarse en el proceso DevOps, razón por la cual existe incluso un término especial: DevSecOps. Las organizaciones necesitan planificar protegiendo el entorno de su contenedor durante todo el ciclo de vida del desarrollo, que incluye el proceso de construcción y desarrollo, implementación y lanzamiento de la aplicación.

Recomendaciones de Gartner

  1. Integre el proceso de escaneo de imágenes de aplicaciones en busca de vulnerabilidades en su canal de integración/entrega continua (CI/CD). Las aplicaciones se analizan en las etapas de creación y lanzamiento del software. Enfatice la necesidad de escanear e identificar componentes, bibliotecas y marcos de código abierto. Los desarrolladores que utilizan versiones antiguas y vulnerables son una de las principales causas de las vulnerabilidades de los contenedores.
  2. Mejore su configuración con las pruebas del Centro de Seguridad de Internet (CIS), que están disponibles tanto para Docker como para Kubernetes.
  3. Asegúrese de hacer cumplir los controles de acceso, garantizar la separación de funciones e implementar una política de gestión de secretos. La información confidencial, como las claves de Secure Sockets Layer (SSL) o las credenciales de la base de datos, es cifrada por el orquestador o por servicios de administración de terceros y expuesta en tiempo de ejecución.
  4. Evite contenedores elevados gestionando políticas de seguridad para reducir posibles riesgos de infracción.
  5. Utilice herramientas de seguridad que proporcionen listas blancas, supervisión del comportamiento y detección de anomalías para evitar actividades maliciosas.

Recomendaciones de StacxRox:

  1. Aproveche las capacidades integradas de Kubernetes. Configure el acceso para usuarios que utilizan roles. Asegúrese de no otorgar permisos innecesarios a entidades individuales, aunque pueda llevar algún tiempo pensar en los permisos mínimos requeridos. Puede resultar tentador otorgar amplios privilegios al administrador del clúster, ya que esto ahorra tiempo inicialmente. Sin embargo, cualquier compromiso o error en la cuenta puede tener consecuencias devastadoras en el futuro. 
  2. Evite permisos de acceso duplicados. A veces puede resultar útil que se superpongan diferentes roles, pero esto puede provocar problemas operativos y también crear puntos ciegos al eliminar permisos. También es importante eliminar los roles no utilizados e inactivos.
  3. Establecer políticas de red: aislar módulos para limitar el acceso a ellos; permitir explícitamente el acceso a Internet a aquellos módulos que lo necesiten mediante etiquetas; Permitir explícitamente la comunicación entre aquellos módulos que necesitan comunicarse entre sí. 

Cómo organizar el seguimiento de contenedores y servicios en ellos.

Seguridad y Monitoreo - principales problemas de las empresas al implementar clústeres de Kubernetes. Los desarrolladores siempre se centran más en las características de las aplicaciones que desarrollan que en los aspectos seguimiento de estas aplicaciones

Recomendaciones de Gartner:

  1. Intente monitorear el estado de los contenedores o servicios en ellos junto con el monitoreo de los sistemas host.
  2. Busque proveedores y herramientas con una profunda integración en la orquestación de contenedores, especialmente Kubernetes.
  3. Elija herramientas que proporcionen registros detallados, descubrimiento automático de servicios y recomendaciones en tiempo real mediante análisis y/o aprendizaje automático.

El blog de SolarWinds aconseja:

  1. Utilice herramientas para descubrir y rastrear automáticamente métricas de contenedores, correlacionando métricas de rendimiento como CPU, memoria y tiempo de actividad.
  2. Garantice una planificación de capacidad óptima prediciendo las fechas de agotamiento de la capacidad en función de las métricas de monitoreo de contenedores.
  3. Supervise la disponibilidad y el rendimiento de las aplicaciones en contenedores, lo que resulta útil tanto para la planificación de la capacidad como para la resolución de problemas de rendimiento.
  4. Automatice los flujos de trabajo proporcionando soporte de gestión y escalado para contenedores y sus entornos de alojamiento.
  5. Automatice el control de acceso para monitorear su base de usuarios, deshabilite cuentas obsoletas y de invitados, y elimine privilegios innecesarios.
  6. Asegúrese de que su conjunto de herramientas pueda monitorear estos contenedores y aplicaciones en múltiples entornos (nube, local o híbrido) para visualizar y comparar el rendimiento en infraestructura, red, sistemas y aplicaciones.

Cómo almacenar datos y garantizar su seguridad

Con el aumento de los contenedores de trabajadores con estado, los clientes deben considerar la presencia de datos fuera del host y la necesidad de proteger esos datos. 

Según Encuesta de Portworx y Aqua Security, la seguridad de los datos encabeza la lista de preocupaciones de seguridad citadas por la mayoría de los encuestados (61%). 

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

(49%), escanear registros en busca de vulnerabilidades (49%), escanear en busca de vulnerabilidades en canalizaciones de CI/CD (49%) y bloquear anomalías mediante protección en tiempo de ejecución (48%).

Recomendaciones de Gartner:

  1. Elija soluciones de almacenamiento basadas en principios arquitectura de microservicio. Es mejor centrarse en aquellos que cumplen con los requisitos de almacenamiento de datos para servicios de contenedores, son independientes del hardware, están impulsados ​​por API, tienen una arquitectura distribuida, admiten la implementación local y la implementación en la nube pública.
  2. Evite complementos e interfaces propietarios. Elija proveedores que proporcionen integración de Kubernetes y admitan interfaces estándar como CSI (Container Storage Interfaces).

Cómo trabajar con redes

El modelo de red empresarial tradicional, en el que los equipos de TI crean entornos de producción, pruebas, control de calidad y desarrollo en red para cada proyecto, no siempre encaja bien con el flujo de trabajo de desarrollo continuo. Además, las redes de contenedores abarcan múltiples capas.

В blog magalix recopilado Reglas de alto nivel que debe cumplir la implementación de una solución de red de clúster:

  1. Los pods programados en el mismo nodo deben poder comunicarse con otros pods sin utilizar 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 en particular pueden comunicarse con los pods que se ejecutan en el mismo nodo.
  3. vainas usando red de host, debe poder comunicarse con todos los demás pods en todos los demás nodos sin utilizar NAT. Tenga en cuenta que la red de host solo se admite en hosts Linux.

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

Recomendaciones de Gartner:

  1. Descubra si su CaaS (contenedor como servicio) o su SDN (Software Defined Network) admite redes Kubernetes. Si no es así o el soporte es insuficiente, utilice la interfaz de red CNI (Container Network Interface) para sus contenedores, que admite la funcionalidad y las políticas necesarias.
  2. Asegúrese de que su CaaS o PaaS (plataforma como servicio) admita la creación de controladores de ingreso y/o equilibradores de carga que distribuyan el tráfico entrante entre los nodos del clúster. Si esta no es una opción, explore el uso de servidores proxy o mallas de servicios de terceros.
  3. Capacite a sus ingenieros de redes en redes Linux y herramientas de automatización de redes para reducir la brecha de habilidades y aumentar la agilidad.

Cómo gestionar el ciclo de vida de la aplicación

Para una entrega de aplicaciones automatizada y fluida, 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 para crear e implementar aplicaciones (consulte “Cuadrante mágico para la orquestación del lanzamiento de aplicaciones"). Los contenedores también proporcionan capacidades de extensibilidad similares a las disponibles al implementar máquinas virtuales (VM). Por lo tanto, los líderes de TI deben tener herramientas de gestión del ciclo de vida de los contenedores.

Recomendaciones de Gartner:

  1. Establezca estándares para imágenes de contenedores base según el tamaño, la licencia y la flexibilidad para que los desarrolladores agreguen componentes.
  2. Utilice sistemas de gestión de configuración para gestionar el ciclo de vida de los contenedores que configuran capas en función de imágenes base ubicadas en repositorios públicos o privados.
  3. Integre su plataforma CaaS con herramientas de automatización para automatizar todo el flujo de trabajo de su aplicación.

Cómo gestionar contenedores con orquestadores

La funcionalidad principal para implementar contenedores se proporciona en las capas de orquestación y planificación. Durante la programación, los contenedores se colocan en los hosts más óptimos del clúster, según lo dictan los requisitos de la capa de orquestación. 

Kubernetes se ha convertido en el estándar de orquestación de contenedores de facto con una comunidad activa y cuenta con el respaldo de la mayoría de los proveedores comerciales líderes. 

Recomendaciones de Gartner:

  1. Defina los requisitos básicos para controles de seguridad, monitoreo, gestión de políticas, persistencia de datos, redes y gestión del ciclo de vida de contenedores.
  2. En función de estos requisitos, seleccione la herramienta que mejor se adapte a sus requisitos y casos de uso.
  3. Utilice la investigación de Gartner (consulte "Cómo elegir un modelo de implementación de Kubernetes") para comprender los pros y los contras de los diferentes modelos de implementación de Kubernetes y elegir el mejor para su aplicación.
  4. Seleccione un proveedor que pueda proporcionar una orquestación híbrida para contenedores de trabajo en múltiples entornos con una estrecha integración de backend, planes de gestión comunes y modelos de precios consistentes.

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

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

Las nubes IaaS ofrecen consumo de recursos bajo demanda, rápida escalabilidad y Gestión De Servicios, lo que ayudará a evitar la necesidad de un conocimiento profundo de la infraestructura y su mantenimiento. La mayoría de los proveedores de la nube ofrecen un servicio de gestión de contenedores y algunos ofrecen múltiples opciones de orquestación. 

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

Proveedor de nube
Tipo de servicio
Producto/servicio

Alibaba
Servicio de nube nativo
Servicio de contenedores en la nube de Alibaba, Servicio de contenedores en la nube de Alibaba para Kubernetes

Servicios Web de Amazon (AWS)
Servicio de nube nativo
Servicios de contenedores elásticos de Amazon (ECS), Amazon ECS para Kubernetes (EKS), AWS Fargate

Enjambre gigante
PEM
Infraestructura de Kubernetes administrada por enjambre gigante

Google
Servicio de nube nativo
Motor de contenedores de Google (GKE)

IBM
Servicio de nube nativo
Servicio IBM Cloud Kubernetes

Microsoft
Servicio de nube nativo
Servicio Azure Kubernetes, Azure Service Fabric

Oracle
Servicio de nube nativo
Motor de contenedores OCI para Kubernetes

Platform9
PEM
Kubernetes administrado

Red Hat
Servicio alojado
OpenShift dedicado y en línea

VMware
Servicio alojado
PKS en la nube (Beta)

Soluciones en la nube de Mail.ru*
Servicio de nube nativo
Contenedores en la nube Mail.ru

* No lo ocultaremos, nos agregamos aquí durante la traducción :)

Los proveedores de nube pública también están agregando nuevas capacidades y lanzando productos locales. En un futuro próximo, los proveedores de nube desarrollarán soporte para nubes híbridas y entornos de múltiples nubes. 

Recomendaciones de Gartner:

  1. Evalúe objetivamente la capacidad de su organización para implementar y administrar herramientas adecuadas y considere servicios alternativos de administración de contenedores en la nube.
  2. Elija el software con cuidado y utilice código abierto siempre que sea posible.
  3. Elija proveedores con modelos operativos comunes en entornos híbridos que ofrezcan administración de panel único de clústeres federados, así como proveedores que faciliten el autohospedaje de IaaS.

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

  1. Vale la pena buscar distribuciones que admitan alta disponibilidad desde el primer momento. Esto incluye soporte para múltiples arquitecturas importantes, componentes etcd de alta disponibilidad y respaldo y recuperación.
  2. Para garantizar la movilidad en sus entornos de Kubernetes, es mejor elegir proveedores de nube que admitan una amplia gama de modelos de implementación, desde locales hasta híbridos y múltiples nubes. 
  3. Las ofertas de los proveedores también deben evaluarse en función de la facilidad de configuración, instalación y creación de clústeres, así como de las actualizaciones, el monitoreo y la resolución de problemas. El requisito básico es admitir actualizaciones de clúster totalmente automatizadas sin tiempo de inactividad. La solución que elija también debería permitirle ejecutar actualizaciones manualmente. 
  4. La gestión de identidades y accesos es importante desde una perspectiva tanto de seguridad como de gobernanza. Asegúrese de que la distribución de Kubernetes que elija admita la integración con las herramientas de autenticación y autorización que utiliza internamente. RBAC y el control de acceso detallado también son conjuntos de características importantes.
  5. La distribución que elija debe tener una solución de red nativa definida por software que cubra una amplia gama de requisitos de infraestructura o aplicaciones diferentes, o ser compatible con una de las implementaciones de red populares basadas en CNI, incluidas franela, Calico, kube-router u OVN.

La introducción de contenedores en la producción se está convirtiendo en la dirección principal, como lo demuestran los resultados de una encuesta realizada en Sesiones de Gartner sobre infraestructura, operaciones y estrategias de nube (IOCS) en diciembre de 2018:

Mejores prácticas y mejores prácticas para ejecutar contenedores y Kubernetes en entornos de producción
Como puedes ver, el 27% de los encuestados ya utiliza contenedores en su trabajo, y el 63% tiene previsto hacerlo.

В Encuesta de Portworx y Aqua Security El 24% de los encuestados informó haber invertido más de medio millón de dólares al año en tecnologías de contenedores, y el 17% de los encuestados gastó más de un millón de dólares al año en ellas. 

Artículo elaborado por el equipo de la plataforma en la nube. Soluciones en la nube Mail.ru.

¿Qué más leer sobre el tema?:

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

Fuente: habr.com

Añadir un comentario