-
Notifications
You must be signed in to change notification settings - Fork 40k
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
IngressTLS: allow secretName to be blank for SNI routing #23500
Conversation
Thanks for your pull request. It looks like this may be your first contribution to a Google open source project. Before we can look at your pull request, you'll need to sign a Contributor License Agreement (CLA). 📝 Please visit https://cla.developers.google.com/ to sign. Once you've signed, please reply here (e.g.
|
Can one of the admins verify that this patch is reasonable to test? (reply "ok to test", or if you trust the user, reply "add to whitelist") This message may repeat a few times in short succession due to jenkinsci/ghprb-plugin#292. Sorry. Otherwise, if this message is too spammy, please complain to ixdy. |
2 similar comments
Can one of the admins verify that this patch is reasonable to test? (reply "ok to test", or if you trust the user, reply "add to whitelist") This message may repeat a few times in short succession due to jenkinsci/ghprb-plugin#292. Sorry. Otherwise, if this message is too spammy, please complain to ixdy. |
Can one of the admins verify that this patch is reasonable to test? (reply "ok to test", or if you trust the user, reply "add to whitelist") This message may repeat a few times in short succession due to jenkinsci/ghprb-plugin#292. Sorry. Otherwise, if this message is too spammy, please complain to ixdy. |
I signed the CLA |
CLAs look good, thanks! |
Labelling this PR as size/S |
Indeed:
|
As the comment you're deleting says:
The reason it is "omit-empty" or optional, is because it's the most logical way to support SNI. And when we do support SNI in the various ingress backends, it will be truly optional. The reason we validate against it is because there currently isn't an ingress backend that does it (and by isn't, I mean, isn't in a kubernetes repo that I can point to in the docs). So the risk here is that someone will see these docs: https://github.com/kubernetes/kubernetes/blob/master/pkg/apis/extensions/types.go#L658, create a secret-less Ingress on AWS, and wait around hoping for SNI. @tam7t can you describe how you're doing SNI? Are you creating multiple Ingresses each with a different host, going to a backend? Another way to express SNI is: |
I'm also not against this change, if you can produce an example that trumps the one in #19333 (comment) As discussed in that issue, SNI through Ingress will become more natural when we've resolved: #23291 |
@bprashanth I'm currently using:
Creating an ingress-per-service that may include a mix of both HTTP and TLS hosts. And using a (non-public) fork of https://github.com/macb/hing with SNI routing based on haproxy's |
@tam7t so you want to express a client advertising a different host in clientHello than in Host header? (otherwise you can just mux on rules.host right) |
Right, I have a single IP address available for ingress listening on 443 and am routing connections to appropriate backends based on TLS client hello's. |
alright, so you're not decrypting the connection since you don't have the certs. your SNI switch is only on foo.bar.com, but ideally you'd want to route it to myapplication, right? Or are you just using the tls section as an effective "boolean"? |
ah, ok i missed it. i didn't read you yaml carefully. |
Yeah, I'm essentially using the tls.hosts array as a boolean |
This makes sense if you're also listening on :80, because then you can recive plain http traffic and figure out what baz.bar.com is, but if you get stuff on :443 for one of the specified hostnames, you send it via SNI. Is this what you meant? |
Regardless if that's what you're doing or not, I think that establishes precedence. @tam7t if you can please add oneline to the end of the comments in https://github.com/kubernetes/kubernetes/blob/master/pkg/apis/extensions/types.go#L658
I'll LGTM this. |
@bprashanth I've updated the comment (and ran |
CLAs look good, thanks! |
Labelling this PR as size/M |
GCE e2e build/test passed for commit e61e524783c55794b1247b3b44454f3cd2fc271a. |
GCE e2e build/test passed for commit 113b0a9eaad548576bb0b038814cbe3218550ad6. |
@tam7t I think the unittest failure is related:
Please fix this test: https://github.com/kubernetes/kubernetes/blob/master/pkg/registry/ingress/etcd/etcd_test.go#L167 |
GCE e2e build/test passed for commit 4d22c2f. |
@tam7t LGTM, thanks |
@k8s-bot test this [submit-queue is verifying that this PR is safe to merge] |
GCE e2e build/test passed for commit 4d22c2f. |
Automatic merge from submit-queue |
…3500-upstream-release-1.2 Automated cherry pick of #23500
Commit found in the "release-1.2" branch appears to be this PR. Removing the "cherrypick-candidate" label. If this is an error find help to get your PR picked. |
…pick-of-#23500-upstream-release-1.2 Automated cherry pick of kubernetes#23500
…pick-of-#23500-upstream-release-1.2 Automated cherry pick of kubernetes#23500
The documentation states that the
IngressTLS
secretName
field isoptional
, however a validation was added to make the field required. We are using SNI-based ingress routing and would prefer to not have to add a 'placeholder' secret.