-
Notifications
You must be signed in to change notification settings - Fork 863
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
Fix GRPC address assignment to localhost by default #3083
Conversation
public InetAddress getGRPCAddress(ConnectorType connectorType) throws UnknownHostException { | ||
if (connectorType == ConnectorType.MANAGEMENT_CONNECTOR) { | ||
return InetAddress.getByName(prop.getProperty(TS_GRPC_MANAGEMENT_ADDRESS, "127.0.0.1")); | ||
} else { |
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.
should we be more explicit in the if else that the second clause is only for inference?
@@ -1,6 +1,8 @@ | |||
inference_address=http://0.0.0.0:8080 | |||
management_address=http://0.0.0.0:8081 | |||
metrics_address=http://0.0.0.0:8082 | |||
grpc_inference_address=0.0.0.0 |
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.
how is the port set now?
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.
It uses the default values from here:
serve/frontend/server/src/main/java/org/pytorch/serve/util/ConfigManager.java
Lines 360 to 368 in 89c5389
public int getGRPCPort(ConnectorType connectorType) { | |
String port; | |
if (connectorType == ConnectorType.MANAGEMENT_CONNECTOR) { | |
port = prop.getProperty(TS_GRPC_MANAGEMENT_PORT, "7071"); | |
} else { | |
port = prop.getProperty(TS_GRPC_INFERENCE_PORT, "7070"); | |
} | |
return Integer.parseInt(port); | |
} |
And is called here: https://github.com/pytorch/serve/pull/3083/files#diff-45f9e03a9d3046ef0e2c18e18b0bb9c1889f9e3ff9918568870539cc926e3895R454
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.
Added configuration option to set grpc address separately from port to maintain backwards compatibility to retain the grpc port configuration:
serve/frontend/server/src/main/java/org/pytorch/serve/util/ConfigManager.java
Lines 104 to 105 in 89c5389
private static final String TS_GRPC_INFERENCE_PORT = "grpc_inference_port"; | |
private static final String TS_GRPC_MANAGEMENT_PORT = "grpc_management_port"; |
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.
can we keep this consistent?
grpc_inference_address=http://0.0.0.0:7070
grpc_management_address=http://0.0.0.0:7071
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.
It is possible to support configuration format as grpc_inference_address=http://0.0.0.0:7070
but we've had support to configure the GRPC ports alone since v0.3.0
:
serve/frontend/server/src/main/java/org/pytorch/serve/util/ConfigManager.java
Lines 104 to 105 in 89c5389
private static final String TS_GRPC_INFERENCE_PORT = "grpc_inference_port"; | |
private static final String TS_GRPC_MANAGEMENT_PORT = "grpc_management_port"; |
To maintain backwards compatibility, I believe we'll need to retain the grpc port configuration.
If we were to allow specifying the port along with the address as grpc_inference_address=http://0.0.0.0:7070
, I believe we'll have two options:
- Ignore the grpc port configuration ex
grpc_inference_port
ifgrpc_inference_address
includes the port already. - Override the port specified in
grpc_inference_address
with the port specified ingrpc_inference_port
.
Another option is to potentially rename grpc_inference_address
to grpc_inference_ip_address
to the make the configuration name more explicit to convey what the value is intended to be.
Let me know your thoughts or suggestions on better ways to handle it.
fbd0379
to
3e02620
Compare
Description
In the current implementation, the configured GRPC port is by default associated with the wildcard address
serve/frontend/server/src/main/java/org/pytorch/serve/ModelServer.java
Line 450 in cdba0fd
Note that the grpc ports
7070
and7071
are associated with the wildcard address*
.With the fix in this PR, the grpc ports are associated with localhost(
127.0.0.1
) by default.In case of docker, the grpc address will need to be configured to
0.0.0.0
similar to the http management and inference addresses because otherwise, the grpc endpoint will not be accessible from outside the container:serve/docker/config.properties
Lines 1 to 2 in cdba0fd
Documentation already includes best practice to bind
localhost
ports to the ports exposed by docker to ensure access only to the host on which the container is running.https://github.com/pytorch/serve/tree/master/docker#security-guideline
Type of change
Please delete options that are not relevant.
Feature/Issue validation/testing
CI
Manual Test