Почему я не могу настроить параметры 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 с новой технологией. Поэтому, пожалуйста, планируйте это.