加強 Docker 容器映像檔

Istio 的預設映像檔基於 ubuntu,並新增了一些額外的工具。也提供基於無容器映像檔的替代映像檔。

這些映像檔會移除所有非必要的執行檔和程式庫,提供以下優點

  • 由於它們包含最小的漏洞集,因此減少了攻擊面。
  • 映像檔較小,可以加快啟動速度。

另請參閱官方無容器 README 中的為什麼我應該使用無容器映像檔?章節。

安裝無容器映像檔

按照安裝步驟設定 Istio。新增 variant 選項以使用無容器映像檔

$ istioctl install --set values.global.variant=distroless

如果您只對使用注入 Proxy 映像檔的無容器映像檔感興趣,您也可以使用 Proxy 設定中的 image.imageType 欄位。請注意,上述 variant 標誌會自動為您設定此值。

偵錯

無容器映像檔缺少所有偵錯工具(包括 Shell!)。雖然這對安全性很有幫助,但這限制了使用 kubectl exec 進入 Proxy 容器進行臨時偵錯的能力。

幸運的是,臨時容器(Ephemeral Containers)可以在這裡提供幫助。kubectl debug 可以將一個臨時容器附加到 Pod 上。通過使用具有額外工具的映像,我們可以像以前一樣進行除錯。

$ kubectl debug --image istio/base --target istio-proxy -it app-65c6749c9d-t549t
Defaulting debug container name to debugger-cdftc.
If you don't see a command prompt, try pressing enter.
root@app-65c6749c9d-t549t:/# curl example.com

這會使用 istio/base 部署一個新的臨時容器。這與非精簡版(non-distroless) Istio 映像中使用的基礎映像相同,其中包含各種用於除錯 Istio 的實用工具。但是,任何映像都可以使用。此容器還會附加到 Sidecar 代理的進程命名空間 (--target istio-proxy) 以及 Pod 的網路命名空間。

這項資訊對您有幫助嗎?
您有任何改進建議嗎?

感謝您的回饋!