Pod Security Admission
命名空间所强制执行的 Pod Security Admission (PSA) 配置文件决定了 mesh 工作负载的 pod 是否会被准入。
Baseline:所有 mesh 工作负载都会使用默认的控制平面配置获得准入。Restricted:仅当 mesh 工作负载的 pod 携带RuntimeDefaultseccomp 配置文件时,该工作负载才会获得准入;控制平面默认不会添加此配置文件。否则 pod 会被拒绝,例如显示为seccompProfile ... must be set to "RuntimeDefault" or "Localhost"。
每种工作负载都需要单独配置:
注入的 sidecar
只有同时满足以下两个条件,注入的 sidecar 才会被准入 Restricted 命名空间:
-
已部署
IstioCNI资源,因此控制平面会注入非特权的istio-validation容器,而不是特权的istio-init容器。这是安装 Alauda Service Mesh中所述的默认安装流程。 -
Istio资源将spec.values.global.proxy.seccompProfile.type设置为RuntimeDefault:此设置仅适用于
istio-validation和istio-proxy容器。
更改 Istio 资源的 spec.values 字段会更新注入模板,但正在运行的 pod 仍会保留创建时注入的 sidecar。请重启受影响的工作负载,使其获取新的 seccomp 配置文件。
Gateway API 网关和 waypoint proxy
控制平面使用自己的模板渲染通过 Kubernetes Gateway API 部署的网关和 waypoint proxy,这些模板不会读取 spec.values.global.proxy.seccompProfile。Istio 资源也不会公开 spec.values.gateways;该字段会被静默丢弃。请使用 spec.values.gatewayClasses overlay 配置 seccomp 配置文件,控制平面会将其合并到生成的 Deployment 中。
在强制执行 Restricted 配置文件的命名空间中创建 Gateway 资源之前,先修补 Istio 资源。仅应用你所使用的 gateway class。
-
对于使用
istiogateway class 的网关: -
对于使用
istio-waypointgateway class 的 waypoint proxy:
修补程序按键合并,因此可以应用两条命令并保留两个 overlay。
验证
运行以下命令,确认控制平面已为每个经过修补的 gateway class 生成 ConfigMap:
示例输出
overlay 会应用于集群中该 class 的每个网关。现有网关会执行一次滚动发布,以获取 seccomp 配置文件。
参考
- Pod Security Standards(Kubernetes 文档)
- Restrict a Container's Syscalls with seccomp(Kubernetes 文档)