Skip to content
Envoy Operator creates/configures/manages Envoy clusters atop Kubernetes
Branch: master
Clone or download
yuval-k More template (#8)
* use pointer

* transform metadata

* fix compilation

* go modules

* add cloudbuild that runs the tests

* pr fixes
Latest commit c0c3485 Feb 21, 2019
Type Name Latest commit message Commit time
Failed to load latest commit information.
cmd add flag for setting namespace May 10, 2018
config bug fixes May 8, 2018
deploy only update svc if existing service does not match envoy spec, use ma… May 10, 2018
images change logo May 10, 2018
pkg More template (#8) Feb 21, 2019
tmp adding the not-so-temp folder May 10, 2018
.gitignore minor nits, readme May 10, 2018
LICENSE Create LICENSE Oct 9, 2018
Makefile skip regenerating operator.yaml May 10, 2018 Update May 10, 2018
cloudbuild.yaml More template (#8) Feb 21, 2019
go.sum More template (#8) Feb 21, 2019

Envoy operator

The Envoy Operator project is a Kubernetes Operator. Its purpose is to enable easy deployment of Envoy proxies using a high level declarative API.

The Envoy Operator currently supports deploying proxies as standalone pods, but will soon support injecting Envoy proxies as sidecar containers into existing pods to serve as transparent proxies for use in a service mesh such as Istio.

The Envoy Operator was built using the operator sdk.

Quick usage

Deploy the Operator:

kubectl create -f
kubectl create -f
kubectl create -f

Create an Envoy pod configured to use ads-service.default.svc.cluster.local as its xDS server:

cat <<EOF | kubectl create -f -
apiVersion: ""
kind: "Envoy"
  name: "myingress"
  adsServer: ads-service.default.svc.cluster.local
  adsPort: 8081
  clusterIdTemplate: ingress
  nodeIdTemplate: "ingress-{{.PodName}}"

How does it work?

The operator transforms the Envoy spec defined here to a deployment and a configmap that contains Envoy's static config file.

Note that some of the parameters are templates. these templates can be filled with the kube downward api. Example:

apiVersion: ""
kind: "Envoy"
  name: "myingress"
  nodeIdTemplate: "{{.PodName}}"

The node id given to each Envoy will match its pod name.

The full template interpolation interface is defined here and should cover all of the downward API (labels and annotations included).

Use cases

This operator's main uses case is with an ADS-enabled xDS server such as Gloo. We are looking to hear more from the community about what other uses cases are of interest.

Road Map

  • SSL \ mTLS configuration
  • Pod Injection
  • Provide Locality information for zone aware routing.
  • Hot Restarts


Please join us on our slack channel with any questions, feedback, or suggestions.

You can’t perform that action at this time.