Skip to content

Commit be1443e

Browse files
authored
README and architecture updates (#162)
* README and architecture updates Signed-off-by: Dawid Nowak <nowakd@gmail.com> * README and architecture updates Signed-off-by: Dawid Nowak <nowakd@gmail.com> * README and architecture updates Signed-off-by: Dawid Nowak <nowakd@gmail.com> --------- Signed-off-by: Dawid Nowak <nowakd@gmail.com>
1 parent c64276d commit be1443e

File tree

3 files changed

+218
-25
lines changed

3 files changed

+218
-25
lines changed

README.md

Lines changed: 30 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -4,19 +4,22 @@
44
[![LICENSE](https://img.shields.io/github/license/kmesh-net/orion)](/LICENSE) [![codecov](https://codecov.io/gh/kmesh-net/kmesh/graph/badge.svg?token=0EGQ84FGDU)](https://img.shields.io/github/license/kmesh-net/orion) [![FOSSA Status](https://app.fossa.com/api/projects/git%2Bgithub.com%2Fkmesh-net%2Forion.svg?type=shield)](https://app.fossa.com/projects/git%2Bgithub.com%2Fkmesh-net%2Forion?ref=badge_shield)
55
-->
66

7-
## Introduction
7+
# Introduction
88

99
Orion Proxy is a high performance and memory safe implementation of popular [Envoy Proxy](https://www.envoyproxy.io/). Orion Proxy is implemented in Rust using high-quality open source components.
1010

11-
### Key Features
1211

13-
**Memory Safety**
12+
## Key features
1413

15-
Rust programming language allows to avoid a whole lot of bugs related to memory management and data races making Orion Proxy a very robust and secure application.
1614

17-
**Performance**
15+
### Memory Safety
1816

19-
Orion Proxy offers 2x-4x better throughput and latency than Envoy Proxy. Refer to [Performance](docs/performance/performance.md) to see performance figures and for more details how we tested Orion Proxy.
17+
Rust programming language allows Orion Proxy implementation to avoid a whole set of bugs related to memory management and data races making Orion Proxy a very robust and secure application.
18+
19+
20+
### Performance
21+
22+
Orion Proxy offers 2x-4x better throughput and latency than Envoy Proxy. Refer to [Performance](docs/performance/performance.md) to see more performance figures and more details on how Orion Proxy was tested.
2023

2124
<table>
2225
<tr>
@@ -35,15 +38,21 @@ Orion Proxy offers 2x-4x better throughput and latency than Envoy Proxy. Refer t
3538
</tr>
3639
</table>
3740

38-
**Compatibility**
41+
### Use Cases and Compatibility
3942

40-
Orion Proxy configuration is generated from Envoy's xDS protobuf definitions. Orion Proxy aims to be a drop in replacement for Envoy.
43+
Orion Proxy configuration is generated from Envoy's xDS protobuf definitions. Orion Proxy aims to be a drop in replacement for Envoy for the most common or popular use-cases.
44+
45+
**Kubernetes Gateway** - Orion Proxy can be used as Kubernetes Gateway API and Orion Proxy is passing basic conformance tests. See [Kubvernor documentation](https://github.com/kubvernor/kubvernor/blob/main/conformance/GATEWAY_API_CONFORMANCE.md) on how to run conformance tests with Orion Proxy.
46+
**Kubernetes Gateway for Inference Flows** - Orion Proxy can also be used to route Inference Flows and it is passing Gateway API Inference Extension conformance tests. See [Kubvernor documentation](https://github.com/kubvernor/kubvernor/blob/main/conformance/GATEWAY_API_INFERENCE_EXTENSION_CONFORMANCE.md) on how to run inference extension conformance tests with Orion Proxy.
4147

4248
## Architecture
4349

4450
Orion Proxy is designed as a high-performance L7 proxy compatible with Envoy's xDS API while delivering superior performance through Rust's zero-cost abstractions and memory safety guarantees.
4551

46-
<img src="docs/pics/architecture/orion_architecture.png" alt="Orion Architecture" style="zoom: 80%;" />
52+
Orion Proxy has been built on a share-nothing principle. In the default configuration, Orion Proxy tries to create and pin one instance of Tokio Runtime per CPU/Thread, so the spawned tasks and actions are always executed in the local context minimizing cross CPU communication.
53+
Other modes are available through configuration settings.
54+
55+
![Architecture](docs/pics/orion.architecture.drawio.png)
4756

4857
### Core Components
4958

@@ -64,8 +73,6 @@ Orion Proxy is designed as a high-performance L7 proxy compatible with Envoy's x
6473
- **Memory Safety**: Eliminates entire classes of bugs (use-after-free, data races) through Rust's type system
6574
- **Envoy Compatibility**: Direct protobuf compatibility with Envoy xDS APIs for seamless integration with Istio and other control planes
6675

67-
## Quick Start
68-
6976
### Building
7077

7178
```console
@@ -76,6 +83,12 @@ git submodule update --force
7683
cargo build
7784
```
7885

86+
### Kubernetes Integration
87+
A great use case for Orion Proxy is to use Orion Proxy as Gateway API Service in Kubernetes environments.
88+
89+
Orion Proxy can be used as Kubernetes Gateway API and Orion Proxy is passing basic conformance tests. See [Kubvernor documentation](https://github.com/kubvernor/kubvernor/blob/main/conformance/GATEWAY_API_CONFORMANCE.md) on how to run conformance tests with Orion Proxy.
90+
91+
7992
### Running
8093

8194
```console
@@ -99,24 +112,15 @@ curl -v http://localhost:8000/direct-response # Should return HTTP 200 with "meo
99112

100113
For detailed Docker configuration options, see [docker/README.md](docker/README.md).
101114

102-
## CPU/Thread Limit Configuration
115+
## Orion Configuration
103116

104-
Orion can be configured to use a specific number of CPU cores/threads by setting the `ORION_CPU_LIMIT` environment variable. This is especially useful in containerized environments where access to `/sys/fs` may be restricted.
117+
Orion has two levels of configuration options.
105118

106-
### Kubernetes Example (Downward API)
119+
**Runtime configuration** allows controlling how Orion uses the CPUs of the operating system. Orion exposes tuning parameters allowing fine-tuning how Orion's worker threads are pinned to CPUs/Threads.
107120

108-
Add the following to your container spec to set `ORION_CPU_LIMIT` to the container's CPU limit:
121+
**Bootstrap configuration** is the same as for Envoy bootstrap configuration.
109122

110-
```yaml
111-
env:
112-
- name: ORION_CPU_LIMIT
113-
valueFrom:
114-
resourceFieldRef:
115-
resource: limits.cpu
116-
divisor: "1"
117-
```
118-
119-
Orion will automatically use this value to determine the number of threads/cores.
123+
See [example config file](orion-proxy/conf/orion-runtime.yaml) for more details.
120124

121125
## Testing with Backend Servers
122126

@@ -167,4 +171,5 @@ For detailed information, see [examples/tlv-filter-demo/README.md](examples/tlv-
167171

168172
Orion Proxy is licensed under the [Apache License, Version 2.0](./LICENSE).
169173

174+
170175
[![FOSSA Status](https://app.fossa.com/api/projects/git%2Bgithub.com%2Fkmesh-net%2Forion.svg?type=large)](https://app.fossa.com/projects/git%2Bgithub.com%2Fkmesh-net%2Forion?ref=badge_large)

0 commit comments

Comments
 (0)