-
Notifications
You must be signed in to change notification settings - Fork 34
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
Upgrade ingress addon #123
base: main
Are you sure you want to change the base?
Conversation
ad5e2cd
to
dadc4e9
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thank you for this PR @dud225.
I have not reviewed this yet, will do after CI is successful. In general, I am not opposed to using the nginx-ingress helm chart for this, but I am a bit wary about the implicit dependency on https://kubernetes.github.io/ingress-nginx
being reachable when enabling the ingress addon. This might not be the case for enterprise, firewall-ed, airgap environments etc, and this change would break existing flows.
I am not sure how best to tackle this, including the helm chart could be an option.
I do agree with you and, to be honest, I'm also concerned by the fact that the latest chart version is pulled by default, which means that depending on the time the user installs the addon, 2 different users may not get the same result despite running on the same Microk8s version. However this approach has benefits for the Microk8s project : much less maintenance cost since the latest chart is pulled and most importantly much more flexibility for the user since custom values can be passed along. I thought that there was an agreement on this approach as this is currently what has been done on the observability addon: microk8s-core-addons/addons/observability/enable Lines 39 to 56 in f9d2f4b
I also brought this topic on Slack and, albeit this specific point wasn't discussed, the answer I got made me believe this approach was palatable. I'd suggest that you discuss this internally to clarify that matter. |
c77367c
to
ea3535a
Compare
The CI has been fixed. |
Looking at the conversation, using upstream Helm charts is indeed something we consider and are positive towards. The issue is with implicitly adding dependencies that might break existing workflows. :) Any thoughts @ktsakalozos? |
We could store a copy of the chart to install, much as the manifest, but then the addon will constantly trail behind the latest upstream version. For a small and mature addon this is OK, but for a more active one like this one it is suboptimal. |
Thank you for this work @dud225. You an @neoaggelos bring up valid concerns. The biggest show stopper for me is the deployment of the "latest" stable ingress release. Looking at the ingress releases I see the support for k8s v1.19 was dropped with the v1.24 release. This makes sense however when looking at what people deploy we see a significant amount of users still using/deploying v1.19. Following the "latest" would have made more sense in rolling k8s distributions but MicroK8s is not one. |
Thanks for your acknowledgements. |
Sorry my point was not clear. Lets assume we merge this PR and from the 1.26 on wards we always deploy the latest ingress. In about 14 months upstream will not be supported anymore so the latest ingress at that time will drop support of 1.26. this means that there may be a risk of the latest ingress at that point breaking on the 1.26 deployments. Unfortunately there will be still be users deploying 1.26 even though it is out of support. So yes we should be shipping a pinned version of ingress and to address airgapped usecases the helm packages should be in the snap. |
Thanks the comment that's now clear.
How to do this? Shall I copy/paste the chart into the repo? Or is there a build script that should be modified to handle this? |
The mayastor addon on this repo is a good example. |
6a2acda
to
1e7055a
Compare
- Switch to a Helm-based installation. That will help to relieve the project of the maintenance burden as by default the latest chart version is picked. If case of trouble the user can override the chart version to install. - Set up the admission controller by default. This helps to detect invalid configurations early, see https://kubernetes.github.io/ingress-nginx/how-it-works/#avoiding-outage-from-wrong-configuration. It can be disabled at addon installation time to get a configuration similar to what is set up so far. - Breaking change: the metrics endpoint is no longer exposed on the host (hostPort), instead it is exposed internally only through a ClusterIP service. Note that it is fairly easy to expose it externally though an Ingress. Signed-off-by: Hervé Werner <[email protected]>
1e7055a
to
70f4bf5
Compare
I've vendored the ingress-nginx Helm chart version 4.4.0. |
5f36e1b
to
0db2673
Compare
Signed-off-by: Hervé Werner <[email protected]>
0db2673
to
7736b4f
Compare
project of the maintenance burden as by default the latest chart
version is picked. If case of trouble the user can override the chart
version to install.
invalid configurations early, see
https://kubernetes.github.io/ingress-nginx/how-it-works/#avoiding-outage-from-wrong-configuration.
It can be disabled at addon installation time to get a configuration
similar to what is set up so far.
(hostPort), instead it is exposed internally only through a ClusterIP
service. Note that it is fairly easy to expose it externally though an
Ingress.