Почему я не могу настроить параметры securityContext на уровне POD для применения ко всем базовым контейнерам?

В моем POD я хотел ограничить ВСЕ мои контейнеры файловыми системами только для чтения с помощью securityContext: readOnlyRootFilesystem: true
example (примечание: 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): неизвестное поле «readOnlyRootFilesystem» в io.k8s.api.core.v1.PodSecurityContext; если вы решите игнорировать эти ошибки, отключите проверку с помощью --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

Есть ли способ установить это ограничение безопасности ОДИН РАЗ для всех контейнеров? Если нет, то почему?

2 ответа

В Kubernetes можно настраивать securityContext на уровне пода и/или контейнера, контейнеры наследуют настройки на уровне пода, но могут переопределять свои собственные.

Однако параметры конфигурации для модулей и контейнеров не пересекаются — вы можете установить только определенные параметры на каждом уровне . Уровень
контейнера: 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

Четко не документировано, что можно наследовать, а что нельзя (и почему!). Вы должны прочитать оба списка и сравнить. Я бы предположил, что securityContext POD позволит, скажем, readOnlyRootFilesystem: true и различным возможностям быть установленным один раз и не нуждаться в репликации в securityContext каждого базового контейнера, но PodSecurityContext не позволяет этого!

Будет особенно полезно при (пере)настройке различных рабочих нагрузок для соблюдения PodSecurityPolicies.

Интересно, почему конфигурация SecurityContext пода помечена как таковая, а не как podSecurityContext, что она на самом деле и представляет.

Это требование требует реализации политики, и это возможно с помощью политики безопасности модуля. Пожалуйста, прочитайте здесь .

Указан специальный элемент управления ограничениями — «Требование использования корневой файловой системы только для чтения» .

Примечание. Это будет объявлено устаревшим в v1.25.x с новой технологией. Поэтому, пожалуйста, планируйте это.

Другие вопросы по тегам