Extensible Service Proxy
Permalink
Failed to load latest commit information.
client/custom Load client keys from GCS (#209) Jul 12, 2017
doc Add --enable_experimental_multiple_api_config flag (#439) Aug 29, 2018
docker Update Dockerfile to expose port 8080 by default (#148) Apr 17, 2017
include support "grpc-status-details-bin" (#334) Jan 11, 2018
jenkins Jenkinsfile update for kubernetes-plugin (#313) Nov 20, 2017
script Copy nginx-debug image into right place (#432) Aug 18, 2018
src Update version number to 1.25.0. (#440) Aug 29, 2018
start_esp Add --enable_experimental_multiple_api_config flag (#439) Aug 29, 2018
test Disable GCE E2E tests. (#427) Aug 15, 2018
third_party buildable with bazel 0.8 (#319) Feb 2, 2018
tools Move GceMetadata fetching to start_esp. (#435) Aug 25, 2018
.gitattributes Endpoints Server Proxy initial commit. Jun 18, 2016
.gitignore Load client keys from GCS (#209) Jul 12, 2017
.gitmodules Use api_manager codes from istio/proxy (#46) Dec 7, 2016
.travis.yml Fix Travis TSAN build Aug 22, 2016
AUTHORS Change "Endpoints Server Proxy" to "Extensible Service Proxy" in (#11) Nov 16, 2016
BUILD Revert "Upgrade gRPC to v1.6.0 (#256)" (#321) Dec 13, 2017
CHANGELOG.md Update CHANGELOG for release 1.24 (#441) Aug 29, 2018
CODE_OF_CONDUCT.md Endpoints Server Proxy initial commit. Jun 18, 2016
CONTRIBUTING.md Endpoints Server Proxy initial commit. Jun 18, 2016
Jenkinsfile Disable GCE E2E tests. (#427) Aug 15, 2018
LICENSE Change "Endpoints Server Proxy" to "Extensible Service Proxy" in (#11) Nov 16, 2016
README.md Move start_esp from the endpoints-tools repository to the ESP reposit… Jul 23, 2018
WORKSPACE Move start_esp from the endpoints-tools repository to the ESP reposit… Jul 23, 2018
nginx.bzl buildable with bazel 0.8 (#319) Feb 2, 2018
repositories.bzl Update to service_control_client with gcc7 fix (#372) Apr 17, 2018

README.md

The Extensible Service Proxy

Extensible Service Proxy, a.k.a. ESP is a proxy which enables API management capabilities for JSON/REST or gRPC API services. The current implementation is based on an NGINX HTTP reverse proxy server.

ESP provides:

  • Features: authentication (auth0, gitkit), API key validation, JSON to gRPC transcoding, as well as API-level monitoring, tracing and logging. More features coming in the near future: quota, billing, ACL, etc.

  • Easy Adoption: the API service can be implemented in any coding language using any IDLs.

  • Platform flexibility: support the deployment on any cloud or on-premise environment.

  • Superb performance and scalability: low latency and high throughput

ESP can Run Anywhere

However, the initial development was done on Google App Engine Flexible Environment, GCE and GKE for API services using Open API Specification and so our instructions and samples are focusing on these platforms. If you make it work on other infrastructure and IDLs please let us know and contribute instructions/code.

Prerequisites

Common prerequisites used irrespective of operating system and build tool chain are:

Getting ESP

To download the Extensible Service Proxy source code, clone the ESP repository:

# Clone ESP repository
git clone https://github.com/cloudendpoints/esp

# Initialize Git submodules.
git -C esp submodule update --init --recursive

Repository Structure

  • doc: Documentation
  • docker: Scripts for packaging ESP in a Docker image.
  • include: Extensible Service Proxy header files.
  • src: Extensible Service Proxy source.
  • google and third_party: Git submodules containing dependencies of ESP, including NGINX.
  • script: Scripts used for build, test, and continuous integration.
  • test: Applications and client code used for end-to-end testing.
  • tools: Assorted tooling.
  • start_esp: A Python start-up script for the ESP proxy. The script includes a generic nginx configuration template and fetching logic to retrieve service configuration from Google Service Management service.

ESP Tutorial

To find out more about building, running, and testing ESP, please review

Contributing

Your contributions are welcome. Please follow the contributor guidlines.