cozystack/packages/apps
Timofei Larkin caeb6aac7d
[vpc] Add VPC peering support for multi-tenant environments (#2152)
## Summary

- Add bilateral VPC peering using Kube-OVN's native `vpcPeerings`
mechanism
- Auto-allocate link-local peering IPs (`169.254.0.0/16`)
deterministically from sorted VPC pair hash
- Add static routes support (`staticRoutes`) for fine-grained inter-VPC
routing
- Enrich ConfigMap with peer discovery info
- Add JSON Schema validation with `^tenant-` namespace pattern
enforcement

Closes #2151

## How it works

Each tenant independently declares peers in their VPC spec. The template
computes the remote VPC's internal ID using the same deterministic hash
formula, and derives complementary peering IPs from a sorted pair key.
Kube-OVN only activates the peering tunnel when **both sides** declare
each other — no custom controller needed.

Example (Tenant A):
```yaml
spec:
  subnets:
    - name: web
      cidr: "172.16.0.0/24"
  peers:
    - vpcName: "backend-vpc"
      tenantNamespace: "tenant-beta"
```

## Test plan

- [ ] `helm template` without peers → no `vpcPeerings` in output
(backward compatible)
- [ ] `helm template` with peers → correct `vpcPeerings` with
auto-allocated IPs
- [ ] Reciprocal peering: both sides reference each other with
complementary IPs in same /30
- [ ] Schema rejects `tenantNamespace` not matching `^tenant-`
- [ ] Deploy two VPCs with reciprocal peering on a live cluster →
Kube-OVN activates tunnel
- [ ] Remove one side → peering deactivated

🤖 Generated with [Claude Code](https://claude.com/claude-code)

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

* **New Features**
* VPC Peering: declare peer VPCs (tenant + name) to enable conditional
peering and automatic per-peer connection entries.
* Per-peer metadata: subnet/config outputs include peer-specific
connection details (remote VPC ID and local connect IP).
* Static Routes: optionally add custom CIDR routes with next-hop IPs for
a VPC.
* Values/schema: configuration and schema now accept peers and routes
arrays.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-03-19 11:18:57 +04:00
..
bucket fix(bucket): remove duplicate credentials from dashboard 2026-03-04 17:02:36 +03:00
clickhouse refactor: move scripts to hack directory 2026-01-15 16:06:56 +01:00
foundationdb [docs] Fixed FoundationDB title 2026-03-06 10:56:52 +05:00
harbor Fixed typos in readme 2026-03-06 13:08:30 +05:00
http-cache Prepare release v1.0.0-beta.6 2026-02-17 22:36:40 +00:00
kafka refactor: move scripts to hack directory 2026-01-15 16:06:56 +01:00
kubernetes fix(csi): fail publish when migration cannot complete 2026-03-18 16:11:28 +01:00
mariadb Fixed typos in readme 2026-03-06 13:08:30 +05:00
mongodb fix(mongodb): update MongoDB logo 2026-02-10 21:17:50 +01:00
nats Add monitoring for NATs 2026-02-17 22:54:12 +01:00
openbao feat(openbao): add application chart with standalone and HA modes 2026-02-17 20:03:01 +03:00
opensearch [opensearch] Add validation to ensure at least one node role is enabled 2026-03-18 10:08:12 +01:00
postgres refactor: move scripts to hack directory 2026-01-15 16:06:56 +01:00
qdrant [qdrant] Add Qdrant vector database application 2026-02-06 13:30:58 +03:00
rabbitmq [rabbitmq] Added app version selection 2026-03-02 15:36:20 +05:00
redis refactor: move scripts to hack directory 2026-01-15 16:06:56 +01:00
tcp-balancer refactor: move scripts to hack directory 2026-01-15 16:06:56 +01:00
tenant feat(lineage-webhook): import scheduling constants from cozystack-scheduler 2026-03-18 14:08:29 +03:00
vm-disk refactor: move scripts to hack directory 2026-01-15 16:06:56 +01:00
vm-instance fix(migration): preserve VM MAC address during virtual-machine to vm-instance migration 2026-03-10 12:41:50 +01:00
vpc [cozy-lib] Add a hexToInt helper 2026-03-19 07:29:50 +03:00
vpn refactor: move scripts to hack directory 2026-01-15 16:06:56 +01:00
Makefile refactor: move scripts to hack directory 2026-01-15 16:06:56 +01:00
README.md [clickhouse] add clickhouse keeper 2025-08-07 14:07:05 +03:00

How to test packages local

cd packages/core/installer
make image-cozystack REGISTRY=YOUR_CUSTOM_REGISTRY
make apply
kubectl delete po -l app=source-controller -n cozy-fluxcd