grpc/examples/cpp/csm
Eugene Ostroukhov 97e889d568 [examples] Update SSA client example (#35799)
1. Update cookies after all successful RPCs. Ensures that client adapts to changes in cluster configuration.
2. Reorganized client code to extract more snippets that could be copy-pasted.
3. Docker build now uses the same bazel build as outside code.

Closes #35799

COPYBARA_INTEGRATE_REVIEW=https://github.com/grpc/grpc/pull/35799 from eugeneo:tasks/ssa-example-bug 801205a532
PiperOrigin-RevId: 603805785
2024-02-02 15:42:19 -08:00
..
BUILD [CSM] Add CSM Example client and server images (#34447) 2023-09-24 12:07:17 -07:00
Dockerfile.client [examples] Update SSA client example (#35799) 2024-02-02 15:42:19 -08:00
Dockerfile.server [CSM] Add CSM Example client and server images (#34447) 2023-09-24 12:07:17 -07:00
README.md [examples] Update SSA client example (#35799) 2024-02-02 15:42:19 -08:00
csm_greeter_client.cc [examples] Update SSA client example (#35799) 2024-02-02 15:42:19 -08:00
csm_greeter_server.cc [CSM] Add CSM Example client and server images (#34447) 2023-09-24 12:07:17 -07:00

README.md

gRPC C++ CSM Hello World Example

This CSM example builds on the Hello World Example and changes the gRPC client and server to accept configuration from an xDS control plane and test SSA and CSM observability

Configuration

The client takes the following command-line arguments -

  • target - By default, the client tries to connect to the xDS "xds:///helloworld:50051" and gRPC would use xDS to resolve this target and connect to the server backend. This can be overriden to change the target.
  • cookie_name - session affinity cookie name. Defaults to "GSSA"
  • delay_s - delay (in seconds) between the RPCs. Default value is 5

The server takes the following command-line arguments -

  • port - Port on which the Hello World service is run. Defaults to 50051.

Building

From the gRPC workspace folder:

Client:

docker build -f examples/cpp/csm/Dockerfile.client

Server:

docker build -f examples/cpp/csm/Dockerfile.server

To push to a registry, add a tag to the image either by adding a -t flag to docker build command above or run:

docker image tag ${sha from build command above} ${tag}

And then push the tagged image using docker push