Arquitectura
Componentes, su propósito y Lenguajes
Meshery y sus componentes están escritos utilizando los siguientes lenguajes de programación y tecnologías.
Componentes | Lenguajes y Tecnologías |
---|---|
Meshery Server | Golang, gRPC, GraphQL, SMP |
Meshery Adapters | Golang, gRPC, CloudEvents, SMI, OAM |
Meshery WASM Filters | Rust y C++ |
Meshery UI | ReactJS, NextJS, BillboardJS |
Meshery Provider UI | ReactJS, NextJS |
Meshery Remote Providers | cualquiera - debe adherirse a los Extension Points de Meshery |
Meshery Operator | Golang |
MeshSync | Golang |
Broker | Golang, NATS |
Meshery Database | Golang, SQLlite |
Despliegues
Meshery se despliega como un conjunto de contenedores. Los contenedores de Meshery pueden ser desplegados en Docker o Kubernetes. Los componentes de Meshery se conectan entre sí a través de peticiones gRPC. Meshery Server almacena la ubicación de los otros componentes y se conecta con estos componentes según sea necesario. Típicamente, una conexión de Meshery Server a Meshery Adapters es iniciada desde un petición de cliente (generalmente mesheryctl
o Meshery UI) para recopilar información del Adapter o invocar una operación del Adapter.
Adapters
En Meshery v0.6.0, los Adapters se registrarán con Meshery Server a través de HTTP POST. Si Meshery Server no está disponible, los Meshery Adapters se apartan y vuelven a reintentar conectarse a Meshery Server perpetuamente.
Figure: Despliegue de Meshery dentro o fuera de un clúster de Kubernetes
Adapters y Registro de Capacidades
Cada Meshery Adapter ofrece su propia funcionalidad específica de un servicio único. Como tal, en el momento del despliegue, el Meshery Adapter registrará sus capacidades específicas de service mesh (sus operaciones) con el registro de capacidades de Meshery Server.
Figure: Registro de Operación de Service Mesh Adapter
Clientes
La REST API de Meshery puede ser consumida por cualquier número de clientes. Los clientes necesitan presentar un token JWT válido.
Figure: Los clientes usan REST API, GraphQL API de Meshery o una combinación de ambos.
Providers
Como un punto de extensión, Meshery soporta dos tipos de providers: Local y Remoto.
Modelo de Objetos
Este diagrama describe las construcciones lógicas dentro de Meshery y sus relaciones.
Meshery Operator y MeshSync
Meshery Operator es el operador multi-service mesh (un controlador de Kubernetes personalizado) que administra MeshSync y su agente de mensajes.
Ver la sección Operator para obtener más información sobre la función de un operador y la sección MeshSync para obtener más infromación sobre la función de MeshSync.
Base de datos
La base de datos de Meshery es responsable de recopilar y centralizar el estado de todos los elementos bajo administración, incluyendo la infraestructura, la aplicación y los propios componentes de Meshery. La base de datos de Meshery, a la vez que persiste para archivar, es tratada como caché.
Ver la sección Database para obtener más información sobre la función de la base de datos.
Statefulness en los componentes de Meshery
Algunos componentes dentro de la arquitectura de Meshery se ocupan de la persistencia de datos, mientras que otros solo se relacionan con una configuración de larga duración, mientras que otros no tienen ningún estado en absoluto.
Componente | Persistencia | Descripción |
---|---|---|
mesheryctl | stateless | interfaz de línea de comandos que tiene un archivo de configuración |
Meshery Adapters | stateless | interfaz con service meshes sobre una base transaccional |
Meshery Server | caches state | la memoria caché de la aplicación se almacena en la carpeta $HOME/.meshery/ del usuario |
Meshery Providers | stateful | ubicación de las preferencias de usuario persistentes, ambiente, pruebas y etc. |
Meshery Operator | stateless | operador de controladores personalizados de Meshery, espacialmente MeshSync |
MeshSync | stateless | Controlador personalizado de Kubernetes, continuamente ejecutando el descubrimiento |
Puertos de Red
Meshery usa la siguiente lista de puertos de red para interactuar con sus diversos componenetes:
Componente | Puerto |
---|---|
Meshery REST API | 9081/tcp |
Meshery GraphQL | 9081/tcp |
Meshery Broker | 4222/tcp, 6222/tcp, 8222/tcp, 7777/tcp, 7422/tcp, 7522/tcp |
Learn Layer5 Application | 10011/tcp |
Meshery Adapters | 10000+/tcp |
Meshery Remote Providers | 443/tcp |
Puertos de Adapter
Service Mesh | Port |
---|---|
Meshery Adapter for App Mesh | 10005/gRPC |
Meshery Adapter for Cilium Service Mesh | 10012/gRPC |
Meshery Adapter for Consul | 10002/gRPC |
Meshery Adapter for Citrix Service Mesh | 10008/gRPC |
Meshery Adapter for Istio | 10000/gRPC |
Meshery Adapter for Kuma | 10007/gRPC |
Meshery Adapter for Linkerd | 10001/gRPC |
Meshery Adapter for NGINX Service Mesh | 10010/gRPC |
Meshery Adapter for Network Service Mesh | 10004/gRPC |
Meshery Adapter for Open Service Mesh | 10009/gRPC |
Meshery Adapter for Tanzu Service Mesh | 10011/gRPC |
Meshery Adapter for Traefik Mesh | 10006/gRPC |
Ver la sección Adapters para obtener más información sobre la función del adapter.