No description
- Go 90.8%
- Shell 3.5%
- Makefile 2.8%
- Nix 1.7%
- Dockerfile 0.7%
- Other 0.5%
|
All checks were successful
ci / test (push) Successful in 5m38s
Defer the disagglb.io/locationpools extension to Gateway/ListenerSet/HTTPRoute. Agreed design: per-hostname restriction from the owning resource chain, which requires vendoring + consuming HTTPRoute.spec.hostnames. |
||
|---|---|---|
| .devcontainer | ||
| .forgejo/workflows | ||
| api | ||
| charts/disagglb | ||
| cmd | ||
| config | ||
| deploy/forgejo | ||
| docs | ||
| hack | ||
| internal | ||
| nix/golangci-lint | ||
| plugins | ||
| protocol | ||
| test | ||
| .custom-gcl.yml | ||
| .dockerignore | ||
| .gitignore | ||
| .golangci.yml | ||
| AGENTS.md | ||
| Dockerfile | ||
| flake.lock | ||
| flake.nix | ||
| go.mod | ||
| go.sum | ||
| LICENSE | ||
| Makefile | ||
| mkdocs.yml | ||
| PROJECT | ||
| README.md | ||
| ROADMAP.md | ||
| TASKS.md | ||
DisaggLB
A Kubernetes LoadBalancer operator for disaggregated networks: several homelab sites, each with its own ISP, no BGP, one NATed public IPv4 per site, and L3-routable IPv6. IPs are location-bound and can never move — failover and migration happen through DNS (ExternalDNS + multi-value A/AAAA RRsets), not through IP mobility.
Status: early development. The design is settled; M0 (scaffold & CRDs) is in progress. See below.
Documentation
ROADMAP.md— milestones and requirements traceabilitydocs/DESIGN.md— the agreed architecture (locked decisions)docs/milestones/— detailed per-milestone specsTASKS.md— task-level progress trackerAGENTS.md— contributor/agent conventions (commit style, e2e gate)
Quick summary
- Standard
Service+loadBalancerClass: disagglb.io/site; optionalLoadBalancerConfigCRD for rich config (locations, DNS, health, drain). LocationPoolCRD models each site's location-bound inventory.- IPv6 via DHCPv6-PD; IPv4 via UPnP/NAT-PMP/PCP/webhook/manual port mapping.
- Envoy site proxies (xDS from the manager), prefer-local with cross-site fallback.
- DNS via ExternalDNS (
--source=crd); phase 2 adds a dedicated authoritative NS (dnsd) with weighted/GeoIP answers.
License
Apache-2.0, see LICENSE.