Getting Started with the Demo installation
TEG offers a demo installation chart, which comes along with all the necessary configurations to set up TEG and required dependencies for Rate limiting and observability. The demo installation chart installs:
- TEG
- Redis for rate limiting
- Grafana for visualisations
- OpenTelemetry Collector for collecting OTEL format observability data
- Loki as Log collection backend
- Tempo as Tracing backend
- Prometheus as metrics backend
- Demo app for testing traffic
Installing the demo
Users can install the demo chart in a Kubernetes cluster by running:
helm install teg-demo examples/teg-demo-helm -n envoy-gateway-system --create-namespace
The above command will install all the required components for TEG in envoy-gateway-system namespace. The above chart will also install a demo backend application with a gateway and HTTP route for the application configured.
Testing the configuration
External LoadBalancer Support
If the cluster has external load balancer support, such as in cloud environments or when using MetalLB, you can send traffic directly to the gateway using the external IP or the external hostname(in cases when a hostname exposes LB).
To find the external IP, run the following:
export GATEWAY_HOST=$(kubectl get svc/${ENVOY_SERVICE} -n envoy-gateway-system -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
If a hostname exposes LB, replace ip in the above command with hostname.
You can curl the app through envoy proxy by running:
curl --verbose --header "Host: www.example.com" http://$GATEWAY_HOST/get
No external LB support
If the cluster has no external LB support, such as minikube or kind clusters, you can send the traffic to your cluster by creating a port-forwarding tunnel to the envoy proxy service.
Run the below-mentioned commands to find the envoy service name and create a port-forward tunnel:
export ENVOY_SERVICE=$(kubectl get svc -n envoy-gateway-system --selector=gateway.envoyproxy.io/owning-gateway-namespace=default,gateway.envoyproxy.io/owning-gateway-name=eg -o jsonpath='{.items[0].metadata.name}')
kubectl -n envoy-gateway-system port-forward service/${ENVOY_SERVICE} 8888:80 &
Once the tunnel is created, we can start sending the traffic to the demo application by running:
curl --verbose --header "Host: www.example.com" http://localhost:8888/get
Visualizing Observability Data
As mentioned above, the demo chart comes with a pre-configured Grafana stack for Metrics, Logs, and Tracing support.
Accessing Grafana deployment
To access the Grafana deployment, users can establish a port-forward tunnel to the Grafana dashboard by running the following:
kubectl port-forward -n envoy-gateway-system deployment/grafana 3000
After running the above command, users will be able to access the Grafana dashboard at http://localhost:3000
To login into the Grafana deployment, users can use the credentials admin/admin
Note: For better visualizations, you can try running continuous traffic to the demo application by running the following in a separate process:
while true; do curl --verbose --header "Host: www.example.com" http://localhost:8888/get; sleep 5; done
Metrics Dashboards
The Grafana deployments come configured with two dashboards:
Envoy Global Dashboard
The dashboard highlights aggregated metrics for all of your envoy proxy deployments, visualizing metrics:
- Uptime
- Resource consumption metrics
- Upstream and Downstream connection and request metrics
- Number of Active connections
- Healthy Endpoints
- HTTP latencies
- TCP bytes received and transmitted
Envoy Clusters Dashboard
This dashboard highlights metrics for clusters configured in your envoy proxy configuration, visualizing the metrics listed above for each cluster.
Logs visualization
The demo chart configures the Loki data source with the Grafana dashboard. Users can dig into the access logs for the proxies by using the Explore tab in the Grafana deployment and selecting the Loki data source.
Tracing Visualization
The demo chart also configures the Tracing data source with the Grafana dashboard. Users can dig into the access logs for the proxies by using the Explore tab in the Grafana deployment and selecting the Tempo data source.