为什么我不能将 POD 级别的 securityContext 设置配置为应用于所有底层容器?
Why cant I configure POD-level securityContext settings to be applied to all underlying Containers?
在我的 POD 中,我想将所有容器限制为只读文件系统
securityContext: readOnlyRootFilesystem: true
示例(注意:为简洁起见减少了 yaml)
apiVersion: v1
kind: Pod
metadata:
labels:
run: server123
name: server123
spec:
securityContext:
readOnlyRootFilesystem: true
containers:
- image: server1-image
name: server1
- image: server2-image
name: server2
- image: server3-image
name: server3
这将导致:
error: error validating "server123.yaml": error validating data:
ValidationError(Pod.spec.securityContext): unknown field
"readOnlyRootFilesystem" in io.k8s.api.core.v1.PodSecurityContext; if
you choose to ignore these errors, turn validation off with
--validate=false
相反,我必须配置为:
apiVersion: v1
kind: Pod
metadata:
labels:
run: server123
name: server123
spec:
containers:
- image: server1-image
name: server1
securityContext:
readOnlyRootFilesystem: true
- image: server2-image
name: server2
securityContext:
readOnlyRootFilesystem: true
- image: server3-image
name: server3
securityContext:
readOnlyRootFilesystem: true
有没有办法为所有容器一次性设置此安全限制?
如果不是,为什么不呢?
在 Kubernetes 中,可以在 pod and/or 容器级别配置 securityContext,
容器会继承 pod 级设置,但可以自己覆盖。
pods 和容器的配置选项不重叠 - 您只能在每个级别设置特定的选项,
容器级别:https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#securitycontext-v1-core
广告连播级别:https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#podsecuritycontext-v1-core
它没有清楚地记录什么可以继承,什么不能继承(以及为什么!)。您必须通读两个列表并进行比较。
我假设 POD 的 securityContext 将允许 readOnlyRootFilesystem: true 和各种 capabilities,设置一次,不必在每个底层容器的securityContext中复制,但是PodSecurityContext不允许这样!
在(重新)配置各种工作负载以遵守 PodSecurityPolicies 时特别有用。
我想知道为什么 Pod 的 securityContext 配置被标记为这样,而不是 podSecurityContext,也就是它实际代表的意思。
此要求需要策略实施,这可以使用 pod 安全策略实现。 Please read here.
指定了专用的限制控制 - “需要使用只读根文件系统”。
注意:这将是 deprecated v1.25.x 中的一项新技术。所以请做好计划。
在我的 POD 中,我想将所有容器限制为只读文件系统
securityContext: readOnlyRootFilesystem: true
示例(注意:为简洁起见减少了 yaml)
apiVersion: v1
kind: Pod
metadata:
labels:
run: server123
name: server123
spec:
securityContext:
readOnlyRootFilesystem: true
containers:
- image: server1-image
name: server1
- image: server2-image
name: server2
- image: server3-image
name: server3
这将导致:
error: error validating "server123.yaml": error validating data: ValidationError(Pod.spec.securityContext): unknown field "readOnlyRootFilesystem" in io.k8s.api.core.v1.PodSecurityContext; if you choose to ignore these errors, turn validation off with --validate=false
相反,我必须配置为:
apiVersion: v1
kind: Pod
metadata:
labels:
run: server123
name: server123
spec:
containers:
- image: server1-image
name: server1
securityContext:
readOnlyRootFilesystem: true
- image: server2-image
name: server2
securityContext:
readOnlyRootFilesystem: true
- image: server3-image
name: server3
securityContext:
readOnlyRootFilesystem: true
有没有办法为所有容器一次性设置此安全限制? 如果不是,为什么不呢?
在 Kubernetes 中,可以在 pod and/or 容器级别配置 securityContext, 容器会继承 pod 级设置,但可以自己覆盖。
pods 和容器的配置选项不重叠 - 您只能在每个级别设置特定的选项,
容器级别:https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#securitycontext-v1-core
广告连播级别:https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#podsecuritycontext-v1-core
它没有清楚地记录什么可以继承,什么不能继承(以及为什么!)。您必须通读两个列表并进行比较。 我假设 POD 的 securityContext 将允许 readOnlyRootFilesystem: true 和各种 capabilities,设置一次,不必在每个底层容器的securityContext中复制,但是PodSecurityContext不允许这样!
在(重新)配置各种工作负载以遵守 PodSecurityPolicies 时特别有用。
我想知道为什么 Pod 的 securityContext 配置被标记为这样,而不是 podSecurityContext,也就是它实际代表的意思。
此要求需要策略实施,这可以使用 pod 安全策略实现。 Please read here.
指定了专用的限制控制 - “需要使用只读根文件系统”。
注意:这将是 deprecated v1.25.x 中的一项新技术。所以请做好计划。