feat(multicluster): sync target cluster trust roots into Link status - #15398
Draft
alpeb wants to merge 1 commit into
Draft
feat(multicluster): sync target cluster trust roots into Link status#15398alpeb wants to merge 1 commit into
alpeb wants to merge 1 commit into
Conversation
alpeb
force-pushed
the
alpeb/mc-trust-status
branch
from
June 19, 2026 21:36
f68aceb to
f9f13b5
Compare
alpeb
marked this pull request as draft
June 19, 2026 22:20
alpeb
force-pushed
the
alpeb/mc-trust-status
branch
2 times, most recently
from
June 25, 2026 17:58
708fc0f to
b4ae98e
Compare
Add cross-cluster trust visibility to the service-mirror, recording the certificates a linked cluster advertises and trusts in the Link status. This new functionality is opt-in per Link, based on the value of the new multicluster chart value `controllers[].enableTrustRootsMirroring` (defaults to false). The RemoteClusterServiceWatcher now runs a periodic loop (gated on the remote mirror, skipped for the local mirror) that reads the target cluster's linkerd-identity-trust-roots-local (if declared) and linkerd-identity-trust-roots ConfigMaps and patches the observations into a new trustRoots subtree of the Link status. A JSON merge patch is used so the existing mirrorServices/federatedServices status fields are left untouched. Failed refreshes are treated conservatively, keeping the previously synced observations and their lastSyncedTime so staleness stays visible. The new trustRoots field captures the local and effective trust bundles, plus the effective bundle ConfigMap's annotations (filtered of noisy kubectl/kubernetes.io entries) to carry auxiliary bundle metadata across clusters. The absence of the local-roots ConfigMap is not an error; only failure to read the effective mesh bundle is. The field is added into the Link CRD without bumping its version, given its additive nature. Also extends the remote-access service-mirror RBAC to grant get access to the two trust-roots ConfigMaps, and regenerates the CRD, deepcopy, and install golden files accordingly.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Add cross-cluster trust visibility to the service-mirror, recording the
certificates a linked cluster advertises and trusts in the Link status.
This new functionality is opt-in per Link, based on the value of the new
multicluster chart value
controllers[].enableTrustRootsMirroring(defaults to false).
The RemoteClusterServiceWatcher now runs a periodic loop (gated on the
remote mirror, skipped for the local mirror) that reads the target
cluster's linkerd-identity-trust-roots-local (if declared) and
linkerd-identity-trust-roots ConfigMaps and patches the observations
into a new trustRoots subtree of the Link status. A JSON merge patch is
used so the existing mirrorServices/federatedServices status fields are
left untouched. Failed refreshes are treated conservatively, keeping the
previously synced observations and their lastSyncedTime so staleness
stays visible.
The new trustRoots field captures the local and effective trust bundles,
plus the effective bundle ConfigMap's annotations (filtered of noisy
kubectl/kubernetes.io entries) to carry auxiliary bundle metadata across
clusters. The absence of the local-roots ConfigMap is not an error;
only failure to read the effective mesh bundle is.
The field is added into the Link CRD without bumping its version, given
its additive nature.
Also extends the remote-access service-mirror RBAC to grant get access
to the two trust-roots ConfigMaps, and regenerates the CRD, deepcopy,
and install golden files accordingly.