mirror of
https://github.com/immich-app/yucca-o11y.git
synced 2026-09-30 13:23:23 +08:00
42 lines
2.8 KiB
Markdown
42 lines
2.8 KiB
Markdown
# Yucca O11y
|
|
|
|
The centralized observability platform for FUTO services. A single Talos Kubernetes cluster per environment, stretched across multiple OVH datacentres and managed by Flux. It hosts the metrics, dashboards, and alerting stack, and is the **central metrics store** that other FUTO clusters remote-write into.
|
|
|
|
Built for geographic resilience with single-cluster operational simplicity: three control planes in low-latency DCs hold one etcd quorum, three bare-metal workers carry the observability workload, and everything talks over a private OVH vRack.
|
|
|
|
**Status:** both environments are built and running — `o11y-staging` and `o11y-production`.
|
|
|
|
## Documentation
|
|
|
|
| Guide | Covers |
|
|
| --- | --- |
|
|
| [01 — Bootstrap](./docs/01-bootstrap-guide.md) | Standing up an environment: one-time prep, Terragrunt apply order, operator access, common operations |
|
|
| [02 — Infrastructure architecture](./docs/02-infrastructure-architecture-guide.md) | OVH compute, hardware specs, vRack networking, IPLB ingress, cost |
|
|
| [03 — Cluster architecture](./docs/03-cluster-architecture-guide.md) | Talos, Kubernetes, host firewall, and Flux GitOps |
|
|
| [04 — Application architecture](./docs/04-application-architecture-guide.md) | Envoy ingress, VictoriaMetrics central store, Grafana, CloudNativePG, supporting operators |
|
|
| [Runbook: tenant cutover](./docs/runbooks/vm-tenant-migration/README.md) | Moving a store's metrics from tenant 0 onto per-cluster tenants, staging first |
|
|
|
|
## Repository layout
|
|
|
|
```text
|
|
deployment/modules/
|
|
├── ovh/account/ # cloud project, vRack, private network, CPs, workers, IPLB, DNS
|
|
├── netbird/cluster/ # per-env mesh: vRack route, mesh-gateway VIP + DNS, pod egress, policies
|
|
├── grafana/cluster/ # Grafana service account for the Rootly integration
|
|
├── netbox/cluster/ # IPAM registration of the ranges the other modules allocate
|
|
├── talos/cluster/ # machine secrets, CP + worker configs, bootstrap, ingress firewall
|
|
└── kubernetes/helm/ # CoreDNS, Flux Operator + Instance, bootstrap-settings, env secrets
|
|
|
|
kubernetes/
|
|
├── apps/
|
|
│ ├── base/<app>/ # ks.yaml (the app's Flux Kustomization) + app/ (chart source + manifests)
|
|
│ └── <env>/<ns>/ # namespace overlay: which base apps run; deltas from base as patches/<app>.yaml
|
|
├── components/ # shared kustomize Components (targetNamespace replacement)
|
|
└── clusters/
|
|
└── <env>/
|
|
├── apps.yaml # cluster-apps entry point (the Flux Instance points here)
|
|
└── cluster-settings.yaml # per-env CLUSTER_* ConfigMap (BOOTSTRAP_* comes from Terraform)
|
|
```
|
|
|
|
State lives in S3 under `yucca/o11y/v3/<module>/<env>`. Secrets and OVH/NetBird tokens come from 1Password via `op run` and `deployment/.env`.
|