Skip to content

Add EgressMITMTrustReconciler - #946

Open
haiyanmeng wants to merge 1 commit into
agent-substrate:mainfrom
haiyanmeng:projected-volume-egress-mint
Open

Add EgressMITMTrustReconciler#946
haiyanmeng wants to merge 1 commit into
agent-substrate:mainfrom
haiyanmeng:projected-volume-egress-mint

Conversation

@haiyanmeng

@haiyanmeng haiyanmeng commented Aug 14, 2026

Copy link
Copy Markdown
Collaborator

It Watches ate-system/egress-mitm-ca-pool, unmarshals it with localca.Unmarshal, and server-side-applies a ClusterTrustBundle whose spec.trustBundle is the PEM concatenation of every CA's RootCertificate.Raw, in pool order, and nothing else.

A part of #823

Context:
#932 plans to add a clusterTrustBundle data source to SystemInfo volumes (#802) that projects the trust anchors of a named ClusterTrustBundle (certificates.k8s.io/v1beta1) to a PEM file in the volume, the substrate analog of the [Kubernetes clusterTrustBundle projected volume source] (https://kubernetes.io/docs/concepts/storage/projected-volumes/#clustertrustbundle).

After both #823 and #932 land, Substrate users will be responsible for wiring the provided ClusterTrustBundle for ate-egress-trust into its trust store.

It's a good idea to open an issue first for discussion.

  • Tests pass
  • Appropriate changes to documentation are included in the PR

@haiyanmeng
haiyanmeng marked this pull request as draft August 14, 2026 01:02
@haiyanmeng
haiyanmeng force-pushed the projected-volume-egress-mint branch from a0bb38e to 1aecc42 Compare August 14, 2026 01:43
@haiyanmeng haiyanmeng changed the title Add EgressMITMTrustReconciler. Add EgressMITMTrustReconciler Aug 14, 2026
It Watches ate-system/egress-mitm-ca-pool, unmarshals it with
localca.Unmarshal, and server-side-applies a ClusterTrustBundle whose
spec.trustBundle is the PEM concatenation of every CA's
RootCertificate.Raw, in pool order, and nothing else.
@EItanya

Copy link
Copy Markdown
Collaborator

Can you give a little more context in the PR description of why this change is necessary and how it fits into the broader MITM effort

@haiyanmeng

Copy link
Copy Markdown
Collaborator Author

Can you give a little more context in the PR description of why this change is necessary and how it fits into the broader MITM effort

Added a Context section in the PR description. Let me know if it helps.

@EItanya

Copy link
Copy Markdown
Collaborator

Can you give a little more context in the PR description of why this change is necessary and how it fits into the broader MITM effort

Added a Context section in the PR description. Let me know if it helps.

It does, but honestly this feels like a slightly overcomplicated solution. These are really an implementation detail of the system. Do we need this type of controller, or can we just have a flag or something to automount. Not to mention we're going to need to set special env vars etc, to get this to work.

@haiyanmeng

Copy link
Copy Markdown
Collaborator Author

Can you give a little more context in the PR description of why this change is necessary and how it fits into the broader MITM effort

Added a Context section in the PR description. Let me know if it helps.

It does, but honestly this feels like a slightly overcomplicated solution. These are really an implementation detail of the system. Do we need this type of controller, or can we just have a flag or something to automount. Not to mention we're going to need to set special env vars etc, to get this to work.

Taahir Ahmed (@ahmedtd) , Bowei Du (@bowei) , WDYT?

@ahmedtd

Copy link
Copy Markdown
Collaborator

Can you give a little more context in the PR description of why this change is necessary and how it fits into the broader MITM effort

Added a Context section in the PR description. Let me know if it helps.

It does, but honestly this feels like a slightly overcomplicated solution. These are really an implementation detail of the system. Do we need this type of controller, or can we just have a flag or something to automount. Not to mention we're going to need to set special env vars etc, to get this to work.

Atelet can't depend on internal implementation details of the egress controller if we expect implementers to be swapping in their own egress implementations. So there needs to be a contract for how the egress implementation publishes the roots.

If there's a simpler way to do this, we're open to suggestions.

@EItanya

Eitan Yarmush (EItanya) commented Aug 17, 2026

Copy link
Copy Markdown
Collaborator

Can you give a little more context in the PR description of why this change is necessary and how it fits into the broader MITM effort

Added a Context section in the PR description. Let me know if it helps.

It does, but honestly this feels like a slightly overcomplicated solution. These are really an implementation detail of the system. Do we need this type of controller, or can we just have a flag or something to automount. Not to mention we're going to need to set special env vars etc, to get this to work.

Atelet can't depend on internal implementation details of the egress controller if we expect implementers to be swapping in their own egress implementations. So there needs to be a contract for how the egress implementation publishes the roots.

If there's a simpler way to do this, we're open to suggestions.

That makes sense, can I think about this a bit before we merge?

I was hoping the user wouldn’t have to think about injecting the CA everywhere, and what env vars/files to think about.

I do agree that we need a way to explain this to the system, but I’m wondering put loud whether it should be a higher level API.

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.

3 participants