Version: v0.0.0-...-de0298f Latest Latest

This package is not in the latest version of its module.

Go to latest
Published: Jul 28, 2017 License: Apache-2.0


Google Cloud Endpoints Sample for Go using gRPC

This sample demonstrates how to use Google Cloud Endpoints using Go and gRPC.

For a complete walkthrough, see the following guides:

Test the code locally (optional)

Run the backend using go run:

$ go run server/main.go

Send a request from another terminal:

$ go run client/main.go
2017/03/30 17:08:32 Greeting: Hello world

Deploying service config

  1. First, generate out.pb from the proto file:

    protoc --include_imports --include_source_info helloworld/helloworld.proto --descriptor_set_out out.pb
  2. Edit api_config.yaml. Replace YOUR_PROJECT_ID:

  3. Deploy your service:

    gcloud service-management deploy out.pb api_config.yaml

    Your config ID should be printed out, it looks like 2017-03-30r0. Take a note of it, you'll need it later.

    You can list the config IDs using this command:

    gcloud service-management configs list --service

Building the server's Docker container

Build and tag your gRPC server, storing it in your private container registry:

gcloud container builds submit --tag .

Deploy to GCE or GKE

Deploy to GCE
  1. Create an instance and SSH into it:

    gcloud compute instances create grpc-host --image-family gci-stable --image-project google-containers --tags=http-server
    gcloud compute ssh grpc-host
  2. Set some environment variables (you'll need to manually set the service config ID):

    GOOGLE_CLOUD_PROJECT=$(curl -s "" -H "Metadata-Flavor: Google")
    SERVICE_CONFIG_ID=<Your Config ID>
  3. Pull your credentials to access your private container registry:

  4. Run your gRPC server's container:

    docker run -d --name=grpc-hello${GOOGLE_CLOUD_PROJECT}/go-grpc-hello:1.0
  5. Run Endpoints proxy:

    docker run --detach --name=esp \
        -p 80:9000 \
        --link=grpc-hello:grpc-hello \ \
        -s ${SERVICE_NAME} \
        -v ${SERVICE_CONFIG_ID} \
        -P 9000 \
        -a grpc://grpc-hello:50051
  6. Get the IP address of your secured gRPC server:

    gcloud compute instances list --filter=grpc-host
  7. Send a request to the API server (see "Running the client" below)

Deploy to GKE

If you haven't got a cluster, first create one.

  1. Edit container-engine.yaml. Replace <YOUR_PROJECT_ID> and <SERVICE_CONFIG_ID>.

  2. Create the deployment and service:

    kubectl apply -f container-engine.yaml
  3. Wait until the load balancer is active:

    kubectl get svc grpc-hello --watch
  4. Send a request to the API server (see "Running the client" below)

Running the client

  1. First, create a project API key.

  2. Then, after you have your server's IP address (via GKE's kubectl get svc or your GCE instance's IP), run:

    go run client/main.go -api-key=AIza.... -addr=YOUR_SERVER_IP_ADDRESS:80 [message]


Path Synopsis
Package helloworld is a generated protocol buffer package.
Package helloworld is a generated protocol buffer package.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL