Back to Meshery

Architecture

docs/static/v0.4/concepts/architecture/index.html

1.0.185.1 KB
Original Source

Architecture

Architectural Components and Their Languages

Meshery and its components are written using the following languages and technologies.

ComponentsLanguages and Technologies
Meshery ServerGolang, gRPC, GraphQL, SQLlite
Meshery AdaptersGolang, gRPC
Meshery WASM FiltersRust and C++
Meshery UIReactJS, NextJS, BillboardJS
Meshery Provider UIReactJS, NextJS
Meshery Remote Providersany - must adhere to Meshery Extension Points
Meshery OperatorGolang, NATS
MeshSyncGolang
Meshery DatabaseGolang, SQL

Deployments

Meshery deploys as a set of containers. Meshery’s containers can be deployed to either Docker or Kubernetes.

Clients

Meshery’s REST API may be consumed by any number of clients. Clients need to present valid JWT token.

Providers

As a point of extension, Meshery supports two types of providers: Local and Remote.

Object Model

This diagram outlines logical constructs within Meshery and their relationships.

Meshery Operator and MeshSync

Meshery Operator is the multi-service mesh operator (a Kubernetes custom controller) that manages MeshSync and it’s messaging broker.

See the Operator section for more information on the function of an operator and MeshSync section for more information on the function of meshsync.

Database

Meshery Server’s database is responsible for collecting and centralizing the state of all elements under management, including infrastructure, application, and Meshery’s own components. Meshery’s database, while persisted to file, is treated as a cache.

See the Database section for more information on the function of the database.

Network Ports

Meshery uses the following list of network ports to interface with its various components:

ComponentPort
Meshery REST API9081/tcp
Meshery GraphQL9081/tcp
Meshery Broker4222/tcp, 6222/tcp, 8222/tcp, 7777/tcp, 7422/tcp, 7522/tcp
Learn Meshery Application10011/tcp
Meshery Adapters10000+/tcp
Meshery Remote Providers443/tcp

Adapter Ports

Service MeshPort
Meshery Adapter for App Mesh10005/tcp
Meshery Adapter for Consul10002/tcp
Meshery Adapter for Citrix Service Mesh10008/tcp
Meshery Adapter for Istio10000/tcp
Meshery Adapter for Kuma10007/tcp
Meshery Adapter for Linkerd10001/tcp
Meshery Adapter for NGINX Service Mesh10010/tcp
Meshery Adapter for Network Service Mesh10004/tcp
Meshery Adapter for Octarine10003/tcp
Meshery Adapter for Open Service Mesh10009/tcp
Meshery Adapter for Tanzu Service Mesh10010/tcp
Meshery Adapter for Traefik Mesh10006/tcp

See the Adapters section for more information on the function of an adapter.

Statefulness in Meshery components

Some components within Meshery’s architecture are concerned with persisting data while others are only concerned with a long-lived configuration, while others have no state at all.

ComponentsPersistenceDescription
mesheryctlstatelesscommand line interface that has a configuration file
Meshery Adaptersstatelessinterface with service meshes on a transactional basis
Meshery Servercaches stateapplication cache is stored in user’s $HOME/.meshery/ folder
Meshery Providersstatefullocation of persistent user preferences, environment, tests and so on
Meshery Operatorstatelessoperator of Meshery custom controllers, notably MeshSync
MeshSyncstatelessKubernetes custom controller, continuously running discovery