Kuadrant / Kuadrant/testsuite

feat: add multicluster support to local-setup

Open
#909 0 comments 0 reactions 1 assignee Claimed by @crstrn13 View on GitHub
enhancement good first issue
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

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.