-
Notifications
You must be signed in to change notification settings - Fork 829
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
Allocator gRPC doesn't work without TLS #1945
Comments
As per our bug template, please provide the rest of the details of your installation: Environment:
I'm specifically interested in the install method, and what parameters you used on installation. What settings did you provide for |
Sorry. I filled out environment template. Environment: Kubernetes version (use kubectl version): 1.17 |
@pooneh-m can you look at this? I feel like this came up a while ago - I thought you could setup the allocator without TLS, but I couldn't find the documentation. Can you confirm this is possible? (we should probably add a section to https://agones.dev/site/docs/advanced/allocator-service/) @k-kai can you also provide the error message you are getting when you try and connect, so we can double check this issue, and also confirm on our end? |
Sorry. I can't find the error message now, because I have already fixed my client to use a http client without TLS, but you can see the error message if you use a gRPC client with grpc.WithInsecure() DialOption.
I think there aren't examples and tests to use gRPC without TLS. |
@k-kai thanks for reporting the issue. I tried the gRPC service with mTLS disabled and it works, but with mTLS and TLS both disabled, it does not work anymore. I tried the Agones v1.10 installation and disabling TLS works; so something is broken between the versions 1.10 and version 1.11., though looking at the code, I haven't found the issue yet. As you pointed out because Agones does not have a functionality to test different helm configurations, the issue was not caught before the release. |
@pooneh-m Thanks for confirming. Lines 69 to 74 in 93d8c10
It's the experimental function. When the gRPCServer(before version 1.11.0,) without TLS worked, it had used a gRPCServer.Serve function. Lines 183 to 187 in 13a0e14
The same issue as below. |
Thanks @k-kai. Reading about it more it seems that's the issue. @kdima do you have a suggestion? |
This library just got shared with me for something else - https://github.com/soheilhy/cmux Does this help at all? |
This grpc/grpc-go#555 (comment) also suggested the library you shared. It may work. I am not sure about the quality. I suggest for the first step, documenting that disabling the TLS is only for the REST API. WDYT? If someone has the cycle to work on this, then we can introduce the functionality back for gRPC. @k-kai what is the use case for you to disable the TLS for gRPC? Client can always ignore the cert provided by the server. |
Crux comes from a Googler I believe works on gRPC, so I think we can count on it. Also comes quite well recommended. But documentation seems like a good first step at least. |
In my case, I’d like to deploy the Agones and other services on the same network.(VPC) |
* Limit the disableTLS to only gRPC API Issue #1945 * Update site/content/en/docs/Installation/Install Agones/helm.md Co-authored-by: Mark Mandel <markmandel@google.com>
We just merged #2272 which should make it possible to run gRPC without TLS again. You will need to separate the gRPC server from the REST server (either by disabling the REST server or by running them on separate ports) and then you can disable TLS. |
@roberthbailey Saw this as a good first issue, is this stale given your previous comment? |
Yes, I think we can close this. @2272 makes it so that you can run gRPC without TLS as long as you run it on a separate port from the rest endpoint (but it's a good idea to separate them in any case for performance reasons). |
Sorry, I didn't get back to comments. |
What you expected to happen:
Probably grpc/grpc-go#555
How to reproduce it (as minimally and precisely as possible):
Use gRPC Client with grpc.WithInsecure() DialOption.
Environment:
The text was updated successfully, but these errors were encountered: