Master Configuration
The Fullest config.yaml Technical Reference
The config.yaml file is the "Central Nervous System" of your GO-DUCK microservice. It controls everything from high-performance server tuning to distributed resilience and multi-cloud object storage.
The "Fullest" Template
YAML 1.2go-duck:
name: "go-duck-master-app"
version: "1.0.0"
# --- Network & Server ---
server:
port: 8080
read-timeout: "30s"
write-timeout: "30s"
grpc:
addr: ":9000"
network: "tcp"
cors:
allow-origins: ["*"]
allow-methods: ["GET", "POST", "PUT", "PATCH", "DELETE", "OPTIONS"]
# --- Persistence (Hybrid Store) ---
datasource:
host: "localhost"
port: 5432
username: "postgres"
password: "password"
database: "go_duck_db"
max-open-conns: 25
mongodb:
enabled: true
uri: "mongodb://localhost:27017"
database: "go_duck_mongo"
# --- Messaging Hub ---
messaging:
mqtt:
enabled: true
broker: "tcp://localhost:1883"
nats:
enabled: true
url: "nats://localhost:4222"
# --- Object Storage ---
storage:
s3: { enabled: false, bucket: "bucket-name", region: "us-east-1" }
gcs: { enabled: false, bucket: "bucket-name", credentials-file: "keys.json" }
minio: { enabled: true, bucket: "dev", endpoint: "localhost:9000" }
# --- Search Engine ---
elasticsearch:
enabled: true
addresses: ["http://localhost:9200"]
auto_sync: true
Technical Guideline Reference
1. Project Identity (go-duck)
| Parameter | Purpose |
|---|---|
| name | The root Go module name. Used for all internal imports and project scaffolding. |
| version | Semantic versioning injected into Swagger docs and internal build manifests. |
2. Hybrid Persistence (datasource)
| Parameter | Purpose |
|---|---|
| host/port/database | PostgreSQL connection details for the Relational Silo and Multi-Tenant Registry. |
| max-open-conns | GORM connection pool limit. Critical for preventing port exhaustion in federated environments. |
| mongodb.enabled | Toggles the NoSQL Document engine. If true, the app supports @isDocument and recursive GDL structures. |
3. Unified Messaging Hub (messaging)
| Parameter | Purpose |
|---|---|
| mqtt.broker | Real-time notification hub. Broadcasts schema mutations directly to the frontend for UI reactivity. |
| nats.url | High-performance internal streaming. Powering the CQRS logic and cross-microservice events. |
4. Universal Storage Bridge (storage)
GO-DUCK provides a unified Go Interface for 7 different providers. Switch providers by simply changing the 'enabled' flag.
| Provider | Key Configuration |
|---|---|
| AWS S3 / R2 | bucket, region, access-key, secret-key |
| Google GCS | credentials-file (JSON service account path) |
| SFTP / SSH | host, port, username, key-file |
| GitHub Bootstrap | owner, repo, token, files (Automated infrastructure discovery) |
Distributed Resilience
- Circuit Breaker: Prevents cascading failures when DB/MQ or Search is down.
- Rate Limit: Distributed Redis-backed throttler (RPS/Burst) targeting by Keycloak Identity.
Industrial Search
- Elasticsearch: Full-text engine with Spring-style query string mapping.
- Auto Sync: Real-time indexing triggered by Repository mutators.