Envoy sidecar
- Docker & Kubernetes kursu
- Uzman
- Ders 21/47
- 4 dk
Envoy sidecar proxy'yi öğrenirsin.
Envoy sidecar
Enjeksiyon her pod'a iki şey ekler: bir init container (istio-init ya da CNI eklentisi) pod'un iptables kurallarını, tüm gelen ve giden trafik Envoy'a gidecek şekilde ayarlar; istio-proxy container'ı da Envoy'u çalıştırır. Uygulama hâlâ http://db:5432'ye bağlandığını sanır; aslında bağlantı yerel Envoy'dan geçer.
$ kubectl get pod api-6b5c4d3e2-abcde -n magaza -o jsonpath='{.spec.containers[*].name}'
api istio-proxy
$ kubectl logs api-6b5c4d3e2-abcde -n magaza -c istio-proxy --tail=2
[2026-11-03T10:12:01Z] "GET /urunler HTTP/1.1" 200 - via_upstream - "-" 0 4821 12 11 "-" "curl/8.10" "…" "api:8000"Sidecar kaynakları ve hariç tutma
Her sidecar bellek ve CPU harcar; yüzlerce pod'da bu toplam önemlidir. Kaynaklar annotation ile ayarlanır; bazı pod'lar (ör. Job'lar) enjeksiyondan çıkarılabilir:
template:
metadata:
annotations:
sidecar.istio.io/proxyCPU: "50m"
sidecar.istio.io/proxyMemory: "64Mi"
labels:
sidecar.istio.io/inject: "false" # bu pod mesh dışındaUygulama Sidecar'ı incele
İki komut yaz: magaza'daki api-6b5c4d3e2-abcde pod'unun container adlarını jsonpath='{.spec.containers[*].name}' ile yazdır; aynı pod'un istio-proxy container'ının son 5 log satırını göster.
Başlangıç kodu
# buraya yazÖrnek çözüm
kubectl get pod api-6b5c4d3e2-abcde -n magaza -o jsonpath='{.spec.containers[*].name}'
kubectl logs api-6b5c4d3e2-abcde -n magaza -c istio-proxy --tail=5Beklenen çıktı
api istio-proxy [2026-11-03T10:12:01Z] "GET /urunler HTTP/1.1" 200 - via_upstream - "-" 0 4821 12 11 [2026-11-03T10:12:02Z] "GET /saglik HTTP/1.1" 200 - via_upstream - "-" 0 15 1 1
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Uygulama kodunun mesh için değiştirilmesi gerekir mi?
- Hayır; trafik iptables ile şeffaf biçimde vekile yönlendirilir Doğru cevap
- Evet, Envoy kütüphanesi eklenmeli
- Yalnızca Go uygulamalarında
- Yalnızca portlar değişir
Açıklama: İzleme başlıklarını (trace header) iletmek için küçük bir uygulama desteği yine de gerekebilir.
2 Bu pod'u enjeksiyondan çıkar.
labels:
sidecar.istio.io/inject: ____
labels:
sidecar.istio.io/inject: "false"
Açıklama: Değer metin olarak "false" yazılır.
3 Eşleştir.
| Kavram | Anlamı |
|---|---|
istio-init |
iptables kuralları |
istio-proxy |
Envoy container'ı |
proxyMemory |
Sidecar bellek ayarı |
inject: "false" |
Mesh dışında |