What if your apps could talk safely without you rewriting their code every time?
Why Sidecar proxy concept (Envoy) in Kubernetes? - Purpose & Use Cases
Start learning this pattern below
Jump into concepts and practice - no test required
Imagine you have many small apps running in containers, and each app needs to talk to others securely and reliably.
You try to add security and monitoring code inside each app manually.
Adding security and communication code inside every app is slow and confusing.
It causes mistakes, makes apps bigger, and is hard to update.
Using a sidecar proxy like Envoy means adding a helper container next to each app.
This helper handles all communication, security, and monitoring outside the app.
Apps stay simple, and communication is managed consistently.
app.connectTo('serviceA', {secure: true, retry: 3})
sidecarProxy.handleCommunication(app)
It makes app communication secure, observable, and easy to manage without changing app code.
In Kubernetes, Envoy sidecars help microservices talk safely and let teams add new features like traffic control without touching the apps.
Manual communication code is hard to maintain and error-prone.
Sidecar proxies separate communication logic from apps.
Envoy sidecars improve security, reliability, and observability effortlessly.
Practice
Solution
Step 1: Understand the role of sidecar proxies
Sidecar proxies like Envoy run alongside the main app to handle network tasks such as routing, security, and monitoring.Step 2: Identify what sidecars do not do
They do not replace the app, store data, or run databases; they only assist with traffic management.Final Answer:
To manage network traffic for the application without changing its code -> Option AQuick Check:
Sidecar proxy = traffic manager [OK]
- Thinking sidecar replaces the app container
- Confusing sidecar with storage or database
- Assuming sidecar changes app code
Solution
Step 1: Identify the correct container name and image
The sidecar container should be named clearly (e.g., 'envoy') and use the official Envoy image 'envoyproxy/envoy'.Step 2: Check the options for correctness
containers: - name: envoy - image: envoyproxy/envoy correctly names the container 'envoy' and uses the right image. containers: - name: app - image: envoyproxy/envoy misnames the container as 'app'. containers: - name: envoy - image: nginx uses the wrong image 'nginx'. containers: - name: envoyproxy - image: envoyproxy/envoy uses a different container name but correct image.Final Answer:
containers: - name: envoy - image: envoyproxy/envoy -> Option BQuick Check:
Envoy container name and image must match [OK]
- Using wrong container name for Envoy
- Using incorrect image like nginx
- Mixing app container with sidecar container
Solution
Step 1: Understand Envoy's role as a sidecar proxy
Envoy intercepts outbound requests from the app container to manage traffic, security, and monitoring.Step 2: Trace the request flow
The app's request is routed through Envoy before reaching the external service, enabling control and visibility.Final Answer:
The request is intercepted and routed through the Envoy sidecar proxy before reaching the external service. -> Option DQuick Check:
Envoy intercepts outbound traffic [OK]
- Assuming app bypasses Envoy for external calls
- Thinking Kubernetes blocks outbound requests
- Believing requests are duplicated
Solution
Step 1: Analyze Envoy sidecar traffic issues
Envoy needs proper network permissions (like NET_ADMIN) to intercept and forward traffic.Step 2: Evaluate other options
App image version or node CPU issues may affect performance but not specifically Envoy forwarding. A pod with one container means no sidecar exists.Final Answer:
The Envoy container is missing required network permissions or capabilities. -> Option CQuick Check:
Envoy needs network permissions to forward traffic [OK]
- Blaming app container image for Envoy issues
- Ignoring network capabilities needed by Envoy
- Assuming pod must have one container only
Solution
Step 1: Understand sidecar pattern in Kubernetes
Sidecars run as additional containers in the same pod, so modifying the pod spec to add Envoy is the standard way.Step 2: Evaluate alternatives
Replacing app image changes code, separate pods lose pod-local benefits, and init containers run before app start and can't run sidecars.Final Answer:
Modify the deployment YAML to add an Envoy container in the pod spec as a sidecar -> Option AQuick Check:
Add Envoy as sidecar container in pod spec [OK]
- Replacing app image instead of adding sidecar
- Using separate pods losing sidecar benefits
- Misusing init containers for sidecar functionality
