Skip to content

garystafford/pb-greeting

Repository files navigation

Protobuf Files for Istio Observability Demo

Protocol Buffers (Protobuf) files for reference application platform, used in my Istio observability demo blog posts.

Commands

Generates (4) files: go, grpc, grpc gateway, and swagger

See Build Protocol Buffers using Docker.

go mod tidy

buf beta mod update
buf lint
buf ls-files
buf generate -v

# alternately
buf generate --path proto/greeting/v2 -v

# using protoc instead
buf protoc -I . \
  --openapiv2_out=../protobuf --openapiv2_opt=logtostderr=true \
  --go_out=../protobuf --go_opt=paths=source_relative \
  --go-grpc_out=../protobuf --go-grpc_opt=paths=source_relative \
  --grpc-gateway_out=../protobuf --grpc-gateway_opt=paths=source_relative,generate_unbound_methods=true \
  proto/greeting/v2/greeting.proto

# for python
python3 -m grpc_tools.protoc -I . \
  --python_out=../protobuf \
  --grpc_python_out=../protobuf \
  --grpc-gateway_out=../protobuf --grpc-gateway_opt=paths=source_relative,generate_unbound_methods=true \
  proto/greeting/v2/greeting.proto

Swagger

Use Docker to view Swagger doc at http://localhost:8080/.

docker run -p 8080:8080 -d --name swagger-ui \
  -e SWAGGER_JSON=/tmp/greeting/v2/greeting.swagger.json \
  -v ~/Documents/projects/protobuf:/tmp swaggerapi/swagger-ui

Sample Output an Array of Greeting

{
  "greeting": [
    {
      "id": "a9afab6a-3e2a-41a6-aec7-7257d2904076",
      "service": "Service D",
      "message": "Shalom (שָׁלוֹם), from Service D!",
      "created": "2021-06-04T14:28:32.695151047Z",
      "hostname": "service-d-565c775894-vdsjx"
    },
    {
      "id": "6d4cc38a-b069-482c-ace5-65f0c2d82713",
      "service": "Service G",
      "message": "Ahlan (أهلا), from Service G!",
      "created": "2021-06-04T14:28:32.814550521Z",
      "hostname": "service-g-5b846ff479-znpcb"
    },
    {
      "id": "988757e3-29d2-4f53-87bf-e4ff6fbbb105",
      "service": "Service H",
      "message": "Nǐ hǎo (你好), from Service H!",
      "created": "2021-06-04T14:28:32.947406463Z",
      "hostname": "service-h-76cb7c8d66-lkr26"
    },
    {
      "id": "966b0bfa-0b63-4e21-96a1-22a76e78f9cd",
      "service": "Service E",
      "message": "Bonjour, from Service E!",
      "created": "2021-06-04T14:28:33.007881464Z",
      "hostname": "service-e-594d4754fc-pr7tc"
    },
    {
      "id": "c612a228-704f-4562-90c5-33357b12ff8d",
      "service": "Service B",
      "message": "Namasté (नमस्ते), from Service B!",
      "created": "2021-06-04T14:28:33.015985983Z",
      "hostname": "service-b-697b78cf54-4lk8s"
    },
    {
      "id": "b621bd8a-02ee-4f9b-ac1a-7d91ddad85f5",
      "service": "Service C",
      "message": "Konnichiwa (こんにちは), from Service C!",
      "created": "2021-06-04T14:28:33.042001406Z",
      "hostname": "service-c-7fd4dd5947-5wcgs"
    },
    {
      "id": "52eac1fa-4d0c-42b4-984b-b65e70afd98a",
      "service": "Service A",
      "message": "Hello, from Service A!",
      "created": "2021-06-04T14:28:33.093380628Z",
      "hostname": "service-a-6f776d798f-5l5dz"
    }
  ]
}

The contents of this repository represent my viewpoints and not of my past or current employers, including Amazon Web Services (AWS). All third-party libraries, modules, plugins, and SDKs are the property of their respective owners.

About

Protobuf source code and buf configuration

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages