1
0
Fork 0
mirror of https://github.com/kyverno/kyverno.git synced 2025-03-31 03:45:17 +00:00

fix: fix mutating the "/metadata/serverAddress" section of a keda.s/v1alpha1/ScaledObject object (#5374)

* fix: fix mutating the "/metadata/serverAddress" section of a keda.sh/v1alpha1/ScaledObject object

Signed-off-by: Rodrigo Fior Kuntzer <rodrigo@miro.com>

* fix: update test policy

Signed-off-by: Rodrigo Fior Kuntzer <rodrigo@miro.com>

Signed-off-by: Rodrigo Fior Kuntzer <rodrigo@miro.com>
Co-authored-by: shuting <shuting@nirmata.com>
This commit is contained in:
Rodrigo Fior Kuntzer 2022-11-28 10:55:42 +01:00 committed by GitHub
parent a09d2a77e5
commit 08447c108f
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
8 changed files with 146 additions and 0 deletions

View file

@ -130,6 +130,10 @@ func ignorePatch(path string) bool {
return true
}
if wildcard.Match("/spec/triggers/*/metadata/*", path) {
return false
}
if wildcard.Match("*/metadata", path) {
return false
}

View file

@ -205,6 +205,10 @@ func Test_ignorePath(t *testing.T) {
path: "/kind",
ignore: false,
},
{
path: "/spec/triggers/0/metadata/serverAddress",
ignore: false,
},
}
for _, test := range tests {

View file

@ -0,0 +1,24 @@
name: mutate-keda-scaled-object
policies:
- policy.yaml
resources:
- resources.yaml
results:
- policy: keda-prometheus-serveraddress
rule: keda-prometheus-serveraddress
resources: [service-1]
patchedResource: patchedResource1.yaml
kind: ScaledObject
result: pass
- policy: keda-prometheus-serveraddress
rule: keda-prometheus-serveraddress
resources: [service-2]
patchedResource: patchedResource2.yaml
kind: ScaledObject
result: pass
- policy: keda-prometheus-serveraddress
rule: keda-prometheus-serveraddress
resources: [service-3]
patchedResource: patchedResource3.yaml
kind: ScaledObject
result: pass

View file

@ -0,0 +1,13 @@
apiVersion: keda.sh/v1alpha1
kind: ScaledObject
metadata:
name: service-1
namespace: default
spec:
triggers:
- type: "prometheus"
metadata:
metricName: my-metric-name
query: sum(waiting_jobs_total{job='some-job'})
serverAddress: http://prometheus.local/
threshold: "100"

View file

@ -0,0 +1,13 @@
apiVersion: keda.sh/v1alpha1
kind: ScaledObject
metadata:
name: service-2
namespace: default
spec:
triggers:
- type: "prometheus"
metadata:
metricName: my-metric-name
query: sum(waiting_jobs_total{job='some-job'})
serverAddress: http://prometheus.local/
threshold: "50"

View file

@ -0,0 +1,12 @@
apiVersion: keda.sh/v1alpha1
kind: ScaledObject
metadata:
name: service-3
namespace: default
spec:
triggers:
- type: "aws-sqs-queue"
metadata:
queueURL: https://sqs.eu-west-1.amazonaws.com/account_id/QueueName
queueLength: "5"
awsRegion: "eu-west-1"

View file

@ -0,0 +1,37 @@
apiVersion : kyverno.io/v1
kind: ClusterPolicy
metadata:
name: keda-prometheus-serveraddress
annotations:
policies.kyverno.io/title: Set KEDA Prometheus Scaler ServerAddress
policies.kyverno.io/subject: KedaPrometheusScaler
policies.kyverno.io/description: >-
The KEDA Prometheus Scaler requires the serverAddress attribute.
spec:
background: false
rules:
- name: keda-prometheus-serveraddress
match:
all:
- resources:
kinds:
- keda.sh/v1alpha1/ScaledObject
preconditions:
all:
- key: "{{request.operation}}"
operator: In
value:
- CREATE
- UPDATE
mutate:
foreach:
- list: "request.object.spec.triggers"
preconditions:
all:
- key: "{{element.type || ''}}"
operator: Equals
value: "prometheus"
patchesJson6902: |-
- path: /spec/triggers/{{elementIndex}}/metadata/serverAddress
op: add
value: "http://prometheus.local/"

View file

@ -0,0 +1,39 @@
apiVersion: keda.sh/v1alpha1
kind: ScaledObject
metadata:
name: service-1
namespace: default
spec:
triggers:
- type: "prometheus"
metadata:
metricName: my-metric-name
query: sum(waiting_jobs_total{job='some-job'})
serverAddress: http://prometheus.internal.svc.cluster.local:9090
threshold: "100"
---
apiVersion: keda.sh/v1alpha1
kind: ScaledObject
metadata:
name: service-2
namespace: default
spec:
triggers:
- type: "prometheus"
metadata:
metricName: my-metric-name
query: sum(waiting_jobs_total{job='some-job'})
threshold: "50"
---
apiVersion: keda.sh/v1alpha1
kind: ScaledObject
metadata:
name: service-3
namespace: default
spec:
triggers:
- type: "aws-sqs-queue"
metadata:
queueURL: https://sqs.eu-west-1.amazonaws.com/account_id/QueueName
queueLength: "5"
awsRegion: "eu-west-1"