From ee13a9cee3dad94cc2c87355901b53a068c7d71e Mon Sep 17 00:00:00 2001 From: SpiritZhou Date: Tue, 3 Sep 2024 05:13:03 +0800 Subject: [PATCH] Introduce ClusterCloudEventSource (#644) Signed-off-by: SpiritZhou --- .github/workflows/ci-core.yml | 3 + .../crds/crd-clustercloudeventsources.yaml | 142 ++++++++++++++++++ keda/templates/manager/clusterrole.yaml | 4 + 3 files changed, 149 insertions(+) create mode 100644 keda/templates/crds/crd-clustercloudeventsources.yaml diff --git a/.github/workflows/ci-core.yml b/.github/workflows/ci-core.yml index bab8af62..7ad93e9f 100644 --- a/.github/workflows/ci-core.yml +++ b/.github/workflows/ci-core.yml @@ -217,6 +217,9 @@ jobs: - name: Verify cloudeventsources.eventing.keda.sh CRD is installed run: kubectl get crd/cloudeventsources.eventing.keda.sh -o wide + - name: Verify clustercloudeventsources.eventing.keda.sh CRD is installed + run: kubectl get crd/clustercloudeventsources.eventing.keda.sh -o wide + - name: Get all ScaledObjects run: kubectl get scaledobjects -o wide diff --git a/keda/templates/crds/crd-clustercloudeventsources.yaml b/keda/templates/crds/crd-clustercloudeventsources.yaml new file mode 100644 index 00000000..44bb0dd6 --- /dev/null +++ b/keda/templates/crds/crd-clustercloudeventsources.yaml @@ -0,0 +1,142 @@ +{{- if .Values.crds.install }} +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.13.0 + labels: + app.kubernetes.io/name: {{ .Values.operator.name }} + {{- include "keda.crd-labels" . | indent 4 }} + name: clustercloudeventsources.eventing.keda.sh +spec: + group: eventing.keda.sh + names: + kind: ClusterCloudEventSource + listKind: ClusterCloudEventSourceList + plural: clustercloudeventsources + singular: clustercloudeventsource + scope: Cluster + versions: + - additionalPrinterColumns: + - jsonPath: .status.conditions[?(@.type=="Active")].status + name: Active + type: string + name: v1alpha1 + schema: + openAPIV3Schema: + properties: + apiVersion: + description: |- + APIVersion defines the versioned schema of this representation of an object. + Servers should convert recognized schemas to the latest internal value, and + may reject unrecognized values. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources + type: string + kind: + description: |- + Kind is a string value representing the REST resource this object represents. + Servers may infer this from the endpoint the client submits requests to. + Cannot be updated. + In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds + type: string + metadata: + type: object + spec: + description: CloudEventSourceSpec defines the spec of CloudEventSource + properties: + authenticationRef: + description: |- + AuthenticationRef points to the TriggerAuthentication or ClusterTriggerAuthentication object that + is used to authenticate the scaler with the environment + properties: + kind: + description: Kind of the resource being referred to. Defaults + to TriggerAuthentication. + type: string + name: + type: string + required: + - name + type: object + clusterName: + type: string + destination: + description: Destination defines the various ways to emit events + properties: + azureEventGridTopic: + properties: + endpoint: + type: string + required: + - endpoint + type: object + http: + properties: + uri: + type: string + required: + - uri + type: object + type: object + eventSubscription: + description: EventSubscription defines filters for events + properties: + excludedEventTypes: + items: + description: CloudEventType contains the list of cloudevent + types + enum: + - keda.scaledobject.ready.v1 + - keda.scaledobject.failed.v1 + type: string + type: array + includedEventTypes: + items: + description: CloudEventType contains the list of cloudevent + types + enum: + - keda.scaledobject.ready.v1 + - keda.scaledobject.failed.v1 + type: string + type: array + type: object + required: + - destination + type: object + status: + description: CloudEventSourceStatus defines the observed state of CloudEventSource + properties: + conditions: + description: Conditions an array representation to store multiple + Conditions + items: + description: Condition to store the condition state + properties: + message: + description: A human readable message indicating details about + the transition. + type: string + reason: + description: The reason for the condition's last transition. + type: string + status: + description: Status of the condition, one of True, False, Unknown. + type: string + type: + description: Type of condition + type: string + required: + - status + - type + type: object + type: array + type: object + required: + - spec + type: object + served: true + storage: true + subresources: + status: {} +{{- end -}} diff --git a/keda/templates/manager/clusterrole.yaml b/keda/templates/manager/clusterrole.yaml index 0cdfd203..253a2d1c 100644 --- a/keda/templates/manager/clusterrole.yaml +++ b/keda/templates/manager/clusterrole.yaml @@ -105,6 +105,8 @@ rules: resources: - cloudeventsources - cloudeventsources/status + - clustercloudeventsources + - clustercloudeventsources/status verbs: - '*' - apiGroups: @@ -148,6 +150,7 @@ rules: - eventing.keda.sh resources: - cloudeventsources + - clustercloudeventsources verbs: - create - delete @@ -180,6 +183,7 @@ rules: - eventing.keda.sh resources: - cloudeventsources + - clustercloudeventsources verbs: - get - list