---
# System prepended metadata

title: Istio 概念與架構
tags: [工具]

---

# Istio 概念與架構

![image (21)](https://hackmd.io/_uploads/Sk__fzRFR.png)

1. Istio 使用 ValidatingAdmissionWebhooks 驗證 Istio 配置，使用 MutatingAdmissionWebhooks 自動將 Sidecar 代理注入至 Pod。
2. 當使用者建立 Pod ，API Server 會接收到指令並先做身分驗證與權限驗證後才允許建立。
3. API Server 會呼叫配置在叢集的 Mutating Admission Controller，Istio Sidecar Injector Webhook 就是其中之一。會向 Istio Sidecar Injector Webhook 發送一個 HTTP 請求。這個請求包含了原始的 Pod 配置。
4. Sidecar Injector Webhook 接收到請求後，會檢查請求中 Pod 的 label，判斷是否需要注入 Sidecar，如果決定注入，Webhook 會修改 Pod 的定義，並新增一個sidecar 容器。
5. 最後，經過驗證後，修改後的 pod 規格將與所有 sidecar 容器一起部署。



* 檢視 Istio Sidecar Injector Webhook 
```
$ kubectl get MutatingWebhookConfiguration istio-sidecar-injector
NAME                     WEBHOOKS   AGE
istio-sidecar-injector   4          95d
```
* 檢視 istio ValidatingWebhook
```
$ kubectl get ValidatingWebhookConfigurations istio-validator-istio-system
NAME                           WEBHOOKS   AGE
istio-validator-istio-system   1          96d
```







## 參考
https://www.solo.io/blog/istios-networking-in-depth/
