← До фільтрів та технологій

← До списку лабораторних по Kubernetes

Kubernetes Лабораторна 41: securityContext та запуск без root

Технологія: Kubernetes

Номер лабораторної: 41 · Рівень: middle

Тема: securityContext та запуск без root

Повний опис / сценарій лабораторної:

Мета: навчитися налаштовувати securityContext щоб контейнер працював без прав root і з коректними правами на файлову систему.



Крок 1. Створити базовий pod з nginx.

Команда: kubectl run sc-demo --image=nginx --dry-run=client -o yaml > sc-demo.yaml

Пояснення: далі ми додамо securityContext у yaml.



Крок 2. Додати podSecurityContext з runAsUser і fsGroup.

Дія: у spec додай podSecurityContext з runAsUser 1000 і fsGroup 1000.

Пояснення: всі процеси і файлові операції виконуватимуться від користувача 1000.



Крок 3. Додати readOnlyRootFilesystem до контейнера.

Пояснення: у контейнер securityContext увімкни readOnlyRootFilesystem true щоб root файлову систему не можна було змінювати.



Крок 4. Додати volume для запису логів.

Опис: том типу emptyDir змонтуй у /var/log/nginx щоб програма мала куди писати.

Пояснення: це типова схема для контейнерів з read only root.



Крок 5. Застосувати pod.

Команда: kubectl apply -f sc-demo.yaml

Пояснення: pod має перейти у стан Running без помилок прав.



Крок 6. Перевірити uid процесу в контейнері.

Команда: kubectl exec -it sc-demo -- id

Пояснення: переконайся що uid не дорівнює нулю.



Крок 7. Спробувати створити файл у корені файлової системи.

Команда всередині pod: touch /test-root

Пояснення: операція має завершитися з помилкою через read only root filesystem.



Крок 8. Створити файл у каталозі з томом.

Команда: touch /var/log/nginx/test.log

Пояснення: у змонтованому томі запис дозволений.



Крок 9. Переглянути describe pod.

Команда: kubectl describe pod sc-demo

Пояснення: у описі видно застосовані securityContext налаштування.



Крок 10. Міні звіт.

Завдання: опиши які мінімальні securityContext ти вважатимеш обовязковими для продакшн образів.