Wrong default values prevent basic install k8s ingress support #44402
Labels
area/networking
area/upgrade
Issues related to upgrades
area/user experience
kind/docs
lifecycle/automatically-closed
Indicates a PR or issue that has been closed automatically.
Bug Description
Background
We were using Istio 1.15.3 installed through the helm charts and decided to upgrade to the latest currently available (1.17.2).
We have cert-manager installed and have a certificate that needs the HTTP01 challenge mechanism which was working fine out-of-the-box with istio 1.15.3.
Upgrade fun
While upgrading, we noticed that the istio-ingress and istio-egress charts were not published anymore and seemed to be deprecated in favor of the new unified chart simply called
gateway
. By doing so, we also had to adjust our Gateway CRD to match the new app label (istio-gateway rather than istio-ingressgateway). Rather simple fix, so we decided to go ahead and do it.Real Problem
Once our certificates were getting close to expiry and needed to be renewed, the HTTP01 challenge was spawned, the associated ingress was created with the proper ingress.class annotation set to istio...but nothing worked. It was simply not getting picked up by istio.
Troubleshooting
We enabled all the logs we could think of and all we could find was the gateway's envoy saying there was no route found for the incoming challenge requests which meant that the ingress wasn't taken into account. Unfortunately we were unable to find anything more pertinent...maybe there could be improvements on the logging side or the logs exist and we simply didn't know where to enable them.
Final find
After many hours of research, we finally figured out that the issue was due to the gateway's name being changed in the new merged helm chart and the default values in istio's meshConfig not being updated to reflect this.
So the fix was to reinstall
istiod
's helm chart by adding the following parameters:--set meshConfig.ingressService=istio-gateway --set meshConfig.ingressSelector=gateway
.After that, the challenges were almost immediately completed and the certificate was issued successfully.
Takeaway
I think this whole ordeal was due to a rename that was done half-way. But, I also believe that finding the documentation to properly use k8s ingress resources was hard. There is this page that says it should just work out-of-the-box, but that's not always the case and then finding how to properly configure istiod was not easy...I basically stumbled upon the meshConfig page by chance and realised there were ingress options there and then had to reverse engineer to figure out how to provide them through the helm chart.
Version
Additional Information
There are a few parts that should probably be changed to reflect the new gateway name:
istio/pkg/config/constants/constants.go
Line 85 in 081302a
istio/pilot/pkg/config/kube/ingress/conversion.go
Line 367 in b437d02
istio/pkg/config/mesh/mesh.go
Line 85 in a44c42b
Affected product area
The text was updated successfully, but these errors were encountered: