apiVersion: kyverno.io/v1 kind: ClusterPolicy metadata: name: disallow-latest-tag annotations: policies.kyverno.io/title: "Запрет тега latest" policies.kyverno.io/category: Best Practices policies.kyverno.io/severity: medium policies.kyverno.io/subject: Pod policies.kyverno.io/description: >- Запрещает использование тега :latest и образов без тега. Оба варианта резолвятся в "последний доступный образ", что делает деплойменты невоспроизводимыми. spec: validationFailureAction: Enforce background: true rules: - name: disallow-latest-tag match: resources: kinds: - Pod exclude: resources: namespaces: - kube-system validate: message: >- Образ '{{ element.image }}' использует тег :latest или не имеет тега. Используйте конкретный тег (например, nginx:1.25.3) или digest (nginx@sha256:abc123...) для воспроизводимых деплойментов. foreach: - list: >- request.object.spec.containers[] | merge(request.object.spec.initContainers[] || `[]`, @) deny: conditions: any: - key: "{{ element.image }}" operator: Contains value: ":latest" - key: "{{ element.image }}" operator: NotContains value: ":"