...
This commit is contained in:
124
lib/osal/traefik/README.md
Normal file
124
lib/osal/traefik/README.md
Normal file
@@ -0,0 +1,124 @@
|
||||
# Traefik Module
|
||||
|
||||
This module provides functionality to manage Traefik configurations using Redis as a Key-Value store provider.
|
||||
|
||||
## Overview
|
||||
|
||||
The module allows you to:
|
||||
- Define HTTP/HTTPS routes
|
||||
- Configure backend services
|
||||
- Set up middlewares
|
||||
- Manage TLS certificates
|
||||
- Store configurations in Redis using Traefik's KV store format
|
||||
|
||||
## Usage Example
|
||||
|
||||
```v
|
||||
import freeflowuniverse.herolib.lib.osal.traefik
|
||||
|
||||
fn main() ! {
|
||||
// Create a new Traefik configuration
|
||||
mut config := traefik.new_traefik_config()
|
||||
|
||||
// Add a router with a service
|
||||
config.add_route(
|
||||
name: 'my-router'
|
||||
rule: 'Host(`example.com`)'
|
||||
service: 'my-service'
|
||||
middlewares: ['auth']
|
||||
tls: true
|
||||
)
|
||||
|
||||
// Add the corresponding service
|
||||
config.add_service(
|
||||
name: 'my-service'
|
||||
load_balancer: traefik.LoadBalancerConfig{
|
||||
servers: [
|
||||
traefik.ServerConfig{url: 'http://localhost:8080'},
|
||||
traefik.ServerConfig{url: 'http://localhost:8081'}
|
||||
]
|
||||
}
|
||||
)
|
||||
|
||||
// Add a basic auth middleware
|
||||
config.add_middleware(
|
||||
name: 'auth'
|
||||
typ: 'basicAuth'
|
||||
settings: {
|
||||
'users': '["test:$apr1$H6uskkkW$IgXLP6ewTrSuBkTrqE8wj/"]'
|
||||
}
|
||||
)
|
||||
|
||||
// Add TLS configuration
|
||||
config.add_tls(
|
||||
domain: 'example.com'
|
||||
cert_file: '/path/to/cert.pem'
|
||||
key_file: '/path/to/key.pem'
|
||||
)
|
||||
|
||||
// Store configuration in Redis
|
||||
config.set()!
|
||||
}
|
||||
```
|
||||
|
||||
## Redis Key Structure
|
||||
|
||||
The module uses the following Redis key structure as per Traefik's KV store specification:
|
||||
|
||||
- `traefik/http/routers/<name>/*` - Router configurations
|
||||
- `traefik/http/services/<name>/*` - Service configurations
|
||||
- `traefik/http/middlewares/<name>/*` - Middleware configurations
|
||||
- `traefik/tls/certificates` - TLS certificate configurations
|
||||
|
||||
## Configuration Types
|
||||
|
||||
### Router Configuration
|
||||
```v
|
||||
RouteConfig {
|
||||
name: string // Router name
|
||||
rule: string // Routing rule (e.g., "Host(`example.com`)")
|
||||
service: string // Service to forward to
|
||||
middlewares: []string // Middleware chain
|
||||
priority: int // Route priority
|
||||
tls: bool // Enable TLS
|
||||
}
|
||||
```
|
||||
|
||||
### Service Configuration
|
||||
```v
|
||||
ServiceConfig {
|
||||
name: string
|
||||
load_balancer: LoadBalancerConfig
|
||||
}
|
||||
|
||||
LoadBalancerConfig {
|
||||
servers: []ServerConfig
|
||||
}
|
||||
|
||||
ServerConfig {
|
||||
url: string
|
||||
}
|
||||
```
|
||||
|
||||
### Middleware Configuration
|
||||
```v
|
||||
MiddlewareConfig {
|
||||
name: string
|
||||
typ: string // Middleware type
|
||||
settings: map[string]string // Configuration settings
|
||||
}
|
||||
```
|
||||
|
||||
### TLS Configuration
|
||||
```v
|
||||
TLSConfig {
|
||||
domain: string // Domain name
|
||||
cert_file: string // Certificate file path
|
||||
key_file: string // Private key file path
|
||||
}
|
||||
```
|
||||
|
||||
## References
|
||||
|
||||
- [Traefik Redis Provider Documentation](https://doc.traefik.io/traefik/reference/install-configuration/providers/kv/redis/)
|
||||
- [Traefik KV Dynamic Configuration](https://doc.traefik.io/traefik/reference/dynamic-configuration/kv/)
|
||||
Reference in New Issue
Block a user