go-control-plane

module
v0.0.0-...-113c6ea Latest Latest
Warning

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

Go to latest
Published: Nov 27, 2019 License: Apache-2.0

README

control-plane

CircleCI Go Report Card GoDoc codecov

This repository contains a Go-based implementation of an API server that implements the discovery service APIs defined in data-plane-api.

Scope

Due to the variety of platforms out there, there is no single control plane implementation that can satisfy everyone's needs. Hence this code base does not attempt to be a full scale control plane for a fleet of Envoy proxies. Instead, it provides infrastructure that is shared by multiple different control plane implementations. The components provided by this library are:

  • API Server: A generic gRPC based API server that implements xDS APIs as defined in the data-plane-api. The API server is responsible for pushing configuration updates to Envoys. Consumers should be able to import this go library and use the API server as is, in production deployments.

  • Configuration Cache: The library will cache Envoy configurations in memory in an attempt to provide fast response to consumer Envoys. It is the responsibility of the consumer of this library to populate the cache as well as invalidate it when necessary. The cache will be keyed based on a pre-defined hash function whose keys are based on the Node information.

At this moment, this repository will not tackle translating platform specific representation of resources (e.g., services, instances of services, etc.) into Envoy-style configuration. Based on usage and feedback, we might decided to revisit this aspect at a later point in time.

Requirements

  1. Go 1.9+

Quick start

  1. Setup tools and dependencies
make tools
make depend.install
  1. Edit the code in your favorite IDE

  2. Format, vet and lint the code

make check
  1. Build and test
make build
make test
  1. Run integration test against the latest Envoy docker image:
make integration.docker

Directories

Path Synopsis
envoy
admin/v2alpha
Package envoy_admin_v2alpha is a generated protocol buffer package.
Package envoy_admin_v2alpha is a generated protocol buffer package.
api/v2
Package v2 is a generated protocol buffer package.
Package v2 is a generated protocol buffer package.
api/v2/auth
Package auth is a generated protocol buffer package.
Package auth is a generated protocol buffer package.
api/v2/cluster
Package cluster is a generated protocol buffer package.
Package cluster is a generated protocol buffer package.
api/v2/core
Package core is a generated protocol buffer package.
Package core is a generated protocol buffer package.
api/v2/endpoint
Package endpoint is a generated protocol buffer package.
Package endpoint is a generated protocol buffer package.
api/v2/listener
Package listener is a generated protocol buffer package.
Package listener is a generated protocol buffer package.
api/v2/ratelimit
Package ratelimit is a generated protocol buffer package.
Package ratelimit is a generated protocol buffer package.
api/v2/route
Package route is a generated protocol buffer package.
Package route is a generated protocol buffer package.
config/accesslog/v2
Package v2 is a generated protocol buffer package.
Package v2 is a generated protocol buffer package.
config/bootstrap/v2
Package v2 is a generated protocol buffer package.
Package v2 is a generated protocol buffer package.
config/filter/accesslog/v2
Package v2 is a generated protocol buffer package.
Package v2 is a generated protocol buffer package.
config/filter/fault/v2
Package v2 is a generated protocol buffer package.
Package v2 is a generated protocol buffer package.
config/filter/http/buffer/v2
Package v2 is a generated protocol buffer package.
Package v2 is a generated protocol buffer package.
config/filter/http/ext_authz/v2alpha
Package v2alpha is a generated protocol buffer package.
Package v2alpha is a generated protocol buffer package.
config/filter/http/fault/v2
Package v2 is a generated protocol buffer package.
Package v2 is a generated protocol buffer package.
config/filter/http/gzip/v2
Package v2 is a generated protocol buffer package.
Package v2 is a generated protocol buffer package.
config/filter/http/header_to_metadata/v2
Package v2 is a generated protocol buffer package.
Package v2 is a generated protocol buffer package.
config/filter/http/health_check/v2
Package v2 is a generated protocol buffer package.
Package v2 is a generated protocol buffer package.
config/filter/http/ip_tagging/v2
Package v2 is a generated protocol buffer package.
Package v2 is a generated protocol buffer package.
config/filter/http/jwt_authn/v2alpha
Package envoy_config_filter_http_jwt_authn_v2alpha is a generated protocol buffer package.
Package envoy_config_filter_http_jwt_authn_v2alpha is a generated protocol buffer package.
config/filter/http/lua/v2
Package v2 is a generated protocol buffer package.
Package v2 is a generated protocol buffer package.
config/filter/http/rate_limit/v2
Package v2 is a generated protocol buffer package.
Package v2 is a generated protocol buffer package.
config/filter/http/rbac/v2
Package v2 is a generated protocol buffer package.
Package v2 is a generated protocol buffer package.
config/filter/http/router/v2
Package v2 is a generated protocol buffer package.
Package v2 is a generated protocol buffer package.
config/filter/http/squash/v2
Package v2 is a generated protocol buffer package.
Package v2 is a generated protocol buffer package.
config/filter/http/transcoder/v2
Package v2 is a generated protocol buffer package.
Package v2 is a generated protocol buffer package.
config/filter/network/client_ssl_auth/v2
Package v2 is a generated protocol buffer package.
Package v2 is a generated protocol buffer package.
config/filter/network/ext_authz/v2
Package v2 is a generated protocol buffer package.
Package v2 is a generated protocol buffer package.
config/filter/network/http_connection_manager/v2
Package v2 is a generated protocol buffer package.
Package v2 is a generated protocol buffer package.
config/filter/network/mongo_proxy/v2
Package v2 is a generated protocol buffer package.
Package v2 is a generated protocol buffer package.
config/filter/network/rate_limit/v2
Package v2 is a generated protocol buffer package.
Package v2 is a generated protocol buffer package.
config/filter/network/redis_proxy/v2
Package v2 is a generated protocol buffer package.
Package v2 is a generated protocol buffer package.
config/filter/network/tcp_proxy/v2
Package v2 is a generated protocol buffer package.
Package v2 is a generated protocol buffer package.
config/grpc_credential/v2alpha
Package v2alpha is a generated protocol buffer package.
Package v2alpha is a generated protocol buffer package.
config/health_checker/redis/v2
Package v2 is a generated protocol buffer package.
Package v2 is a generated protocol buffer package.
config/metrics/v2
Package v2 is a generated protocol buffer package.
Package v2 is a generated protocol buffer package.
config/ratelimit/v2
Package v2 is a generated protocol buffer package.
Package v2 is a generated protocol buffer package.
config/rbac/v2alpha
Package v2alpha is a generated protocol buffer package.
Package v2alpha is a generated protocol buffer package.
config/resource_monitor/fixed_heap/v2alpha
Package v2alpha is a generated protocol buffer package.
Package v2alpha is a generated protocol buffer package.
config/trace/v2
Package v2 is a generated protocol buffer package.
Package v2 is a generated protocol buffer package.
config/transport_socket/capture/v2alpha
Package v2 is a generated protocol buffer package.
Package v2 is a generated protocol buffer package.
data/accesslog/v2
Package envoy_data_accesslog_v2 is a generated protocol buffer package.
Package envoy_data_accesslog_v2 is a generated protocol buffer package.
data/core/v2alpha
Package envoy_data_core_v2alpha is a generated protocol buffer package.
Package envoy_data_core_v2alpha is a generated protocol buffer package.
data/tap/v2alpha
Package v2 is a generated protocol buffer package.
Package v2 is a generated protocol buffer package.
extensions/filters/network/thrift_proxy/v2alpha1
Package v2 is a generated protocol buffer package.
Package v2 is a generated protocol buffer package.
extensions/filters/network/thrift_proxy/v2alpha1/router
Package router is a generated protocol buffer package.
Package router is a generated protocol buffer package.
service/accesslog/v2
Package v2 is a generated protocol buffer package.
Package v2 is a generated protocol buffer package.
service/auth/v2alpha
Package v2alpha is a generated protocol buffer package.
Package v2alpha is a generated protocol buffer package.
service/discovery/v2
Package v2 is a generated protocol buffer package.
Package v2 is a generated protocol buffer package.
service/load_stats/v2
Package v2 is a generated protocol buffer package.
Package v2 is a generated protocol buffer package.
service/metrics/v2
Package v2 is a generated protocol buffer package.
Package v2 is a generated protocol buffer package.
service/ratelimit/v2
Package v2 is a generated protocol buffer package.
Package v2 is a generated protocol buffer package.
service/trace/v2
Package v2 is a generated protocol buffer package.
Package v2 is a generated protocol buffer package.
type
Package envoy_type is a generated protocol buffer package.
Package envoy_type is a generated protocol buffer package.
type/matcher
Package matcher is a generated protocol buffer package.
Package matcher is a generated protocol buffer package.
pkg
cache
Package cache defines a configuration cache for the server.
Package cache defines a configuration cache for the server.
log
Package log provides a logging interface for use in this library.
Package log provides a logging interface for use in this library.
server
Package server provides an implementation of a streaming xDS server.
Package server provides an implementation of a streaming xDS server.
test
Package test contains test utilities
Package test contains test utilities
test/main
Package main contains the test driver for testing xDS manually.
Package main contains the test driver for testing xDS manually.
test/resource
Package resource creates test xDS resources
Package resource creates test xDS resources
util
Package util contains shared utility functions.
Package util contains shared utility functions.

Jump to

Keyboard shortcuts

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