Skip to content

Commit 56632c3

Browse files
committed
Prepare for hex.pm publication
1 parent ff8eb9e commit 56632c3

2 files changed

Lines changed: 24 additions & 15 deletions

File tree

docs/README.md

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,12 @@ Service mesh support for Elixir.
44
`Meshx` is released as group of separate Elixir packages, summary for each package is provided below.
55

66
### MeshxConsul
7-
`MeshxConsul` is a service mesh adapter implementing `Meshx.ServiceMesh` behaviour using HashiCorp [Consul](https://www.consul.io/) as external service mesh solution. Package is used to manage mesh service and upstream endpoints, consumed by user service providers and upstream clients.
7+
[![Hex Version](https://img.shields.io/hexpm/v/meshx_consul)](https://hex.pm/packages/meshx_consul)
8+
[![Hex Docs](https://img.shields.io/badge/hex-docs-lightgreen)](https://hexdocs.pm/meshx_consul)
89

9-
`MeshxConsul` using external dependencies (Consul as control plane and Envoy/other as data plane), complements user client/server applications with powerful service mesh features:
10+
`MeshxConsul` is a service mesh adapter implementing `Meshx.ServiceMesh` behaviour using HashiCorp [Consul](https://www.consul.io/) as an external service mesh solution. Package manages mesh service and upstream endpoints, which are later consumed by user service providers and upstream clients.
11+
12+
`MeshxConsul` by using external dependencies, Consul as control plane and Envoy/other proxy as data plane, complements user client/server applications with powerful service mesh features:
1013
* [mTLS](https://www.consul.io/docs/connect/connect-internals#mutual-transport-layer-security-mtls) connections,
1114
* service-to-service permissions: [intentions](https://www.consul.io/docs/connect/intentions),
1215
* mesh service [health checks](https://www.consul.io/docs/discovery/checks),
@@ -18,20 +21,22 @@ Service mesh support for Elixir.
1821
* `MeshxRpc` - RPC (Remote Procedure Call) functionality,
1922
* `MeshxNode` - service mesh distribution module.
2023

21-
**MeshxConsul**: [[github](https://github.com/andrzej-mag/meshx_consul/)].
22-
2324
### MeshxRpc
24-
`MeshxRpc` can be considered as alternative to Erlang OTP [`:erpc`](https://erlang.org/doc/man/erpc.html) (or [`:rpc`](https://erlang.org/doc/man/rpc.html)) modules. `MeshxRpc` restricts request execution scope to single RPC server module to improve operational node security. `MeshxRpc` provides built-in features crucial for binary data transfers: chunking user data into smaller blocks to avoid IO socket blocking and transmission error detection with user configurable asynchronously executed block checksum functions.
25+
[![Hex Version](https://img.shields.io/hexpm/v/meshx_rpc)](https://hex.pm/packages/meshx_rpc)
26+
[![Hex Docs](https://img.shields.io/badge/hex-docs-lightgreen)](https://hexdocs.pm/meshx_rpc)
27+
28+
`MeshxRpc` can be considered as alternative to Erlang OTP [`:erpc`](https://erlang.org/doc/man/erpc.html) (or [`:rpc`](https://erlang.org/doc/man/rpc.html)) module. `MeshxRpc` restricts request execution scope to single RPC server module to improve operational node security. `MeshxRpc` provides built-in features crucial for binary data transfers: chunking user data into smaller blocks to avoid IO socket blocking and transmission error detection with user configurable asynchronously executed block checksum functions.
2529

2630
`MeshxRpc` is using custom binary communication protocol, hence it doesn't depend on Erlang distribution protocol. `MeshxRpc` fits best in cases where user application requires execution of plain remote functions and doesn't require remote process management features like process linking or monitoring available only for natively distributed nodes. `MeshxRpc` can be used with nodes connected with Erlang distribution if justified by package additional features, otherwise OTP `:erpc` should be used.
2731

2832
`MeshxRpc` primary objective is to work paired with service mesh adapter (`MeshxConsul`) as a user mesh service, however it can be used with any other data transport solution, eg. ssh port forwarding or VPN. For special use cases it can work standalone: `MeshxRpc` server and client running on the same host and sharing common connection socket.
2933

30-
`MeshxRpc` designed to work primarily as mesh service doesn't offer data encryption or any access control mechanisms as those are natively provided by service mesh environment.
31-
32-
**MeshxRpc**: [[github](https://github.com/andrzej-mag/meshx_rpc/)].
34+
`MeshxRpc` doesn't offer data encryption, authorization or authentication mechanisms as those are natively provided by service mesh environment.
3335

3436
### MeshxNode
37+
[![Hex Version](https://img.shields.io/hexpm/v/meshx_node)](https://hex.pm/packages/meshx_node)
38+
[![Hex Docs](https://img.shields.io/badge/hex-docs-lightgreen)](https://hexdocs.pm/meshx_node)
39+
3540
`MeshxNode` delivers Erlang style nodes connectivity by registering special "node service" using service mesh adapter. Communication between nodes is realized using service mesh sidecar proxies and upstreams. Data traffic is secured with mTLS, managed by service mesh application control plane (e.g. Consul).
3641

3742
MeshxNode can be considered as alternative to Erlang Port Mapper Daemon ([EPMD](https://erlang.org/doc/man/epmd.html)) and distribution module (usually [`:inet_tls_dist`](http://erlang.org/doc/apps/ssl/ssl_distribution.html) or `:inet_dist`).
@@ -40,11 +45,10 @@ MeshxNode can be considered as alternative to Erlang Port Mapper Daemon ([EPMD](
4045

4146
Users are free to use any mesh service management features provided by external mesh application or L4 proxy software. Consul service intentions, tokens or ACLs to manage "node service" access permissions might be an interesting feature to consider here.
4247

43-
**MeshxNode**: [[github](https://github.com/andrzej-mag/meshx_node/)].
44-
4548
### Meshx
46-
`Meshx` package doesn't offer any end-user functionality. `Meshx` should be used by developers building new service mesh adapters implementing `Meshx.ServiceMesh` behavior.
49+
[![Hex Version](https://img.shields.io/hexpm/v/meshx)](https://hex.pm/packages/meshx)
50+
[![Hex Docs](https://img.shields.io/badge/hex-docs-lightgreen)](https://hexdocs.pm/meshx)
4751

48-
Service mesh adapter in practice should be reasonably thin layer between user application using `Meshx` packages and external software providing service mesh solution. Mesh adapter should use 3rd party application API to implement functionality required by `Meshx.ServiceMesh` behavior. As described earlier `Meshx` is released with HashiCorp Consul adapter - `MeshxConsul`.
52+
`Meshx` package doesn't offer any end-user functionality. `Meshx` should be used by developers building new service mesh adapters implementing `Meshx.ServiceMesh` behavior.
4953

50-
**Meshx**: [[github](https://github.com/andrzej-mag/meshx/)].
54+
Service mesh adapter in practice should be reasonably thin layer between user application using `Meshx` packages and external software providing service mesh solution. Mesh adapter should use third party application API to implement functionality required by `Meshx.ServiceMesh` behavior. As described earlier `Meshx` is released with HashiCorp Consul adapter - `MeshxConsul`.

mix.exs

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
defmodule Meshx.MixProject do
22
use Mix.Project
33

4-
@version "0.1.0-dev"
54
@source_url "https://github.com/andrzej-mag/meshx"
5+
@version "0.1.0"
66

77
def project do
88
[
@@ -36,7 +36,12 @@ defmodule Meshx.MixProject do
3636
main: "readme",
3737
source_url: @source_url,
3838
source_ref: "v#{@version}",
39-
extras: ["docs/README.md"]
39+
extras: ["docs/README.md"],
40+
deps: [
41+
meshx_consul: "https://hexdocs.pm/meshx_consul",
42+
meshx_node: "https://hexdocs.pm/meshx_node",
43+
meshx_rpc: "https://hexdocs.pm/meshx_rpc"
44+
]
4045
]
4146
end
4247
end

0 commit comments

Comments
 (0)