The hostname example is a Hello World server whose response includes its hostname. It also supports health and reflection services. This makes it a good server to test infrastructure, like load balancing. This example depends on a gRPC version of 1.28.1 or newer.
cd grpc/examples/python/xds
virtualenv venv -p python3 source venv/bin/activate pip install -r requirements.txt python server.py
After configuring your xDS server to track the gRPC server we just started, create a bootstrap file as desribed in gRFC A27:
{ xds_servers": [ { "server_uri": <string containing URI of xds server>, "channel_creds": [ { "type": <string containing channel cred type>, "config": <JSON object containing config for the type> } ] } ], "node": <JSON form of Node proto> }
GRPC_XDS_BOOTSTRAP
environment variable at the bootstrap file:export GRPC_XDS_BOOTSTRAP=/etc/xds-bootstrap.json
python client.py xds:///my-backend
Alternatively, grpcurl
can be used to verify your server. If you don't have it, install grpcurl
. This will allow you to manually test the service.
Be sure to set up the bootstrap file and GRPC_XDS_BOOTSTRAP
as in the previous section.
> grpcurl --plaintext -d '{"name": "you"}' localhost:50051 { "message": "Hello you from rbell.svl.corp.google.com!" }
> grpcurl --plaintext localhost:50051 list grpc.health.v1.Health grpc.reflection.v1alpha.ServerReflection helloworld.Greeter
> grpcurl --plaintext -d '{"service": "helloworld.Greeter"}' localhost:50051 grpc.health.v1.Health/Check { "status": "SERVING" } > grpcurl --plaintext -d '{"service": ""}' localhost:50051 grpc.health.v1.Health/Check { "status": "SERVING" }
Add the --secure true
flag to the invocation outlined above.
python server.py --secure true
Add the --secure true
flag to the invocation outlined above.
python client.py xds:///my-backend --secure true