apiVersion: kyverno.io/v1 kind: ClusterPolicy metadata: name: restrict-deploys-during-freeze annotations: policies.kyverno.io/title: "Блокировка деплойментов во время freeze" policies.kyverno.io/category: Governance policies.kyverno.io/severity: high policies.kyverno.io/subject: Deployment policies.kyverno.io/description: >- Блокирует создание новых Deployments когда в ConfigMap deployment-freeze-config поле freeze_active=true. Пользователи группы emergency-deployers и system:masters могут деплоить даже во время freeze. Активируйте freeze: kubectl patch configmap deployment-freeze-config -n kyverno --type merge -p '{"data":{"freeze_active":"true"}}' spec: rules: - name: check-freeze match: resources: kinds: - Deployment preconditions: any: - key: "{{ request.operation }}" operator: Equals value: CREATE context: - name: freezeConfig configMap: name: deployment-freeze-config namespace: kyverno validate: message: >- Деплойменты заморожены с {{ freezeConfig.data.freeze_start }} до {{ freezeConfig.data.freeze_end }}. Причина: {{ freezeConfig.data.freeze_reason }} Для экстренного деплоя обратитесь к oncall инженеру. deny: conditions: all: # Freeze активен - key: "{{ freezeConfig.data.freeze_active }}" operator: Equals value: "true" # Пользователь НЕ в группе экстренного деплоя - key: "{{ request.userInfo.groups }}" operator: AllNotIn value: - emergency-deployers - system:masters