-
Notifications
You must be signed in to change notification settings - Fork 461
CRDs upgrade support #4001
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
Comments
While trying to split the chart into 2 charts(app chart and CRDs chart) internally CRDs chart installation failed because helm release secret exceeded max 1MB size limit. In order to resolve that issue I split the CRDs chart into 2 more charts - eg CRDS and gateway api CRDs. |
thinking out loud, we could add two additional templates (w/o deleting the This solves 2 use cases
the naming for the helm knobs can be improved, of course |
@arkodg installing both EG and gateway-api CRDs from the same chart won't work since helm release secret will exceed 1MB limit as I mentioned here. What about keeping the crds folder and create 2 additional CRDs charts? |
ah thanks for trying it out @shahar-h . Looks like we have a decision to make, neither being ideal
Common issues
|
argo also puts |
@shahar-h can you help investigate who is the consuming most of the space ? |
Sure, will do. |
thanks ! I did a little digging, one way to reduce size could be to rm the API descriptions, but that would break |
I computed eg CRDS & gwapi CRDs size by creating separate charts and installing each chart. Then I computed helm secret release size for each one of them with the following command: kubectl -n envoy-gateway-system get secret <helm-release-secret-name> -o jsonpath='{.data.release}' | base64 -d | wc -c Results:
Total: 1.17MB > 1MB size limit Note that the helm release secret size is lower that real CRDs size since helm uses gzip compression. BTW there is an open PR to split helm releases into multiple k8s secrets. |
thanks for analyzing this ! |
This issue has been automatically marked as stale because it has not had activity in the last 30 days. |
I'm not sure if I should open a new issue or add something here, but let's start by doing it here. A challenge I have with Envoy Gateway is also CRDs related. I'm using cert-manager with Gateway API support enabled to issue certificates for Envoy (https://gateway.envoyproxy.io/docs/tasks/security/tls-cert-manager/). Works beautifully, however today we ran into the issue that cert-manager with this Gateway API support enabled depends on the Kubernetes Gateway API CRDs. I can't recall the details (since it's been a few weeks ago that I looked at it for a different reason), but essentially I think it was trying to subscribe to any changes on the A few weeks ago the obvious choice was to reverse that order, but today this ordering popped up again and we really want to reverse that order. Okay, reason why I have this comment here is that it seems strange to me that the CRDs of the Kubernetes Gateway API are installed directly in this chart. It seems to me that the Kubernetes Gateway API CRDs are an 'interface' of which Envoy Gateway is an implementation, right? In that sense I would rather have this split as it would (probably?) allow me to install the Kubernetes Gateway API CRDs separately, then install I hope that makes sense. It would maybe also be a possibilty to have the Kubernets Gateway API as a conditional subchart of This could also be it's own issue, let me know. |
This issue has been automatically marked as stale because it has not had activity in the last 30 days. |
Just to add a 👍 for @aukevanleeuwen's comment. Gateway API CRDs should be treated as an external dependency. While it's nice as a convenience to have them installed alongside Envoy Gateway, users should be able to install Gateway API CRDs separately. This would be useful in, for example, GitOps, where it's nice to be able to enforce the general deployment order: CRDs -> controllers -> configs. |
Got the same issue, but In my case I'm trying to migrate from another Gateway API vendor and since I already have Gateway API installed in my cluster I'm not able to install Envoy Gateway in the same environment. I agree with @aukevanleeuwen and I think we should just remove Gateway API from the helm chart all together. I will create a PR tomorrow to remove this dependency (yes, it will be a breaking change) and let's see what the maintainers say. In the |
we cannot delete the gateway-api CRDs from the Helm Chart, that negatively impacts the install experience for most cases, but we can account for the cases you've mentioned
wdyt @shahar-h @envoyproxy/gateway-maintainers @envoyproxy/gateway-reviewers ? |
+1 on adding a new chart named |
+1 |
I don't understand what issues would get solved by creating a new helm chart called And I don't understand what you mean with
The funny thing about helm is that if you use subcharts you can't set skip-crds. I created a PR to move them from the CRDs folder in to template folder instead. This way we do it the same way as cert-manager. |
@NissesSenap moving CRDs from crds folder to templates folder would be a breaking change for consumers that use EG chart as a sub chart and have EG/GW-API custom resources as part of the main chart, because they rely on EG crds to be installed before EG/GW-API custom resources. |
This is true. But if you got a helm chart that only contains the CRDs in a subchart in the template folder, it will also be a breaking change. And to my knowledge you can't set the order of when to install subcharts. So I don't think you can't guarantee that the CRDs will be installed before the chart anyway, but I might be wrong here. Or do you want to have 3 helm charts? One for the Gateway API CRDs and one for EG CRDs? To be honest, I don't care how this gets solved, I just want to solve it. |
+1 |
Now that we have consensus, @NissesSenap assigning this to you since you mentioned you're interested in picking this up |
@arkodg what I don't understand in your comment is
After I create a separate helm chart for the eg CRDs then what? What helm issue is it that you are waiting to get resolved? If you are talking about the upstream helm issues that cause all this pain around crd when it comes to helm, I don't think every will get solved. But I can create a PR that creates a new helm chart with EG CRDs in the template folder to make it possible to disable. |
yes, the new the helm issue i'm referring to is #4001 (comment) |
keeping this open to track CI work to push charts to docker hub + docs work to highlight using these charts in the upgrade steps |
another decision point + extra TODOs here, is to also add the |
keeping this open to track docs work in the installation / upgrade section |
chart is available in https://hub.docker.com/r/envoyproxy/gateway-crds-helm, closing this issue for now, and creating a new one to track docs work |
Description:
Currently Gateway API and EG CRDs are located in EG
gateway-helm
chart crds folder. This means that CRDs are not upgraded on chart upgrade, and need to be manually upgraded beforehand.Possible solutions:
Real world example: cert-manager chart has CRDs as part of templates folder and exposes
crds.enabled
flag.It also allows to decide if we want to keep the CRDs on chart uninstallation with
crds.keep
flag, by leveraging"helm.sh/resource-policy": keep
helm annotation.See: https://cert-manager.io/v1.13-docs/installation/helm/#crd-considerations.
However, this is a breaking change for consumers that use EG chart as a sub chart and have custom resources as part of the main chart.
Real world example: Istio provides a base chart that installs CRDs: https://istio.io/latest/docs/setup/install/helm/#installation-steps.
Both 1 and 2 can also solve #3094 by providing a separate flags(1)/charts(2) for Gateway API and EG CRDs.
Also Related:
WDYT?
The text was updated successfully, but these errors were encountered: