0

在我的 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

这将导致:

错误:验证“server123.yaml”时出错:验证数据时出错:ValidationError(Pod.spec.securityContext):io.k8s.api.core.v1.PodSecurityContext中的未知字段“readOnlyRootFilesystem”;如果您选择忽略这些错误,请使用 --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

有没有办法为所有容器设置一次这个安全限制?如果不是为什么不呢?

4

2 回答 2

1

这个要求需要一个策略实现,这可以使用 pod 安全策略来实现。请阅读这里

指定了一个专用的限制控制—— “要求使用只读根文件系统”

注意:这将在 v1.25.x 中使用新技术被弃用。所以请做好计划。

于 2022-01-02T19:17:00.817 回答
0

在 Kubernetes 中,可以在 pod 和/或容器级别配置securityContext,容器将继承 pod 级别的设置,但可以自己覆盖。

但是,pod 和容器的配置选项不会重叠 - 您只能在每个级别设置特定选项,
容器级别:https ://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/# securitycontext-v1-core
Pod 级别:https ://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#podsecuritycontext-v1-core

它没有清楚地记录什么可以继承,什么不能(以及为什么!)。您必须通读这两个列表并进行比较。我假设 POD 的 securityContext 将允许例如readOnlyRootFilesystem: true和各种功能设置一次,而不必在每个底层容器的 securityContext 中复制,但PodSecurityContext不允许这样做!

在(重新)配置各种工作负载以遵守 PodSecurityPolicies 时特别有用。

我想知道为什么 Pod 的securityContext配置被标记为这样,而不是podSecurityContext,这实际上是它所代表的。

于 2022-01-02T15:38:14.210 回答