启用 Azure 策略插件后(根据组织策略),我们无法在 aks、Azure kubernetes 上创建特权容器。
我们的应用程序设置的安全上下文如下。
securityContext:
allowPrivilegeEscalation: false
runAsNonRoot: true
runAsUser: 999
因此我们的应用无需特权访问即可创建。但是,当与 consul 链接时(通过注释),consul init 容器无法创建。
Warning FailedCreate 6s (x15 over 90s) replicaset-controller Error creating: admission webhook "validation.gatekeeper.sh" denied the request: [azurepolicy-psp-container-no-privilege-esc-30132221bc21e5b724da] Privilege escalation container is not allowed: envoy-sidecar
[azurepolicy-psp-container-no-privilege-esc-30132221bc21e5b724da] Privilege escalation container is not allowed: consul-sidecar
[azurepolicy-psp-container-no-privilege-esc-30132221bc21e5b724da] Privilege escalation container is not allowed: consul-connect-inject-init
答案1
Azure Kubernetes 策略的工作方式是,您需要为每个容器明确声明allowPrivilegeEscalation
设置为 false 的值。容器不需要它是不够的,必须在清单中设置。
因此,您需要修改控制台部署,以确保在 sidecar pod 上设置了此功能。我对 Consul 不太熟悉,但如果使用 Helm 进行部署,请查看值文件中的选项,看看是否可以设置此功能。