mirror of
https://github.com/kyverno/kyverno.git
synced 2025-03-29 02:45:06 +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:
parent
a09d2a77e5
commit
08447c108f
8 changed files with 146 additions and 0 deletions
|
@ -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
|
||||
}
|
||||
|
|
|
@ -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 {
|
||||
|
|
24
test/cli/test/mutate-keda-scaled-object/kyverno-test.yaml
Normal file
24
test/cli/test/mutate-keda-scaled-object/kyverno-test.yaml
Normal 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
|
|
@ -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"
|
|
@ -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"
|
|
@ -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"
|
37
test/cli/test/mutate-keda-scaled-object/policy.yaml
Normal file
37
test/cli/test/mutate-keda-scaled-object/policy.yaml
Normal 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/"
|
39
test/cli/test/mutate-keda-scaled-object/resources.yaml
Normal file
39
test/cli/test/mutate-keda-scaled-object/resources.yaml
Normal 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"
|
Loading…
Add table
Reference in a new issue