Uh oh!
There was an error while loading. Please reload this page.
Add multi-cluster deployment support via Cluster Inventory API - #2267
Conversation
There was a problem hiding this comment.
@kahirokunn: 0 warnings.
Details
In response to this:
Fixes #
Proposed Changes
Release Note
Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository.
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@## main #2267 +/- ##
==========================================
- Coverage 64.58% 63.84% -0.75%
==========================================
Files 51 55 +4 Lines 1999 2478 +479 ==========================================
+ Hits 1291 1582 +291 - Misses 606 777 +171 - Partials 102 119 +17 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
3e585a9 to
141c875Compared308bf0 to
3e742cbCompare3e742cb to
43919c6Compare43919c6 to
28a1e02Compare28a1e02 to
88410efCompareThere are empty aliases in OWNER_ALIASES, cleanup is advised. |
There are empty aliases in OWNER_ALIASES, cleanup is advised. |
29a9317 to
6217b27Compare9068c06 to
cecc1b8CompareThere are empty aliases in OWNER_ALIASES, cleanup is advised. |
cecc1b8 to
725b1beComparekahirokunn
commented
Apr 17, 2026
I didn't have the necessary permissions. |
kahirokunn
commented
Apr 17, 2026
/retest |
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
kahirokunn
commented
Apr 21, 2026
@houshengbo Thank you for your feedback! I have addressed all the points you raised. |
kahirokunn
commented
Apr 21, 2026
I will check it |
Signed-off-by: kahirokunn <okinakahiro@gmail.com>
Signed-off-by: kahirokunn <okinakahiro@gmail.com>
Signed-off-by: kahirokunn <okinakahiro@gmail.com>
Signed-off-by: kahirokunn <okinakahiro@gmail.com>
Signed-off-by: kahirokunn <okinakahiro@gmail.com>
Signed-off-by: kahirokunn <okinakahiro@gmail.com>
Signed-off-by: kahirokunn <okinakahiro@gmail.com>
kahirokunn
commented
Apr 21, 2026
All CI passed! 🙌 |
/lgtm |
[APPROVALNOTIFIER] This PR is APPROVED This pull-request has been approved by: houshengbo, kahirokunn The full list of commands accepted by this bot can be found here. The pull request process is described here DetailsNeeds approval from an approver in each of these files:
Approvers can indicate their approval by writing |
kahirokunn
commented
Apr 22, 2026
Thank you😆 |
Fixes#2264
Requires knative/infra#827 to be merged first so that the integration-tests-multicluster presubmit exists when this PR's CI runs.
Proposed Changes
spec.clusterProfileRefon the CR, using the SIG-Multicluster Cluster Inventory API (KEP-5339,ClusterProfile) to discover target clusters without depending on a specific fleet manager.spec.clusterProfileRefis not set, behavior is completely unchanged — existing single-cluster deployments are unaffected.Design
The core idea is to swap the manifestival
manifest.Clientat the start of the reconcile stage pipeline (ResolveTargetCluster), so that all subsequent stages — Apply, Delete, Get — transparently operate on the remote cluster.For garbage collection on the remote cluster, an anchor ConfigMap pattern (inspired by k0smotron) is used:
{kind}-{cr-name}-root-owner) is created on the remote cluster.ownerReferencepointing to this anchor, enabling Kubernetes-native GC.ownerReferenceand are explicitly deleted by the finalizer.Example CR
KnativeServing on a remote cluster
KnativeEventing on a remote cluster
Local cluster (unchanged behavior)
Verification Steps
E2E verification with Kind
1. Cluster setup
2. Spoke cluster credentials
3. ClusterProfile
4. Operator deployment
5. Install Envoy Gateway on the spoke cluster
The net-gateway-api ingress provider requires Gateway API resources (GatewayClass, Gateway) to exist on the target cluster before deploying KnativeServing. Install Envoy Gateway and create the necessary resources on the spoke cluster.
Prerequisites
Install Envoy Gateway
Since
cloud-provider-kindinstalls Gateway API CRDs with server-side apply,helm installwill fail with field ownership conflicts. Usehelm template+kubectl apply --server-side --force-conflictsto take over ownership.After installing Envoy Gateway, start cloud-provider-kind in a separate terminal (provides LoadBalancer support for Kind):
Create Gateway API resources (external)
Create Gateway API resources (internal)
The internal Gateway uses the
ClusterIPservice type, so it is not accessible from outside the cluster.6. Deploy KnativeServing
7. Verify
8. Verify CR deletion and finalizer cleanup
9. Cleanup
Backward compatibility
Release Note