Reduce la complejidad con Kubernetes preparado para producción

NGINX | 05 de febrero de 2021

Editor – Esta publicación forma parte de una serie de 10 entregas:

  1. Reduzca la complejidad con Kubernetes preparado para producción (esta publicación)
  2. Cómo mejorar la resiliencia en Kubernetes con una gestión avanzada del tráfico
  3. Cómo mejorar la visibilidad en Kubernetes
  4. Seis formas de proteger Kubernetes mediante herramientas de gestión del tráfico
  5. Guía para elegir un controlador de Ingress, parte 1: identifique sus requisitos
  6. Guía para elegir un controlador de Ingress, parte 2: riesgos y preparación para el futuro
  7. Guía para elegir un controlador de Ingress, parte 3: código abierto frente a opción predeterminada frente a solución comercial
  8. Guía para elegir un controlador de Ingress, parte 4: opciones del controlador de Ingress de NGINX
  9. Cómo elegir una malla de servicios
  10. Pruebas de rendimiento de los controladores de Ingress de NGINX en un entorno dinámico de Kubernetes en la nube

También puedes descargar la colección completa de artículos del blog como libro electrónico gratuito : «Cómo llevar Kubernetes de las pruebas a producción».

2020 fue un año que pocos olvidaremos. El cierre repentino de escuelas, empresas y servicios públicos nos aisló de nuestras comunidades de la noche a la mañana y nos sumió en la incertidumbre sobre nuestra seguridad y estabilidad económica. Imaginemos por un momento que esto hubiera ocurrido en el año 2000, o incluso en 2010. ¿Qué habría sido diferente? La tecnología. Sin los servicios digitales de alta calidad que damos por sentados —sanidad, vídeo en streaming y herramientas de colaboración remota—, vivir una pandemia habría sido una experiencia muy distinta. ¿Qué hizo que la tecnología de 2020 fuera tan diferente de la de décadas anteriores? Los contenedores y los microservicios.

Los microservicios se basan en arquitecturas que, por lo general, utilizan contenedores y Kubernetes para impulsar el crecimiento empresarial y la innovación, reduciendo el tiempo de comercialización de las experiencias digitales. Ya sea junto con arquitecturas tradicionales o de forma independiente, estas modernas tecnologías de aplicaciones ofrecen una escalabilidad y flexibilidad superiores, implementaciones más rápidas e incluso ahorro de costes.

Antes de 2020, constatamos que la mayoría de nuestros clientes ya habían empezado a adoptar los microservicios como parte de su estrategia de transformación digital, pero la pandemia aceleró considerablemente la modernización de las aplicaciones. Nuestra encuesta de 2020 a usuarios de NGINX reveló que el 60 % de los encuestados utilizaba microservicios en producción, frente al 40 % en 2019, y que los contenedores eran más del doble de populares que otras tecnologías de aplicaciones modernas.

Kubernetes es el estándar de facto para gestionar aplicaciones en contenedores, como demuestra la encuesta de 2020 de la Cloud Native Computing Foundation (CNCF), que reveló que el 91 % de los encuestados utiliza Kubernetes y que el 83 % de ellos lo hace en producción. Al adoptar Kubernetes, muchas organizaciones están preparadas para afrontar cambios arquitectónicos importantes, pero se ven sorprendidas por el impacto organizativo que supone ejecutar tecnologías de aplicaciones modernas a gran escala. Si utiliza Kubernetes, probablemente se haya encontrado con estas tres barreras críticas para el negocio:

  • Cultura
    Aunque los equipos de aplicaciones adopten enfoques modernos como el desarrollo ágil y DevOps, por lo general siguen estando sujetos a la ley de Conway, que afirma que «las organizaciones diseñan sistemas que reflejan su propia estructura de comunicación». En otras palabras, las aplicaciones distribuidas son desarrolladas por equipos distribuidos que trabajan de forma independiente, pero comparten recursos. Si bien esta estructura es ideal para que los equipos avancen con rapidez, también fomenta la creación de silos. Entre sus consecuencias se incluyen una comunicación deficiente (que, a su vez, tiene sus propias consecuencias), vulnerabilidades de seguridad, proliferación de herramientas, prácticas de automatización incoherentes y conflictos entre equipos.
  • Complejidad
    Para implementar tecnologías de microservicios de nivel empresarial, las organizaciones deben integrar un conjunto de componentes esenciales que proporcionen visibilidad, seguridad y gestión del tráfico. Por lo general, los equipos recurren a plataformas de infraestructura, servicios nativos de la nube y herramientas de código abierto para cubrir esta necesidad. Aunque cada una de estas estrategias tiene su razón de ser, todas presentan inconvenientes que pueden aumentar la complejidad. Además, con demasiada frecuencia, distintos equipos de una misma organización eligen estrategias diferentes para satisfacer los mismos requisitos, lo que genera «deuda operativa». Asimismo, los equipos eligen procesos y herramientas en un momento determinado y siguen utilizándolos pese a que cambien los requisitos para desplegar y ejecutar aplicaciones modernas basadas en microservicios mediante contenedores. El panorama interactivo de tecnologías nativas de la nube de la CNCF ilustra claramente la complejidad de la infraestructura necesaria para admitir aplicaciones basadas en microservicios. Las organizaciones deben dominar una amplia variedad de tecnologías dispares, con consecuencias como la dependencia de una infraestructura concreta, la TI en la sombra, la proliferación de herramientas y una pronunciada curva de aprendizaje para quienes se encargan del mantenimiento de la infraestructura.
  • Seguridad
    Los requisitos de seguridad difieren considerablemente entre las aplicaciones nativas de la nube y las tradicionales, ya que estrategias como la seguridad perimetral no son viables en Kubernetes. El amplio ecosistema y la naturaleza distribuida de las aplicaciones en contenedores hacen que la superficie de ataque sea mucho mayor, y la dependencia de aplicaciones SaaS externas ofrece a empleados y agentes externos muchas más oportunidades para introducir código malicioso o extraer información. Además, las consecuencias descritas en los apartados sobre cultura y complejidad —en particular, la proliferación de herramientas— repercuten directamente en la seguridad y la resiliencia de sus aplicaciones modernas. Utilizar distintas herramientas en todo el ecosistema para resolver el mismo problema no solo es ineficiente, sino que también plantea un enorme desafío para los equipos de SecOps, que deben aprender a configurar correctamente cada componente.

La solución: Kubernetes listo para producción

Como ocurre con la mayoría de los problemas organizativos, la solución para superar los retos de Kubernetes pasa por combinar tecnología y procesos. En el resto de esta publicación nos centraremos en el componente tecnológico, pero no os perdáis las próximas publicaciones sobre procesos y otros temas.

Dado que Kubernetes es una tecnología de código abierto, existen numerosas formas de implementarlo. Aunque algunas organizaciones prefieren crear su propia implementación básica de Kubernetes, muchas valoran la combinación de flexibilidad, directrices y soporte que ofrecen servicios como Amazon Elastic Kubernetes Service (EKS), Google Kubernetes Engine (GKE), Microsoft Azure Kubernetes Service (AKS), Red Hat OpenShift Container Platform y Rancher.

Las plataformas de Kubernetes pueden facilitar la puesta en marcha; sin embargo, se centran más en la variedad de servicios que en su profundidad. Por tanto, aunque permiten disponer de todos los servicios necesarios en un único lugar, es poco probable que ofrezcan el conjunto de funcionalidades requerido para estar realmente preparadas para entornos de producción a gran escala. En concreto, no se centran en las funciones avanzadas de redes y seguridad, y es ahí donde vemos que Kubernetes decepciona a muchos clientes.

Para que Kubernetes esté preparado para entornos de producción, debes añadir tres componentes más en este orden:

  1. Una capa escalable de entrada y salida para gestionar el tráfico entrante y saliente del clúster
    Esto se consigue mediante un controlador de Ingress, que es un balanceador de carga especializado que abstrae la complejidad de las redes de Kubernetes y actúa como puente entre los servicios de un clúster de Kubernetes y los externos. Este componente alcanza un nivel apto para producción cuando incluye funciones que aumentan la resiliencia (por ejemplo, comprobaciones de estado avanzadas y métricas de Prometheus), permiten un escalado rápido (reconfiguración dinámica) y facilitan el autoservicio (control de acceso basado en roles [RBAC]).
    Diagrama de topología de un entorno de Kubernetes con un controlador de Ingress genérico que proporciona una capa escalable de entrada y salida
  2. Seguridad integrada para proteger frente a amenazas en todo el clúster
    Aunque una seguridad «poco granular» puede ser suficiente fuera del clúster, dentro de él se requiere una seguridad «granular». En función de la complejidad del clúster, hay tres ubicaciones en las que puede ser necesario implementar un firewall de aplicaciones web (WAF) flexible: en el controlador de Ingress, como proxy por servicio y como proxy por pod. Esta flexibilidad permite aplicar controles más estrictos a las aplicaciones sensibles —como las de facturación— y controles menos estrictos cuando el riesgo es menor.
    Diagrama de topología de un entorno de Kubernetes con un WAF implementado junto a un controlador de Ingress genérico
  3. Una capa escalable de tráfico este-oeste para optimizar el tráfico dentro del clúster
    Este tercer componente es necesario cuando las aplicaciones de Kubernetes han superado el nivel de complejidad y escala que pueden gestionar las herramientas básicas. En esta fase, se necesita una malla de servicios, una herramienta de orquestación que proporciona una gestión del tráfico y una seguridad aún más granulares para los servicios de aplicaciones dentro del clúster. Una malla de servicios suele encargarse de gestionar el enrutamiento entre aplicaciones en contenedores, proporcionar y aplicar políticas autónomas de TLS mutuo (mTLS) entre servicios, y ofrecer visibilidad sobre la disponibilidad y la seguridad de las aplicaciones.
    Diagrama de topología de un entorno de Kubernetes con un WAF implementado junto a un controlador de Ingress genérico y una malla de servicios que proporciona una capa este-oeste escalable

Al seleccionar estos componentes, dé prioridad a la portabilidad y la visibilidad. Los componentes independientes de la plataforma reducen la complejidad y mejoran la seguridad, ya que sus equipos tienen que aprender a utilizar y proteger menos herramientas y pueden trasladar las cargas de trabajo con mayor facilidad en función de las necesidades de la empresa. No se puede exagerar la importancia de la visibilidad y la supervisión. Las integraciones con herramientas populares como Grafana y Prometheus ofrecen una vista unificada de toda la infraestructura desde un único panel, lo que permite a su equipo detectar los problemas antes de que los descubran sus clientes. Además, existen otras tecnologías complementarias que, aunque no son estrictamente necesarias para ejecutar Kubernetes en entornos de producción, forman parte integral del desarrollo de aplicaciones modernas. Por ejemplo, cuando las organizaciones están preparadas para modernizar las aplicaciones tradicionales, uno de los primeros pasos consiste en crear microservicios con una puerta de enlace de API.

Cómo puede ayudar NGINX

Nuestras soluciones de Kubernetes son independientes de la plataforma e incluyen los tres componentes necesarios para implementar Kubernetes en entornos de producción: NGINX Ingress Controller como capa de entrada y salida, NGINX App Protect como WAF y NGINX Service Mesh como capa de comunicación este-oeste.

Diagrama de topología de un entorno de Kubernetes con NGINX App Protect WAF implementado junto con un controlador de entrada NGINX y NGINX Service Mesh

Estas soluciones pueden convertir a Kubernetes en su mejor aliado al proporcionarle capacidades en cuatro áreas clave:

  • Automatización – Lance sus aplicaciones al mercado de forma más rápida y segura
    Implemente, escale, proteja y actualice aplicaciones mediante las funciones de enrutamiento del tráfico e incorporación de aplicaciones de NGINX Ingress Controller, combinadas con la implementación automática de sidecars de NGINX Plus de NGINX Service Mesh.
  • Seguridad – Proteja a sus clientes y su empresa frente a amenazas existentes y emergentes
    Reduzca los posibles puntos de fallo implementando NGINX App Protect en cualquier parte del clúster y utilizando NGINX Service Mesh y NGINX Ingress Controller para gestionar y aplicar el cifrado de extremo a extremo entre servicios.
  • Rendimiento – Ofrezca las experiencias digitales que sus clientes y usuarios esperan
    Gestione sin esfuerzo los picos de tráfico y las amenazas de seguridad sin comprometer el rendimiento gracias a las soluciones de NGINX, que superan a otros WAF, controladores de Ingress y balanceadores de carga.
  • Información detallada – Haga evolucionar su negocio y preste un mejor servicio a sus clientes
    Obtenga información específica sobre el rendimiento y la disponibilidad de las aplicaciones con NGINX Ingress Controller y NGINX Service Mesh, así como trazas detalladas para comprender cómo se procesan las solicitudes en sus aplicaciones de microservicios.

Preparación para producción con NGINX

NGINX Ingress Controller está disponible como una prueba gratuita de 30 días, que incluye NGINX App Protect para proteger sus aplicaciones en contenedores. Le recomendamos añadir NGINX Service Mesh, que es gratuito de forma permanente (disponible para descargar en f5.com) para sacar el máximo partido a su prueba. Actualmente, puede usar su propia licencia (BYOL) en el proveedor de nube que prefiera.


Compartir

Sobre el autor

Jenn Gile
Jenn GileResponsable de Marketing de Producto, NGINX

Más artículos de Jenn Gile

Artículos relacionados del blog

Únete a F5 NGINX en AppWorld 2024
NGINX | 04/01/2024

Únete a F5 NGINX en AppWorld 2024

Descubre las numerosas razones para asistir al evento insignia de F5, que incluirá un emocionante anuncio sobre la cartera de productos NGINX.

Rotación de certificados SSL/TLS sin reinicios en NGINX Open Source
NGINX | 26/09/2023

Rotación de certificados SSL/TLS sin reinicios en NGINX Open Source

La función de diccionario compartido permite configurar NGINX sin necesidad de reiniciarlo al renovar los certificados SSL/TLS.

Exposición de APIs en Kubernetes
NGINX | 10/03/2022

Exposición de APIs en Kubernetes

La unidad 2 de Microservices March 2022 se centra en cómo exponer tus API en Kubernetes. Aquí tienes enlaces a los recursos que necesitas: la retransmisión en directo del 14 de marzo, artículos de blog y otros recursos de preparación, y el laboratorio práctico «Protege las API de Kubernetes mediante la limitación de solicitudes».

NGINX Sprint 2.0: visión clara, código renovado y nuevos compromisos con el código abierto
NGINX | 23/08/2021

NGINX Sprint 2.0: visión clara, código renovado y nuevos compromisos con el código abierto

Hoy, en NGINX Sprint 2.0, anunciamos cómo respaldaremos nuestra visión del futuro de las aplicaciones modernas con una mayor presencia en la comunidad de código abierto, incluida la participación en el proyecto comunitario Kubernetes, nuevos proyectos de software de código abierto y la arquitectura de referencia para aplicaciones modernas.

Presentamos NGINX Plus R22
NGINX | 09/06/2020

Presentamos NGINX Plus R22

NGINX Plus R22 incorpora nuevas funcionalidades, como la compatibilidad con OCSP para verificar la revocación de certificados en TLS mutuo, el uso de varios proveedores de identidad OIDC en una configuración, el seguimiento en tiempo real de la limitación de solicitudes y conexiones en el panel de NGINX Plus y mejoras en NGINX JavaScript.

Presentamos NGINX Plus R17
NGINX | 11/12/2018

Presentamos NGINX Plus R17

NGINX Plus R17 incorpora compatibilidad con la limitación de velocidad en dos fases y con TLS 1.3, la versión más reciente del protocolo Transport Layer Security. La configuración de OpenID Connect es más sencilla y NGINX ModSecurity WAF es el doble de rápido que antes. También se ha actualizado el módulo JavaScript de NGINX.