Использование переменной в пространстве имен сгенерированного ресурса
Я создал политику, которая генерируетService
s для каждогоDeployment
в пространстве имен. Единственное, чего я не могу понять, это то, что этоPolicy
а неClusterPolicy
и я хочу сделать атрибут пространства имен динамическим. (Поскольку политика является частью наложения Kustomize, которое используется для определения сред qa и prod.) Однако, похоже, переменные в этом поле не интерпретируются до проверки политики:
веб-перехватчик допуска «validate-policy.kyverno.svc» отклонил запрос: путь: spec.rules[create-service]: политика пространства имен не может генерировать ресурсы в других пространствах имен, ожидается: bradmac-integration-platform, получено: {{ request. объект.метаданные.пространство имен }}
apiVersion: kyverno.io/v1
kind: Policy
metadata:
name: auto-generate-services
annotations:
policies.kyverno.io/title: Autogenerate services for deployments
policies.kyverno.io/category: Argo
policies.kyverno.io/severity: medium
policies.kyverno.io/subject: Deployment, Service
policies.kyverno.io/description: >-
This policy generates `Service`s automatically based on `Deployment`s.
spec:
generateExistingOnPolicyUpdate: true
rules:
- name: create-service
match:
all:
- resources:
kinds:
- Deployment
generate:
apiVersion: v1
kind: Service
name: "{{ regex_replace_all('-deploy', request.object.metadata.name, '') }}-service"
namespace: "{{request.object.metadata.name}}" # <- this variable isn't being interpolated
synchronize: true
data:
metadata:
ownerReferences:
- apiVersion: v1
kind: Deployment
name: "{{ request.object.metadata.name }}"
uid: "{{request.object.metadata.uid}}"
spec:
selector:
app: "{{ regex_replace_all('-deploy', request.object.metadata.name, '') }}"
ports:
- port: 80
targetPort: 8085
protocol: "TCP"
type: ClusterIP
Кто-нибудь знает какие-либо обходные пути, чтобы это могло работать для любого пространства имен, в которое его помещает наложение?