Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ambient: rationalize and document data plane enablement #43599

Open
howardjohn opened this issue Feb 24, 2023 · 7 comments
Open

ambient: rationalize and document data plane enablement #43599

howardjohn opened this issue Feb 24, 2023 · 7 comments
Labels
Ambient Beta Must have for Beta of Ambient Mesh area/ambient Issues related to ambient mesh L4 Issues related to L4 for ambient lifecycle/staleproof Indicates a PR or issue has been deemed to be immune from becoming stale and/or automatically closed

Comments

@howardjohn
Copy link
Member

We need a table like https://istio.io/latest/docs/setup/additional-setup/sidecar-injection/#controlling-the-injection-policy, but with ambient taken into account

Currently the logic is definitely "wrong", IMO, but we need to determine what is right. Then document it.

Related #43437

@howardjohn howardjohn added the area/ambient Issues related to ambient mesh label Feb 24, 2023
@costinm
Copy link
Contributor

costinm commented Feb 25, 2023

My take: the final state we want is ambient on by default in all the mesh, with a proper CRD defining interception policies, ideally vendor neutral and defined in GAMMA. K8S CNI doesn't provide an 'opt a pod out' - except maybe host network option.

Labels on namespace are used as an artifact of how mutating webhook works - this is our chance to move away from that.

I would think a user creating a Gateway with waypoint class in a namespace is a clear indication that workloads in that namespace need ztunnel (unless they have a sidecar). Can we do something similar for namespace using L4 only - for example define a Gateway class=ztunnel, which pilot ignores (doesn't create an actual deployment) but either is watched by CNI ( which will eventually need to start watching some CRDs for interception control ) or if it's easier just generate some internal-do-not-use-ztunnel label on namespace automatically ?

From user perspective, the config will be the same for L4 and L7 - creating a Gateway resource. Technically the spec does allow the implementation to actuate this by generating a common gateway - ztunnel is a valid multi-tenant L4 gateway
that happens to be deployed per node.

Later we could go a step further - if Istiod actuates gateways, and a 'class ztunnel' is created it could just deploy and manage ztunnel just like a gateway. The upgrade dance for ztunnel will likely be tricky and may be best managed by Istiod.

@howardjohn
Copy link
Member Author

I think the biggest case for opting out is a sidecar (or proxy less), so there is some use case for opt out per pod IMO. Agree that may not be label driven. Another case is circular dependencies (API server and istiod), but that is only 1P deployments not arbitrary user ones probably.

Gateway for ztunnel enablement is definitely technically feasible. I neither love nor hate it right now, will think about it a bit more. It does seem
somewhat counter to the goal of "enabled everywhere"? Since you would enable it per namespace and there doesn't seem to be a way to say "class: no-ztunnel" ? Unless on-by-default means we auto generate that Gateway for them

@istio-policy-bot istio-policy-bot added the lifecycle/stale Indicates a PR or issue hasn't been manipulated by an Istio team member for a while label May 27, 2023
@costinm
Copy link
Contributor

costinm commented May 27, 2023 via email

@istio-policy-bot istio-policy-bot removed the lifecycle/stale Indicates a PR or issue hasn't been manipulated by an Istio team member for a while label May 27, 2023
@andriilahuta
Copy link

Would it also be possible to keep the opt in behavior on a per-pod basis?
Sometimes it is useful to allow only a (small) subset of namespace's pods into the mesh. In such a case it could be quite inconvenient to opt out each pod across helm charts, operators, etc. And separating things into different namespaces is not always an option.

@costinm
Copy link
Contributor

costinm commented May 28, 2023 via email

@istio-policy-bot istio-policy-bot added the lifecycle/stale Indicates a PR or issue hasn't been manipulated by an Istio team member for a while label Aug 26, 2023
@keithmattix
Copy link
Contributor

Not stale

@istio-policy-bot istio-policy-bot removed the lifecycle/stale Indicates a PR or issue hasn't been manipulated by an Istio team member for a while label Aug 26, 2023
@istio-policy-bot istio-policy-bot added the lifecycle/stale Indicates a PR or issue hasn't been manipulated by an Istio team member for a while label Nov 25, 2023
@hanxiaop
Copy link
Member

not stale

@istio-policy-bot istio-policy-bot removed the lifecycle/stale Indicates a PR or issue hasn't been manipulated by an Istio team member for a while label Nov 27, 2023
@linsun linsun added Ambient Beta Must have for Beta of Ambient Mesh L4 Issues related to L4 for ambient lifecycle/staleproof Indicates a PR or issue has been deemed to be immune from becoming stale and/or automatically closed labels Dec 20, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Ambient Beta Must have for Beta of Ambient Mesh area/ambient Issues related to ambient mesh L4 Issues related to L4 for ambient lifecycle/staleproof Indicates a PR or issue has been deemed to be immune from becoming stale and/or automatically closed
Projects
Status: No status
Development

No branches or pull requests

7 participants