feat: add multicluster support to local-setup
- Dominant language
- Python
- Stars
- 7
- Forks
- 29
- Avg merge
- 1d 9h
- Merged PRs (30d)
- 7
Description
### Problem
Currently, `make local-setup` only provisions a single cluster, making it impossible to run multicluster tests locally:
- Multicluster tests skip locally due to missing second cluster
- Developers cannot test DNS, TLS, and load balancing across clusters
- Local development doesn't support multicluster scenarios
- Requires external environment to test multicluster features
### Proposed Solution
#### 1. Provision Second Cluster
Extend `make local-setup` to optionally create a second cluster (e.g., `kind create cluster --name cluster2`)
#### 2. Configure Multicluster Networking
Set up networking between clusters:
- Configure cluster peering or gateway connectivity
- Ensure clusters can communicate with each other
- Set up DNS resolution between clusters
#### 3. Deploy Kuadrant on Both Clusters
- Deploy Kuadrant operator and components on both clusters
- Configure multicluster gateway/route setup
- Set up shared control plane or distributed control plane as needed
#### 4. Configure Certificate Authority
**Investigation needed:** Determine best approach for local CA setup:
- Option A: Generate a new self-signed CA for local development
- Option B: Import an existing CA for testing
- Consider: cert-manager configuration, trust between clusters, TLS certificate generation
#### 5. Configure Test Settings
Update test configuration to support multicluster scenarios:
- Configure `settings.local.yaml` with both cluster contexts
- Set up cluster-specific kubeconfig access
- Configure DNS and service discovery for multicluster
### Benefits
- ✅ Enables running multicluster test suite locally
- ✅ Developers can test DNS, TLS, and load balancing features
- ✅ Faster iteration on multicluster features
- ✅ No dependency on external multicluster environments
### Acceptance Criteria
- [ ] `make local-setup` (with multicluster flag) provisions two clusters
- [ ] Both clusters have Kuadrant deployed and configured
- [ ] Clusters can communicate with each other (networking configured)
- [ ] CA configured (investigation determines approach: generate vs import)
- [ ] TLS certificates working across clusters
- [ ] Multicluster tests pass on local-setup: `make test testsuite/tests/multicluster/`
- [ ] Documentation updated with multicluster local-setup instructions
- [ ] Optional: Make target to clean up multicluster setup (`make clean-multicluster`)
### Related
- Multicluster tests: `testsuite/tests/multicluster/`
- DNS tests: `testsuite/tests/multicluster/coredns/`
- Load balanced tests: `testsuite/tests/multicluster/load_balanced/`
### Technical Notes
- Consider using kind clusters with custom network configuration for local multicluster
- May need MetalLB or similar for LoadBalancer services in kind
- DNS setup might require CoreDNS configuration or external DNS
- CA investigation should consider: cert-manager, trust stores, certificate rotation
- Resource requirements: running two clusters locally may be resource-intensive
### Investigation Tasks
- [ ] Research best practices for local CA setup (generate vs import)
- [ ] Evaluate cert-manager configuration for multicluster
- [ ] Determine cluster trust and certificate distribution approach
Contributor guide
Assessment
This issue has not been assessed yet.