miroir/examples/dev-config.yaml
jedarden 9ba6d545ca P11.7: Add quick-start example artifacts (Docker Compose + config)
Adds the on-disk examples referenced by plan §11 "Quick start (local, Docker Compose)":

- examples/docker-compose-dev.yml: 3 Meilisearch nodes + 1 Miroir orchestrator
- examples/dev-config.yaml: Matching Miroir config (16 shards, RF=1)
- examples/README.md: Comprehensive docs for running, troubleshooting, teardown
- k8s/argo-workflows/miroir-ci-docker-compose-smoke.yaml: CI smoke tests

The README.md quick start section already references these examples.

Acceptance:
 docker-compose-dev.yml boots via docker compose up
 dev-config.yaml mounted into Miroir container
 examples/README.md documents usage and teardown
 CI smoke job exercises compose stack (health + index + search tests)
 README.md quick start points to examples/docker-compose-dev.yml

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-20 06:49:05 -04:00

140 lines
2.7 KiB
YAML

# Miroir development configuration — matches examples/docker-compose-dev.yml
# 16 shards, RF=1, 3 Meilisearch nodes (single replica group)
# Client-facing API key (use 'dev-key' for local testing)
master_key: "dev-key"
# Key Miroir uses to authenticate to Meilisearch nodes
node_master_key: "dev-node-key"
# Topology: 16 logical shards spread across 3 nodes
shards: 16
replication_factor: 1
replica_groups: 1
# Node addresses (container names from docker-compose-dev.yml)
nodes:
- id: "meili-0"
address: "http://meili-0:7700"
replica_group: 0
- id: "meili-1"
address: "http://meili-1:7700"
replica_group: 0
- id: "meili-2"
address: "http://meili-2:7700"
replica_group: 0
# Task store (SQLite for single-replica dev; use Redis for multi-replica)
task_store:
backend: sqlite
path: /data/miroir-tasks.db
# For multi-replica deployments, uncomment and use Redis:
# backend: redis
# url: "redis://redis:6379"
# Admin API (disabled in dev — enable for management UI)
admin:
enabled: false
# Health check settings
health:
interval_ms: 5000
timeout_ms: 2000
unhealthy_threshold: 3
recovery_threshold: 2
# Scatter-gather query behavior
scatter:
node_timeout_ms: 5000
retry_on_timeout: true
unavailable_shard_policy: partial
# Rebalancer settings
rebalancer:
auto_rebalance_on_recovery: true
max_concurrent_migrations: 4
migration_timeout_s: 3600
# Server (HTTP listener)
server:
port: 7700
bind: "0.0.0.0"
# Connection pool per node
connection_pool_per_node:
max_idle: 8
max_total: 32
idle_timeout_s: 60
# Task registry cache and TTL pruner
task_registry:
cache_size: 1000
redis_pool_max: 10
ttl_seconds: 86400
prune_interval_s: 300
prune_batch_size: 1000
# Advanced capabilities (all enabled by default in v0.1+)
resharding:
enabled: true
hedging:
enabled: true
replica_selection:
strategy: adaptive
query_planner:
enabled: true
settings_broadcast:
strategy: two_phase
settings_drift_check:
enabled: true
session_pinning:
enabled: true
aliases:
enabled: true
anti_entropy:
enabled: true
dump_import:
mode: streaming
idempotency:
enabled: true
query_coalescing:
enabled: true
multi_search:
enabled: true
vector_search:
enabled: true
cdc:
enabled: true
buffer:
overflow: drop
ttl:
enabled: true
tenant_affinity:
enabled: true
shadow:
enabled: true
ilm:
enabled: true
canary_runner:
enabled: true
explain:
enabled: true
admin_ui:
enabled: false
search_ui:
enabled: false
rate_limit:
backend: local
# Horizontal scaling (dev defaults — disabled for single-replica)
peer_discovery:
service_name: miroir-headless
refresh_interval_s: 15
leader_election:
enabled: false
hpa:
enabled: false
# Observability
tracing:
enabled: false