
Nos complace presentar la versión preliminar (NSM), una service mesh ligera que utiliza un plano de datos basado en NGINX Plus para gestionar el tráfico de contenedores en entornos de Kubernetes.
NSM está disponible de forma gratuita . Esperamos que lo pruebes en entornos de desarrollo y prueba, y esperamos tus comentarios .
La implementación de la metodología de microservicios conlleva dificultades a medida que aumenta la escala de las entregas y se complican. La comunicación entre servicios se vuelve más compleja, los problemas de depuración son más difíciles y cada vez más servicios requieren más recursos para su gestión.
NSM resuelve estos problemas al proporcionarte, en primer lugar:
- Seguridad, que es ahora más importante que nunca. Una filtración de datos puede costarle a una empresa millones de dólares anualmente en pérdidas de ingresos y reputación. NSM asegura el cifrado de todas las conexiones usando mTLS, de modo que no hay datos sensibles que los hackers puedan robar a través de la red. El control de acceso te permite establecer políticas sobre cómo los servicios se comunicarán con otros servicios.
- Gestión del tráfico. Al entregar una nueva versión de la aplicación, es posible que desees inicialmente limitar el tráfico entrante para prepararte ante errores. Con la gestión inteligente del tráfico de contenedores de NSM, puedes establecer una política de limitación de tráfico para nuevos servicios, que aumentará el tráfico con el tiempo. Otras funciones, como la limitación de velocidad y los circuit breakers, te dan acceso total a la gestión del tránsito de tráfico por todos tus servicios.
- Visualización. Gestionar miles de servicios puede ser una pesadilla de depuración y visualización. NSM ayuda a afrontar esta situación con un panel de control integrado de Grafana, que muestra todas las métricas disponibles en NGINX Plus. Además, la integración de Open Tracing permite un seguimiento detallado de las transacciones.
- Entregas híbridas, si tu empresa, como la mayoría de las demás, no utiliza una infraestructura completamente ejecutada en Kubernetes. NSM garantiza que las aplicaciones más antiguas no queden desatendidas. Con el NGINX Kubernetes Ingress Controller integrado, los servicios antiguos podrán comunicarse con los servicios de mesh y viceversa.
NSM también asegura las aplicaciones en entornos de confianza cero, aplicando de manera transparente cifrado y autenticación del tráfico de contenedores. También permite la supervisión y análisis de transacciones, ayudando a implementar con rapidez y precisión los despliegues y a resolver problemas. Además, proporciona un control detallado del tráfico, permitiendo a los equipos de DevOps desplegar y optimizar partes de las aplicaciones, al tiempo que permite a los desarrolladores crear y conectar fácilmente sus aplicaciones distribuidas.
¿Cómo funciona NGINX Service Mesh?
NSM consiste en un plano de datos unificado para el tráfico horizontal (servicio a servicio) y un NGINX Plus Ingress Controller integrado para el tráfico vertical, gestionados por un único plano de control.
El plano de control está diseñado y optimizado específicamente para el plano de datos de NGINX Plus, y define las reglas de gestión del tráfico distribuidas entre los sidecars de NGINX Plus.
En NSM, se instalan proxies sidecars para cada servicio en la malla. Ellos interactúan con las siguientes soluciones de código abierto:
- Grafana, visualización de métricas de Prometheus, el panel integrado de NSM te ayuda en tu trabajo;
- Controladores de Ingress de Kubernetes, para gestionar el tráfico entrante y saliente en la malla;
- SPIRE, una CA para gestionar, distribuir y actualizar certificados en la malla;
- NATS, un sistema de mensajería escalable, por ejemplo, actualizaciones de rutas, del plano de control a los sidecars;
- Open Tracing, depuración distribuida (se admiten Zipkin y Jaeger);
- Prometheus, recolección y almacenamiento de métricas desde los sidecars de NGINX Plus, como el número de solicitudes, conexiones y SSL handshakes.
Funciones y componentes
NGINX Plus, como plano de datos, abarca proxies sidecar (tráfico horizontal) y controladores de Ingress (tráfico vertical), interceptando y gestionando el tráfico de contenedores entre servicios.
Las funciones incluyen:
- Autenticación mutua TLS (mTLS);
- Balanceo de carga;
- Resiliencia;
- Limitación de velocidad;
- Interrupción de circuitos;
- Despliegues azul-verde y canarios;
- Control de acceso.
Cómo lanzar NGINX Service Mesh
Para lanzar NSM necesitas:
- acceso al entorno de Kubernetes. NGINX Service Mesh es compatible con muchas plataformas de Kubernetes, incluyendo Amazon Elastic Container Service for Kubernetes (EKS), Azure Kubernetes Service (AKS), Google Kubernetes Engine (GKE), VMware vSphere y clústeres de Kubernetes normales desplegados en servidores físicos;
- Herramienta
kubectl, instalado en la máquina desde la cual se establecerá NSM; - Acceso a los paquetes de lanzamiento de NGINX Service Mesh. El paquete incluye imágenes de NSM, necesarias para cargarlas en un registro privado para contenedores, accesible en el clúster de Kubernetes. El paquete también contiene
nginx-meshctl, necesario para desplegar NSM.
Para desplegar NSM con la configuración predeterminada, ejecute el siguiente comando. Durante el despliegue, se mostrarán mensajes sobre la instalación exitosa de los componentes y, finalmente, un mensaje indicando que NSM está funcionando en un espacio de nombres separado (primero debe y cargarlo en el registro, nota del traductor):
$ DOCKER_REGISTRY=su-registro-Docker; MESH_VER=0.6.0;
. /nginx-meshctl deploy
--nginx-mesh-api-image "${DOCKER_REGISTRY}/nginx-mesh-api:${MESH_VER}"
--nginx-mesh-sidecar-image "${DOCKER_REGISTRY}/nginx-mesh-sidecar:${MESH_VER}"
--nginx-mesh-init-image "${DOCKER_REGISTRY}/nginx-mesh-init:${MESH_VER}"
--nginx-mesh-metrics-image "${DOCKER_REGISTRY}/nginx-mesh-metrics:${MESH_VER}"
Creado el espacio de nombres "nginx-mesh".
Creada la CRD de SpiffeID.
Esperando a que los pods de Spire estén en ejecución... listo.
Desplegado Spire.
Desplegado el servidor NATS.
Creadas las CRD de políticas de tráfico.
Desplegado el API de Mesh.
Desplegado el Servidor API de Métricas.
Desplegado el Servidor Prometheus nginx-mesh/prometheus-server.
Desplegado Grafana nginx-mesh/grafana.
Desplegado el servidor de trazado nginx-mesh/zipkin.
Todos los recursos creados. Probando la conexión al Servidor API de Service Mesh...
Conectado al API de NGINX Service Mesh con éxito.
NGINX Service Mesh está en funcionamiento.Para obtener parámetros adicionales, incluidas configuraciones avanzadas, ejecute este comando:
$ nginx-meshctl deploy -hVerificar que el plano de control esté funcionando correctamente en el espacio de nombres nginx-mesh, se puede hacer así:
$ kubectl get pods -n nginx-mesh
NOMBRE LISTO ESTADO REINICIOS EDAD
grafana-6cc6958cd9-dccj6 1/1 En ejecución 0 2d19h
mesh-api-6b95576c46-8npkb 1/1 En ejecución 0 2d19h
nats-server-6d5c57f894-225qn 1/1 En ejecución 0 2d19h
prometheus-server-65c95b788b-zkt95 1/1 En ejecución 0 2d19h
smi-metrics-5986dfb8d5-q6gfj 1/1 En ejecución 0 2d19h
spire-agent-5cf87 1/1 En ejecución 0 2d19h
spire-agent-rr2tt 1/1 En ejecución 0 2d19h
spire-agent-vwjbv 1/1 En ejecución 0 2d19h
spire-server-0 2/2 En ejecución 0 2d19h
zipkin-6f7cbf5467-ns6wc 1/1 En ejecución 0 2d19hDependiendo de los parámetros de despliegue que establecen políticas de inyección manual o automática, los proxies de NGINX sidecars se agregarán a las aplicaciones de forma predeterminada. Para desactivar la adición automática, lea
Por ejemplo, si desplegamos una aplicación nos permiten despertar cualquier proceso que necesite el bloqueo que acabamos de liberar: en el namespace default, y luego verificamos el Pod, veremos dos contenedores en ejecución, la aplicación nos permiten despertar cualquier proceso que necesite el bloqueo que acabamos de liberar: y su sidecar asociado:
$ kubectl apply -f sleep.yaml
$ kubectl get pods -n default
NOMBRE LISTO ESTADO REINICIOS EDAD
sleep-674f75ff4d-gxjf2 2/2 En ejecución 0 5h23mTambién podemos monitorear la aplicación nos permiten despertar cualquier proceso que necesite el bloqueo que acabamos de liberar: en el panel de NGINX Plus, ejecutando este comando para acceder al sidecar desde su máquina local:
$ kubectl port-forward sleep-674f75ff4d-gxjf2 8080:8886Luego simplemente accedemos en el navegador. También puede conectarse a Prometheus para monitorear la aplicación nos permiten despertar cualquier proceso que necesite el bloqueo que acabamos de liberar:.
Puede usar recursos de Kubernetes separados para configurar políticas de tráfico, como control de acceso, limitación de velocidad y circuit breaking. Para esto, consulte
Conclusión
NGINX Service Mesh está disponible para descargar de forma gratuita en . Pruébelo en sus entornos de desarrollo y prueba y .
Para probar NGINX Plus Ingress Controller, active de 30 días, o para discutir sus opciones de uso.
Traducción por Pavel Demkovich, ingeniero de la empresa . Administración de sistemas por 15,000 ₽ al mes. Y como una unidad separada, un centro de capacitación , práctica y nada más que práctica.
Fuente: habr.com
