# Урок 5.2 — Контекстные данные и информация о кластере ## Файлы | Файл | Описание | |------|----------| | `deployment-freeze-config.yaml` | ConfigMap для управления freeze | | `restrict-deploys-during-freeze.yaml` | Блокировка деплоев во время freeze | | `restrict-privileged-non-admins.yaml` | Привилегии только для admin-групп | ## Применение ```bash kubectl apply -f deployment-freeze-config.yaml kubectl apply -f restrict-deploys-during-freeze.yaml kubectl apply -f restrict-privileged-non-admins.yaml ``` ## Тест deployment freeze ```bash # Убедиться что freeze выключен kubectl get configmap deployment-freeze-config -n kyverno \ -o jsonpath='{.data.freeze_active}' # Должно быть: false # Создать тестовый deployment — должен пройти kubectl create deployment test-deploy \ --image=nginx:1.25.3 --replicas=1 # Активировать freeze kubectl patch configmap deployment-freeze-config -n kyverno \ --type merge \ -p '{"data":{"freeze_active":"true"}}' # Подождать обновления кэша (~60 сек), затем попробовать деплой kubectl create deployment blocked-deploy \ --image=nginx:1.25.3 --replicas=1 # Ожидаем ошибку: Деплойменты заморожены... # Деактивировать freeze kubectl patch configmap deployment-freeze-config -n kyverno \ --type merge \ -p '{"data":{"freeze_active":"false"}}' # Уборка kubectl delete deployment test-deploy 2>/dev/null || true ``` ## Доступные контекстные данные запроса ```yaml # Информация о ресурсе request.object.metadata.name request.object.metadata.namespace request.object.metadata.labels request.object.metadata.annotations # Информация об операции request.operation # CREATE | UPDATE | DELETE | CONNECT request.dryRun # true при --dry-run=server # Старый объект (только при UPDATE) request.oldObject.spec.replicas # Информация о пользователе request.userInfo.username request.userInfo.uid request.userInfo.groups # список групп request.userInfo.extra # дополнительные атрибуты # Пример: разные правила для CREATE vs UPDATE preconditions: any: - key: "{{ request.operation }}" operator: Equals value: CREATE ``` ## Тест userInfo — проверка групп ```bash # Посмотреть свои группы в кластере kubectl auth whoami # Попробовать создать привилегированный под (должен быть отклонён) kubectl apply -f - <