Linkerd-demo-ll is a demo comparing kube-dns and linkerd with a slightly complicated microservice graph. Linkderd (http://linkerd.io) is a proxy which adds service discovery, routing and failure handling to services. It integrates with kubernetes for service discovery.
The microservices directory contains the microservices used in this demo.
- Edge: ui templates, takes public traffic
- Login: verifies user logins
- Reports: generates reports
- Weather: produces weather data
- Stock: produces stocks data
The kube-dns-test folder contains the kubernetes manifests to setup a functional version of the system using kube-dns for discovery.
- Prometheus
- Microservice service definitions
The linkerd-test folder contains the kubernetes manifests to setup a functional version of the system using linkerd for discovery. Do not use this config inside minikube[1].
- Prometheus
- Microservice service definitions
- Linkerd daemonset
The minikube-linkerd-test contains the kubernetes manifests to setup a functional version of the system using linkerd for discovery inside of minikube.
- Prometheus
- Microservice service definitions
- Linkerd daemonset
Prometheus is setup so that we have a stable platform to compare metrics on. Linkerd provides its own metrics collection and dashboard, but it is obviously not avaliable for kube-dns. Prometheus is configured to perform scraping jobs against the kubernetes services, pulling both node metrics and pod intrementation metrics. The microservice http endpoints are instrumented using the prometheus go libraries [2].
https://coreos.com/blog/monitoring-kubernetes-with-prometheus.html
The docker containers used for this demo are hosted at http://quay.io/sevii. They can be built from source using the build.sh file in each microservice folder. This file ensure that the go compiler target linux when it creates the binary. The binary is then added to a docker container.