Deploying the Endpoints Configuration

After you have configured your protobuf descriptor file and gRPC API configuration file, you deploy them so that Cloud Endpoints has the information that it needs to manage your API. To deploy the Endpoints configuration, you use the gcloud endpoints services deploy command. This command uses Service Infrastructure, Google’s foundational services platform, used by Cloud Endpoints and other services to create and manage APIs and services This page describes how to deploy your configuration files to Cloud Endpoints.

Prerequisites

As a starting point, this page assumes that you have:

If you are using a custom domain name (for example, my.company.com), you must verify the domain name before you can deploy the gRPC configuration files.

Preparing Cloud SDK for deployment

You use the gcloud command line tool to deploy the configuration. See the gcloud Reference for more information about the commands.

To prepare for the deployment:

  1. Install and initialize the Cloud SDK.
  2. Update Cloud SDK:
    gcloud components update
    
  3. Make sure that Cloud SDK is authorized to access your data and services:
    gcloud auth login
    

    A new browser tab opens and you are prompted to choose an account.

  4. Set the default project. Replace [YOUR-PROJECT-ID] with your GCP project ID
    gcloud config set project [YOUR-PROJECT-ID]
    
  5. If you will be deploying your API backend to either Kubernetes or Kubernetes Engine, run the following command to acquire new user credentials to use for Application Default Credentials. The user credentials are needed to authorize kubectl.
    gcloud auth application-default login
    A new browser tab opens and you are prompted to choose an account.

Deploying the configuration files

  1. Make sure you are in the directory where api_descriptor.pb and api_config.yaml are located.
  2. Deploy the proto descriptor file and the configuration file using the gcloud command-line tool:
    gcloud endpoints services deploy api_descriptor.pb api_config.yaml
    

    As it is creating and configuring the service, Service Management outputs a great deal of information to the terminal. On successful completion, you will see a line like the following that displays the service configuration ID and the service name:

    Service Configuration [2017-02-13r0] uploaded for service [bookstore.endpoints.example-project.cloud.goog]
    

    In the above example, 2017-02-13r0 is the service configuration ID and bookstore.endpoints.example-project.cloud.goog is the service name. The service configuration ID consists of a date stamp followed by a revision number. If you deploy the Endpoints configuration again on the same day, the revision number is incremented in the service configuration ID.

If your service's configuration is in multiple YAML files, you can pass them all to the deploy command. For example, the Bookstore has its basic configuration in api_config.yaml, but you can enable HTTP transcoding for the service by also deploying api_config_http.yaml, which has additional configuration for this feature:

gcloud endpoints services deploy api_descriptor.pb api_config.yaml api_config_http.yaml

Note that if there are conflicting values in your YAML files, the values in the last specified file override the others. You can find out more about how Cloud Endpoints handles merging multiple YAML files in Configuring a gRPC API Service.

If you get an error message, see Troubleshooting Endpoints Configuration Deployment for information on troubleshooting the error.

Redeploying

Whenever you change something in your service configuration yaml file, be sure to deploy it again so that Cloud Endpoints has the most recent version of your API's service configuration. If the configuration change does not require that you redeploy your API (for example, perhaps you changed selector:allow_unregistered_calls to false), if you have previously deployed ESP with the rollout option set to managed, you do not need to redeploy/restart ESP. This option configures ESP to use the latest deployed service configuration. When you specify this option, within a minute after you deploy a new service configuration, ESP detects the change and automatically begins using it. We recommend that you specify this option instead of a specific configuration ID for ESP to use.

What's next

Was this page helpful? Let us know how we did:

Send feedback about...

Cloud Endpoints with gRPC
Need help? Visit our support page.