Linkerd Setup in Minikube with Emojivoto App
1. Prerequisites
Ensure you have the following installed:
2. Start Minikube
minikube start --cpus=4 --memory=8192 --kubernetes-version=v1.28.03. Install Linkerd CLI
curl -sL https://run.linkerd.io/install | sh
export PATH=$HOME/.linkerd2/bin:$PATH
linkerd version4. Install Linkerd in Minikube
Install CRDs
linkerd install --crds | kubectl apply -f -Install Control Plane
linkerd install --set proxyInit.runAsRoot=true | kubectl apply -f -Verify Installation
linkerd check5. Install Linkerd Viz (Observability Extension)
linkerd viz install | kubectl apply -f -
linkerd viz checkTo access the dashboard:
linkerd viz dashboard &6. Deploy the Emojivoto App
kubectl apply -f https://run.linkerd.io/emojivoto.yml
kubectl get pods -n emojivotoInject Linkerd into the App
kubectl get -n emojivoto deploy -o yaml | linkerd inject - | kubectl apply -f -
kubectl get pods -n emojivoto7. Testing Linkerd Functionality
Traffic Monitoring
linkerd viz stat deployments -n emojivotoLive Traffic Inspection
linkerd viz tap -n emojivoto deploy/webEnable Automatic Retries
linkerd profile -n emojivoto voting-svc --tap deploy/web --tap-duration 10s | kubectl apply -f -
kubectl get sp -n emojivoto
linkerd viz stat deployments -n emojivotoAdd Timeout Policy
Create timeout-policy.yaml:
apiVersion: linkerd.io/v1alpha2
kind: ServiceProfile
metadata:
name: voting-svc.emojivoto.svc.cluster.local
namespace: emojivoto
spec:
routes:
- name: "/api/vote"
condition:
method: POST
timeout: 2sApply it:
kubectl apply -f timeout-policy.yaml
linkerd viz stat deploy -n emojivotoTraffic Splitting for Canary Deployment
Deploy Voting v2:
kubectl apply -f https://run.linkerd.io/emojivoto-voting-v2.ymlCreate traffic-split.yaml:
apiVersion: split.smi-spec.io/v1alpha2
kind: TrafficSplit
metadata:
name: voting-split
namespace: emojivoto
spec:
service: voting-svc
backends:
- service: voting-svc
weight: 80
- service: voting-svc-v2
weight: 20Apply:
kubectl apply -f traffic-split.yaml
linkerd viz stat svc -n emojivotoSimulating a Failure
kubectl delete pod -n emojivoto -l app=emoji-svc
linkerd viz stat deploy -n emojivoto8. Next Steps
- Deploy your own microservices with Linkerd.
- Explore mTLS security, policy-based access control, and multi-cluster setups.
- Apply Linkerd to a production environment.