Skip to content

feat(multicluster): sync target cluster trust roots into Link status - #15398

Draft
alpeb wants to merge 1 commit into
mainfrom
alpeb/mc-trust-status
Draft

feat(multicluster): sync target cluster trust roots into Link status#15398
alpeb wants to merge 1 commit into
mainfrom
alpeb/mc-trust-status

Conversation

@alpeb

@alpeb alpeb commented Jun 19, 2026

Copy link
Copy Markdown
Member

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.

@alpeb
alpeb requested a review from a team as a code owner June 19, 2026 20:46
@alpeb
alpeb force-pushed the alpeb/mc-trust-status branch from f68aceb to f9f13b5 Compare June 19, 2026 21:36
@alpeb
alpeb marked this pull request as draft June 19, 2026 22:20
@alpeb
alpeb force-pushed the alpeb/mc-trust-status branch 2 times, most recently from 708fc0f to b4ae98e Compare June 25, 2026 17:58
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.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant