-
Notifications
You must be signed in to change notification settings - Fork 39
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
Generate features directly from TBD Cilium configuration schema #74
Comments
Some implementation ideas, in order of increasing disruption to the Cilium team. I'm kind of partial to the flags validator idea, second in the list:
|
High level comment: I'm unsure whether that's ("Generate features directly from TBD Cilium configuration schema") really a goal we should strive for. Typically, we consciously decide which of the configuration options are exposed via the APIs. This is since not all of the configuration switches (1) make sense for end-users to configure, or worse, (2) could potentially harm the system's robustness. I don't know how critical this is for Cilium and whether this also applies here, but for the |
Thanks Rafael, your additional issues are very helpful for consideration. The primary use case I'm seeing is users can't configure something they need without code changes to the provider to pass them through. A savvy user would have to know how to push a PR and then wait for a release if they had an organizational requirement in that regard. In less ideal situations, they would be running from a local fork or simply choose the Calico provider for lack of options. It becomes something of a self-fulfilling outcome that the Cilium provider never gets a following with advanced users -- exactly who it's best for. I had started a PR for accepting |
I can't judge since I'm not very familiar with Cilium (actually, not at all), hence I'm not sure how "risky" this is w.r.t. user experience and damage that can be done to the users themselves. OTOH, what you propose sounds familiar to what is possible with CoreDNS today, though this depends on a very stable "API" as end-users cannot control the CoreDNS/Cilium versions themselves. |
Just to add my two cents: |
Hello @ScheererJ, thanks for your feedback. The first time I needed this functionality, I went through the PR process in #46. This time, it is for a feature flag that might not even make it to production in supporting cilium/cilium#9207. As it stands, I am unaware how to support this flag without code changes and started asking myself where improvements could be made. Maybe I am missing something. I completely agree it's a non-goal to manually support every switch, and they change over time in a project moving as fast as Cilium (or may never reach production as above). The original proposal was to make support automatic. The discussion has been valuable to realize validation may be harmful. Your questions expose requirements for security of a global delegated deployment for which RBAC on the config may be the only practical solution. The current implementation of the provider does no validation of any switches, it just blindly passes them through to Cilium. Is there intent to add validation to avoid harmful combinations of configuration? Such an endeavor seems computationally infeasible unless the number of allowed switches was extremely small. And then we're back to the original problem of supporting smaller environments with a tiny attack surface and a dependency on bleeding-edge switches. My k8s CNI experience is with the spec and Cilium. I assume Calico must have extensive permissions like Cilium for route maintenance. It seems plausible that any CNI instance could advertise There are just so many ways that this could all go wrong that I believe configurations should be trusted by RBAC and Gitops methodology and Gardener should treat this as a documentation problem rather than one of implementation. Promotion of any CNI configuration should require sign-off by global org security rather than depend on trust of the delegated local org. Smaller environments that can't handle this burden may be left vulnerable if they open up their services prematurely, I just don't think it can be handled by any validator that the Gardener team could keep current and flexible over time. |
The cilium issue you referenced is indeed intriguing. As you have mentioned, we are at least affected with our coredns deployment, even though we should mostly have a somewhat working solution due to having at least two replicas. However, one replica will likely handle all the load as udp is much more common for dns than tcp. Therefore, in general I all for resolving the issue, helping you verify that the proposed solution from cilium works and getting the fix into a cilium release. (Unfortunately, I did not understand, which feature flag to set from the issue. Maybe, I have skipped too much through it.) |
I found this problem through RFC3126 support for external DNS. You point out DNS requests are typically UDP, but dynamic updates are TCP. So it's difficult to support rfc2136 without this fix. I have some code around to pick up once the other issues worked out. Wasn't familiar with #40, but believe it will be undisturbed by this proposal. Regarding the config option source scopes: If I understand your question correctly and given the security considerations, it seems like the local config should be overwritten by KVs from the global. That would allow a garden admin to overwrite values from an RBAC scope that the less-trusted local user does not have access to. It seems like both local and global scopes should be supported and shouldn't be a problem if |
How to categorize this issue?
/area networking
/kind enhancement
/priority 4
/assign @briantopping
What would you like to be added:
Generate configuration option passthrough from some type of configuration schema such as https://github.com/cilium/cilium/blob/master/api/v1/openapi.yaml. Some build pattern needs to be defined so older versions of the configuration may be properly matched.
Why is this needed:
Cilium and
gardener-extension-networking-cilium
have a reasonable challenge with configuration matching between the two. Cilium configuration is in regular flux and the Gardener extension often cannot pass through new features that might be defined without changes to the container.The text was updated successfully, but these errors were encountered: