Pilotctl
Envoy is amazing ! And its dynamic control-plane too. However, if you are using Envoy as front-proxy,
without any ingress or service mesh, you cannot easily leverage the control plane.
Pilotctl contains:
- Some examples of Envoy used as front-proxy, controled through (Istio) Pilot standalone in a Kubernetes environment
- a command line tool to debug and interact with Pilot and Envoy proxies. Credits: it mostly adapts code from istioctl & pilot.
Usage
# Check Envoys synchronization
pilotctl proxy-status
# Check Envoys configuration diff
pilotctl proxy-status <Envoy_pod_name> --port-forward=<Envoy_admin_port>
### Expected result:
# Clusters Match
# Listeners Match
# Routes Match (RDS last loaded at Mon, 08 Jul 2019 23:07:35 CEST)
# Go to Pilot Controlz dashboard
pilotctl dashboard controlz $(kubectl get pods -l app=pilot -o=jsonpath='{.items[0].metadata.name}')
# Or to Envoy admin dashboard
pilotctl dashboard envoy -p 8001 $(kubectl get pods -l app=envoy -o=jsonpath='{.items[0].metadata.name}')
# Display routes on a given Envoy Pod
pilotctl proxy-config routes --port-forward 8001 $(kubectl get pods -l app=envoy -o=jsonpath='{.items[0].metadata.name}')
Build
# Assuming go 1.12 or greater
export GO111MODULE=on
go build .