{{ message }}
Repository navigation
helm: allow removing port 80 from the cilium-ingress service - #48870
Merged
joestringer merged 1 commit intoOct 22, 2026
Merged
Conversation
squeed
approved these changes
Sep 24, 2026
Member
The shared Ingress Service always lists port 80 next to 443, so a cloud load balancer always ends up with a plain HTTP listener. Some organizations run policies that delete any load balancer exposing one, which leaves the Ingress controller unusable even when every Ingress it serves is TLS only. Add ingressController.service.insecurePortEnabled and ingressController.service.securePortEnabled. Both default to true, so the rendered Service is unchanged for existing users. Setting either to false drops the matching port from the Service. Turning both off is rejected in validate.yaml, since a Service needs at least one port. Dedicated load balancer mode already omits port 80 for a TLS only Ingress, so this brings the shared Service in line with it. Fixes: cilium#48108 Signed-off-by: Himanshu Verma <himnshuverma10152006@gmail.com>
bitflicker64
force-pushed
the
helm-ingress-optional-http-port
branch
from
October 21, 2026 20:01
a8812a5 to
9c545ea
Compare
Contributor
Author
|
Rebased onto @joestringer could you drop |
This comment has been minimized.
This comment has been minimized.
Member
|
@bitflicker64 done and triggered the tests. Could you confirm if you tried out this change in a local environment and confirmed that by following the steps in the parent issue that you no longer observe the problem outlined in the issue report? |
Contributor
Author
joestringer
enabled auto-merge
October 22, 2026 21:12
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

Please ensure your pull request adheres to the following guidelines:
description and a
Fixes: #XXXline if the commit addresses a particularGitHub issue.
Fixes: <commit-id>tag, thenplease add the commit author[s] as reviewer[s] to this issue.
in accordance with the Cilium AI Policy, and indicate the rating using
AI Influence Level.
This PR was prepared with AIL:3. I personally reviewed the change, checked the
rendered Service for every combination of the new values, and ran the chart lint
and the values and schema checks.
Before: the shared
cilium-ingressService always carries port 80 next to port 443, and no Helm value removes it. On a cloud provider that means the load balancer always comes up with a plain HTTP listener. Where an organization's policy forbids HTTP listeners, that load balancer gets deleted by an automated sweep, so Cilium Ingress is unusable without a mutating admission policy that patches the Service after Helm has written it. That is what the issue reporter ended up doing.After: two new values,
ingressController.service.insecurePortEnabledandingressController.service.securePortEnabled, decide whether each port is listed on the shared Service. Both default totrue, so an existing install renders exactly the Service it rendered before. WithinsecurePortEnabled: falseonly the HTTPS port is left and the load balancer comes up without an HTTP listener.How: the two port entries in
cilium-ingress-service.yamlare guarded by the matching value, andvalidate.yamlrejects an install that turns both off, since a Service needs at least one port.values.yaml,values.schema.json, the chart README and the Helm reference are regenerated with the repo tooling.On naming, since this is filed as a CFP:
insecurePortEnabledandsecurePortEnabledfollowinsecureNodePortandsecureNodePort, which already sit next to them underingressController.service. I am happy to rename them if you prefer a different shape, for example a single list of ports.Scope: this covers shared mode, which is the Service the issue is about. Dedicated mode Services are built by the operator, and
getServiceinoperator/pkg/model/translation/ingress/dedicated_ingress.goalready omits port 80 for a TLS only Ingress.Verified on this branch:
helm templatewithingressController.enabled=trueand no other flags renders the same Service and EndpointSlice asmain. Diffing the full chart output before and after the change shows no difference outside the generated certificates.insecurePortEnabled=falserenders only thehttpsport,securePortEnabled=falserenders only thehttpport, and both together fail with the message fromvalidate.yaml.type=NodePortwithinsecurePortEnabled=falseandsecureNodePort=30443still puts the node port on the remaining entry.hostNetwork.enabled=truewithinsecurePortEnabled=falserenders a ClusterIP Service with only thehttpsport.make -C install/kubernetes lintandmake -C install/kubernetes check-values-yamlboth pass, and rerunning helm-docs, helm-schema and the Documentationupdate-helm-valuestarget produces no further diff.Fixes: #48108