init
This commit is contained in:
52
05-variables/02-context/restrict-deploys-during-freeze.yaml
Normal file
52
05-variables/02-context/restrict-deploys-during-freeze.yaml
Normal file
@@ -0,0 +1,52 @@
|
||||
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
|
||||
Reference in New Issue
Block a user