为什么我的 Openldap 容器会因为 pod 安全策略而不断崩溃

why does my Openldap container keeps crashing due to pod security policy

我已经在 GKE 上成功创建了 PodSecurityPolicy、CluserRole 和 ClusterRoleBinding。我现在正在尝试使用来自 here 的 OpenLDap。没有在 k8s 集群上安装我的 PodSecurityPolicy,这个 OpenLDap 的 helm 安装工作正常。

然而,当我安装 PSP 并尝试安装 OpenLDap 时,容器保持在 CrashLoopBackOff 状态。

我知道 openldap 需要连接到 ldapPort: 和 389 sslLdapPort: 636 我知道那些是特权端口。我已经尝试将 psp yaml 中的特权设置更改为 true,但没有用。

PodSecurityPolicy yaml

apiVersion: policy/v1beta1
kind: PodSecurityPolicy
metadata:
  name: test-psp
spec:
  privileged: false
  allowPrivilegeEscalation: false
  defaultAllowPrivilegeEscalation: false
  allowedCapabilities:
  - NET_ADMIN
  - NET_RAW
  defaultAddCapabilities: []
  requiredDropCapabilities:
  - ALL
  hostPID: false
  hostIPC: false
  hostNetwork: false
#  requiredDropCapabilities: false
  seLinux:
    rule: RunAsAny
  supplementalGroups:
    rule: RunAsAny
  runAsUser:
    rule: RunAsAny
  fsGroup:
    rule: RunAsAny
  volumes:
  - '*'

集群角色

kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: test-cluster-role
rules:
- apiGroups:
  - policy
  resources:
  - podsecuritypolicies
  verbs:
  - use
  resourceNames:
  - test-psp

ClusterRoleBinding

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: test-role-binding
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: test-cluster-role
subjects:
- apiGroup: rbac.authorization.k8s.io
  kind: Group
  name: system:serviceaccounts

当我在 openldap pod 上进行描述时,我得到 后退重新启动失败的容器 我在这里做错了什么,这就是停止 openldap 到 运行 .

我通过删除 requiredDropCapabilities 下的“ALL”解决了这个问题。这似乎与 allowedCapabilities 冲突。

在这种情况下,我允许 2 个功能,但同时放弃所有功能,这就是我的问题,通过删除“ALL”标志,而不是指定我想一一删除的其他功能, 成功了。