mirror of
https://github.com/php-win-ext/grpc.git
synced 2026-04-23 08:48:11 +02:00
9c99dc2f9c
This will help us quote Xds examples in user guides without having to involve observability examples only which are dockerized today.
141 lines
3.0 KiB
Markdown
141 lines
3.0 KiB
Markdown
gRPC Hostname Example
|
|
=====================
|
|
|
|
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.
|
|
|
|
### Run the Server
|
|
|
|
1. Navigate to this directory:
|
|
|
|
```sh
|
|
cd grpc/examples/python/xds
|
|
```
|
|
|
|
2. Run the server
|
|
|
|
```sh
|
|
virtualenv venv -p python3
|
|
source venv/bin/activate
|
|
pip install -r requirements.txt
|
|
python server.py
|
|
```
|
|
|
|
### Run the Client
|
|
|
|
1. Set up xDS configuration.
|
|
|
|
After configuring your xDS server to track the gRPC server we just started,
|
|
create a bootstrap file as described in [gRFC A27](https://github.com/grpc/proposal/blob/master/A27-xds-global-load-balancing.md):
|
|
|
|
```
|
|
{
|
|
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>
|
|
}
|
|
```
|
|
|
|
2. Point the `GRPC_XDS_BOOTSTRAP` environment variable at the bootstrap file:
|
|
|
|
```
|
|
export GRPC_XDS_BOOTSTRAP=/etc/xds-bootstrap.json
|
|
```
|
|
|
|
3. Run the client:
|
|
|
|
```
|
|
python client.py xds:///my-backend
|
|
```
|
|
|
|
### Verifying Configuration with a CLI Tool
|
|
|
|
Alternatively, `grpcurl` can be used to verify your server. If you don't have it,
|
|
install [`grpcurl`](https://github.com/fullstorydev/grpcurl/releases). 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.
|
|
|
|
1. Verify the server's application-layer service:
|
|
|
|
```sh
|
|
> grpcurl --plaintext -d '{"name": "you"}' localhost:50051
|
|
{
|
|
"message": "Hello you from rbell.svl.corp.google.com!"
|
|
}
|
|
```
|
|
|
|
2. Verify that all services are available via reflection:
|
|
|
|
```sh
|
|
> grpcurl --plaintext localhost:50051 list
|
|
grpc.health.v1.Health
|
|
grpc.reflection.v1alpha.ServerReflection
|
|
helloworld.Greeter
|
|
```
|
|
|
|
3. Verify that all services are reporting healthy:
|
|
|
|
```sh
|
|
> 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"
|
|
}
|
|
```
|
|
|
|
### Running with Proxyless Security
|
|
|
|
#### Run the Server with Secure Credentials
|
|
|
|
Add the `--secure true` flag to the invocation outlined above.
|
|
|
|
```sh
|
|
python server.py --secure true
|
|
```
|
|
|
|
#### Run the Client with Secure Credentials
|
|
|
|
Add the `--secure true` flag to the invocation outlined above.
|
|
|
|
3. Run the client:
|
|
|
|
```
|
|
python client.py xds:///my-backend --secure true
|
|
```
|
|
|
|
## Building Docker
|
|
|
|
From the gRPC workspace folder:
|
|
|
|
Client:
|
|
```
|
|
docker build -f examples/python/xds/Dockerfile.client -t "${xds-example-python-client-tag}" .
|
|
```
|
|
|
|
Server:
|
|
```
|
|
docker build -f examples/python/xds/Dockerfile.server -t "${xds-example-python-server-tag}" .
|
|
```
|
|
|
|
And then push the tagged image using `docker push`.
|
|
|