fix pols for 1.18

This commit is contained in:
2026-05-14 18:55:39 +07:00
parent 5578400e7f
commit ffa61ab646
19 changed files with 266 additions and 180 deletions
@@ -1,33 +1,60 @@
# Полезный паттерн — разные правила для CREATE и UPDATE
apiVersion: kyverno.io/v1
kind: ClusterPolicy
metadata:
name: validate-deployment-operations
annotations:
policies.kyverno.io/title: "Разные проверки для CREATE и UPDATE"
policies.kyverno.io/category: Governance
policies.kyverno.io/severity: medium
policies.kyverno.io/subject: Deployment
policies.kyverno.io/description: >-
Демонстрирует паттерн: разные правила для CREATE и UPDATE операций.
При создании — обязательные лейблы app и team.
При обновлении — запрет смены образа на тег latest.
spec:
validationFailureAction: Enforce
background: false
rules:
- name: validate-on-create-only
match:
resources:
kinds:
- Deployment
preconditions:
any:
- key: "{{ request.operation }}"
operator: Equals
value: CREATE
validate:
message: >-
Новый Deployment '{{ request.object.metadata.name }}' должен иметь лейблы app и team.
pattern:
metadata:
labels:
app: "?*"
team: "?*"
rules:
- name: validate-on-create-only
match:
resources:
kinds:
- Deployment
preconditions:
any:
- key: "{{ request.operation }}"
operator: Equals
value: CREATE
validate:
# применяется только при создании
- name: validate-image-on-update
match:
resources:
kinds:
- Deployment
preconditions:
all:
- key: "{{ request.operation }}"
operator: Equals
value: UPDATE
- key: >-
{{ request.object.spec.template.spec.containers[0].image }}
operator: NotEquals
value: >-
{{ request.oldObject.spec.template.spec.containers[0].image }}
validate:
# применяется только при UPDATE с изменением образа
- name: validate-image-on-update
match:
resources:
kinds:
- Deployment
preconditions:
all:
- key: "{{ request.operation }}"
operator: Equals
value: UPDATE
- key: "{{ request.object.spec.template.spec.containers[0].image }}"
operator: NotEquals
value: "{{ request.oldObject.spec.template.spec.containers[0].image }}"
validate:
message: >-
Образ изменён с '{{ request.oldObject.spec.template.spec.containers[0].image }}'
на '{{ request.object.spec.template.spec.containers[0].image }}'.
Запрещено использовать тег latest при обновлении образа.
deny:
conditions:
any:
- key: "{{ request.object.spec.template.spec.containers[0].image }}"
operator: EndsWith
value: ":latest"