Replies: 4 comments 13 replies
-
I think that it would be beneficial for cluster provisioning tools and providers to include optional Gateway API CRD management with the following guidelines:
One of the major pain points in adopting Gateway API is CRD management. I think that providing more managed options will help with this. Of course we need to be clear that this will never be the only way to install Gateway API, and that experimentation in non-prod environments with Experimental Channel CRDs is very much encouraged. From the perspective of cluster provisioning tools and providers, this would mean that several times a year (3-6), they would need to pick up the latest Gateway API CRD definitions and make the latest version available via upgrade. |
Beta Was this translation helpful? Give feedback.
-
Maybe this is a naive approach, but what if functionality was added to Kubernetes where CRD based APIs could be managed by a resource. For example: apiVersion: extensions.k8s.io/v1
kind: CrdExtension
metadata:
name: gateway-api
spec:
source: https://github.com/kubernetes-sigs/gateway-api
channel: experimental
version: v1.0.0 Then the api server would handle installing the CRDs, and if needed, updating them. Getting this merged into the api server would probably be difficult, so maybe it would need to be an extension server that managed Kubernetes providers would need to offer. |
Beta Was this translation helpful? Give feedback.
-
Shane did a great presentation about this problem today in SIG network and it really caught my attention. I was investigating more about this topic and it is interesting you discarded the canonical path of working with CRDs https://gateway-api.sigs.k8s.io/geps/gep-922/#2-reuse-alpha-api-versions and implemented a new path, that it seems has some different problems #3075 . It seems the overhead of dealing server side with groups and versions and conversions, now is translated to the clients (implementers not users) that need to (client side) try to understand the groups versions and this third dimension of channels, with the different that the GVK between channels are the same, with also different fields. I really think that is a topic that requires advice from experts, let me tag @jpbetz |
Beta Was this translation helpful? Give feedback.
-
On the feature gate / experimental topic: I could imagine an alternative to having experimental and stable CRDs.. you had a single set of CRDs with all possible fields, then you use ValidatingAdmissionPolicy to control if the CRDs are in experimental or stable mode. A ValidatingAdmissionPolicy could be configured to know which feature gates are on or off via params. This approximates how builtins's handle feature gated fields, and would allow for more sophisticated checks. For example, a ValidatingAdmissionPolicy could allow the use of a feature, even if the feature gate is off, when it detects that a resource is already using that feature. We do this today in buildin types. |
Beta Was this translation helpful? Give feedback.
-
As the project has reached GA, we've started to get some questions about if cluster provisioning tools and providers should start including Gateway API CRDs. As a project, we need to develop some guidelines for this approach. Note that even if we suggest that cluster provisioning tools include Gateway API CRDs, that will never be the exclusive way for these CRDs to be managed. I'll add my own proposal below to avoid confusing the overall topic with my opinion.
Beta Was this translation helpful? Give feedback.
All reactions