Skip to content
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

Add an example.md file to show how to deploy the client and server #5

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
95 changes: 95 additions & 0 deletions EXAMPLE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,95 @@
# Key point of usage
* client side must set the bootstrap content
* suggest to use the env config `GRPC_XDS_BOOTSTRAP_CONFIG`
* The `target` of the client service must be `xds:///{k8s-service-name}.{service-namespace}:{port-number}`
* Because the name of xDS `Listener` Resource is `targetHostPortNumber := net.JoinHostPort(fullName, strconv.Itoa(int(port.Port)))`
* The kubernetes Service Resource of the grpc server must have a name
* Because if no name, the name of `ClusterLoadAssignment` Resource will be `portName = fmt.Sprintf("%s.%s:%d", ep.Name, ep.Namespace, port.Port)`
* And it will miss-match the name of `Cluster` Resource, which is `targetHostPort := net.JoinHostPort(fullName, port.Name)`

## Client Example
```yaml
apiVersion: apps/v1
kind: Deployment
metadata:
namespace: dev
name: greeter-client
labels:
app: greeter-grpc-client
spec:
replicas: 1
selector:
matchLabels:
app: greeter-grpc-client
template:
metadata:
labels:
app: greeter-grpc-client
spec:
containers:
- name: greeter-grpc-client
image: greeter-grpc-client:1.0.0 # use your own grpc client service image
ports:
- containerPort: 8080
env:
- name: GRPC_GREET_SERVER_TARGET
# must be xds:///{k8s-service-name}.{service-namespace}:{port-number}
value: "xds:///service-greeter.dev:8972"
- name: GRPC_XDS_BOOTSTRAP_CONFIG
value: "{\"xds_servers\":[{\"server_uri\":\"xds-server.default:5000\",\"channel_creds\":[{\"type\":\"insecure\"}],\"server_features\":[\"xds_v3\"]}],\"node\":{\"id\":\"client-greeter\",\"locality\":{\"zone\":\"k8s\"}}}"
---
apiVersion: v1
kind: Service
metadata:
namespace: dev
name: client-greeter
spec:
selector:
app: greeter-grpc-client
ports:
- protocol: TCP
port: 8080
targetPort: 8080
```
## Server Example
```yaml
apiVersion: apps/v1
kind: Deployment
metadata:
namespace: dev
name: greeter-service
labels:
app: greeter-grpc-service
spec:
replicas: 3
selector:
matchLabels:
app: greeter-grpc-service
template:
metadata:
labels:
app: greeter-grpc-service
spec:
containers:
- name: greeter-grpc-service
image: greeter-grpc-service:1.0.0 # use your own server image
ports:
- name: grpc
containerPort: 8972
---
apiVersion: v1
kind: Service
metadata:
namespace: dev
name: service-greeter
spec:
selector:
app: greeter-grpc-service
ports:
- protocol: TCP
# must have the port name
name: grpc
port: 8972
targetPort: 'grpc'
```