Skip to content

feat: add multicluster support to local-setup #909

@crstrn13

Description

@crstrn13

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

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

Status

🆕 New

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions