为什么我的 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”标志,而不是指定我想一一删除的其他功能, 成功了。
我已经在 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”标志,而不是指定我想一一删除的其他功能, 成功了。