warden
An experimental rewrite of the core Tazama platform processors in Rust.
Project Structure
| Directory | Description |
|---|---|
/crates |
Core distributed applications |
/lib |
Shared utilities and libraries |
/contrib/ |
Goodies which may be useful for contributors |
/docs/ |
Detailed architecture and design documentation |
Building
Dependencies
- [
protoc] - protobuf compiler - [
cargo] - Rust's package manager - [
rustc] - MSRV 1.89 - docker - (optional)
[!TIP] If planning to run on docker, you do not need the other 3 dependencies
Clone the repository:
git clone https://github.com/rtkay123/warden.git
cd warden
Warden also depends on (protobuf) types from googleapis, which is declared as a submodule. Update that before proceeding.
git submodule update --init --depth 1 --recommend-shallow
You may then proceed with building the platform through [cargo]:
cargo build
Configure Applications
Each application requires a configuration file in TOML format. Before running, it could be useful to checkout what each application expects through the config.
In the [crates] directory, there are subfolders representing each binary.
Each of these subfolders contains a .toml file used as the default config.
External Services
Warden provides sample Docker compose files for the services used by the platform at runtime:
compose.yaml: contains core components which are needed for the platform to runcompose.monitoring.yaml: contains optional tools for distributed for monitoring and distributed tracing
[!NOTE] The applications may still make noise about monitoring tools not being available in logs, but these are safe to ignore
[!TIP] Silence the noise by adjusting your log level in the configuration
Each application requires a configuration file in TOML format. Before running, it could be useful to checkout what each application expects through the config.
In the crates directory, there are subfolders representing each binary.
Each of these subfolders contains a .toml file used as the default config.
Run Applications
Native
An example for the configuration API:
cargo run -p warden-config
Docker
Build and run the images. An example for the configuration API:
docker build -f crates/configuration/Dockerfile -t warden-config:latest .
docker run -p 1304:1304 warden-config:latest
[!TIP] Some processors leverage conditional compilation to toggle additional features. Checkout each processor's documentation to see what else it is capable of
Testing End-to-End
An example for using [Bruno] for API testing is avaiable through the sample collection and environment . This collection supplies initial configuration data and can be used for triggering the end-to-end flow
[!IMPORTANT] You can run the applications in any order after the pseudonyms and configuration service are running
License
This project is licensed under AGPL-3.0
Disclaimer
This project is not affiliated with, or endorsed by Tazama. It is an independent rewrite created for educational and experimental purposes only. All contributions to the original project should go to the official repository.
