加固 Docker 容器镜像
Istio 的默认镜像5基于 ubuntu
添加了一些额外的工具。
也可以使用基于 Distroless 镜像6的替代镜像。
使用 Distroless 时,Distroless 镜像已经不再包含非必需的可执行文件和库。
- 减少了攻击面。尽可能少的漏洞。
- 镜像更小了,且启动更快。
请参考官方 Distroless README 的为何选择 Distroless 镜像?7 章节。
安装 Distroless 镜像
按照安装步骤8配置 Istio。
添加 variant
选项以使用 Distroless 镜像 。
如果您只对将 Distroless 镜像用于注入的代理镜像感兴趣,
您还可以使用 Proxy Config
中的 image.imageType
字段。请注意,上面的 variant
标志会自动为您设置该字段。
调试
Distroless 镜像缺少所有调试工具(包括 Shell!)。
虽然对安全性有好处,但这限制了使用 kubectl exec
对代理容器进行临时调试的能力。
幸运的是,临时容器9 可以在此处提供帮助。
kubectl debug
可以将临时容器附加到 Pod。
通过使用带有额外工具的镜像,我们可以像以前一样进行调试:
这会使用 istio/base
部署一个新的临时容器。
这与 Distroless Istio 镜像中使用的基础镜像相同,并且包含各种可用于调试 Istio 的工具。
但是,任何镜像都可以起作用。
该容器还被附加到 Sidecar 代理 (--target istio-proxy
) 的进程命名空间和 Pod 的网络命名空间。