From 464d9969d9f4f696642ecec77edd4b08ac34cc4f Mon Sep 17 00:00:00 2001 From: Ali Ok Date: Tue, 25 Aug 2020 16:20:50 +0300 Subject: [PATCH] Make eventing.* v1 resources the stored version --- config/core/resources/broker.yaml | 4 +- config/core/resources/trigger.yaml | 4 +- config/pre-install/v0.18.0/broker.yaml | 219 ++++++++++++++++++ config/pre-install/v0.18.0/clusterrole.yaml | 13 ++ .../v0.18.0/storage-version-migration.yaml | 2 + config/pre-install/v0.18.0/trigger.yaml | 175 ++++++++++++++ 6 files changed, 413 insertions(+), 4 deletions(-) create mode 100644 config/pre-install/v0.18.0/broker.yaml create mode 100644 config/pre-install/v0.18.0/trigger.yaml diff --git a/config/core/resources/broker.yaml b/config/core/resources/broker.yaml index ee23cf4c59b..4cec74d3b0d 100644 --- a/config/core/resources/broker.yaml +++ b/config/core/resources/broker.yaml @@ -26,7 +26,7 @@ spec: - &version name: v1beta1 served: true - storage: true + storage: false subresources: status: {} schema: @@ -195,7 +195,7 @@ spec: - << : *version name: v1 served: true - storage: false + storage: true # the schema of v1 is exactly the same as v1beta1 schema schema: openAPIV3Schema: diff --git a/config/core/resources/trigger.yaml b/config/core/resources/trigger.yaml index ab6acd0f547..d4f2c7c7a9f 100644 --- a/config/core/resources/trigger.yaml +++ b/config/core/resources/trigger.yaml @@ -25,7 +25,7 @@ spec: - &version name: v1beta1 served: true - storage: true + storage: false subresources: status: {} additionalPrinterColumns: @@ -97,7 +97,7 @@ spec: - << : *version name: v1 served: true - storage: false + storage: true schema: openAPIV3Schema: type: object diff --git a/config/pre-install/v0.18.0/broker.yaml b/config/pre-install/v0.18.0/broker.yaml new file mode 100644 index 00000000000..4cec74d3b0d --- /dev/null +++ b/config/pre-install/v0.18.0/broker.yaml @@ -0,0 +1,219 @@ +# Copyright 2020 The Knative Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + name: brokers.eventing.knative.dev + labels: + eventing.knative.dev/release: devel + knative.dev/crd-install: "true" + duck.knative.dev/addressable: "true" +spec: + group: eventing.knative.dev + versions: + - &version + name: v1beta1 + served: true + storage: false + subresources: + status: {} + schema: + openAPIV3Schema: &openAPIV3Schema + type: object + description: 'Broker collects a pool of events that are consumable using Triggers. + Brokers provide a well-known endpoint for event delivery that senders can + use with minimal knowledge of the event routing strategy. Subscribers use + Triggers to request delivery of events from a Broker''s pool to a specific + URL or Addressable endpoint.' + properties: + spec: + description: 'Spec defines the desired state of the Broker.' + type: object + properties: + config: + description: 'Config is a KReference to the configuration that specifies + configuration options for this Broker. For example, this could + be a pointer to a ConfigMap.' + type: object + properties: + apiVersion: + description: 'API version of the referent.' + type: string + kind: + description: 'Kind of the referent. More info: + https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names' + type: string + namespace: + description: 'Namespace of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ + This is optional field, it gets defaulted to the object + holding it if left out.' + type: string + delivery: + description: 'Delivery is the delivery specification for Events within + the Broker mesh. This includes things like retries, DLQ, etc.' + type: object + properties: + backoffDelay: + description: 'BackoffDelay is the delay before retrying. More + information on Duration format: - https://www.iso.org/iso-8601-date-and-time-format.html + - https://en.wikipedia.org/wiki/ISO_8601 For linear policy, + backoff delay is the time interval between retries. For + exponential policy , backoff delay is backoffDelay*2^.' + type: string + backoffPolicy: + description: ' BackoffPolicy is the retry backoff policy (linear, + exponential).' + type: string + deadLetterSink: + description: 'DeadLetterSink is the sink receiving event that + could not be sent to a destination.' + type: object + properties: + ref: + description: 'Ref points to an Addressable.' + type: object + properties: + apiVersion: + description: 'API version of the referent.' + type: string + kind: + description: 'Kind of the referent. More info: + https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names' + type: string + namespace: + description: 'Namespace of the referent. More + info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ + This is optional field, it gets defaulted + to the object holding it if left out.' + type: string + uri: + description: 'URI can be an absolute URL(non-empty + scheme and non-empty host) pointing to the target + or a relative URI. Relative URIs will be resolved + using the base URI retrieved from Ref.' + type: string + retry: + description: 'Retry is the minimum number of retries the sender + should attempt when sending an event before moving it + to the dead letter sink.' + type: integer + format: int32 + status: + description: 'Status represents the current state of the Broker. This data + may be out of date.' + type: object + properties: + address: + description: 'Broker is Addressable. It exposes the endpoint as an + URI to get events delivered into the Broker mesh.' + type: object + properties: + url: + type: string + annotations: + description: 'Annotations is additional Status fields for the Resource + to save some additional State as well as convey more information + to the user. This is roughly akin to Annotations on any k8s resource, + just the reconciler conveying richer information outwards.' + type: object + x-kubernetes-preserve-unknown-fields: true + conditions: + description: 'Conditions the latest available observations of a resource''s + current state.' + type: array + items: + type: object + required: + - type + - status + properties: + lastTransitionTime: + description: 'LastTransitionTime is the last time the condition + transitioned from one status to another. We use VolatileTime + in place of metav1.Time to exclude this from creating + equality.Semantic differences (all other things held + constant).' + type: string + 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 + severity: + description: 'Severity with which to treat failures of + this type of condition. When this is not specified, + it defaults to Error.' + type: string + status: + description: 'Status of the condition, one of True, False, + Unknown.' + type: string + type: + description: 'Type of condition.' + type: string + observedGeneration: + description: 'ObservedGeneration is the ''Generation'' of the Service + that was last processed by the controller.' + type: integer + format: int64 + additionalPrinterColumns: + - name: URL + type: string + jsonPath: .status.address.url + - name: Age + type: date + jsonPath: .metadata.creationTimestamp + - name: Ready + type: string + jsonPath: ".status.conditions[?(@.type==\"Ready\")].status" + - name: Reason + type: string + jsonPath: ".status.conditions[?(@.type==\"Ready\")].reason" + - << : *version + name: v1 + served: true + storage: true + # the schema of v1 is exactly the same as v1beta1 schema + schema: + openAPIV3Schema: + << : *openAPIV3Schema + names: + kind: Broker + plural: brokers + singular: broker + categories: + - all + - knative + - eventing + scope: Namespaced + conversion: + strategy: Webhook + webhook: + conversionReviewVersions: ["v1", "v1beta1"] + clientConfig: + service: + name: eventing-webhook + namespace: knative-eventing diff --git a/config/pre-install/v0.18.0/clusterrole.yaml b/config/pre-install/v0.18.0/clusterrole.yaml index e7515ba4d4d..bfa98b1c38a 100644 --- a/config/pre-install/v0.18.0/clusterrole.yaml +++ b/config/pre-install/v0.18.0/clusterrole.yaml @@ -45,3 +45,16 @@ rules: - "delete" - "patch" - "watch" + - apiGroups: + - "eventing.knative.dev" + resources: + - "brokers" + - "triggers" + verbs: + - "get" + - "list" + - "create" + - "update" + - "delete" + - "patch" + - "watch" diff --git a/config/pre-install/v0.18.0/storage-version-migration.yaml b/config/pre-install/v0.18.0/storage-version-migration.yaml index 1c19eff3ea3..394e21a292a 100644 --- a/config/pre-install/v0.18.0/storage-version-migration.yaml +++ b/config/pre-install/v0.18.0/storage-version-migration.yaml @@ -40,3 +40,5 @@ spec: args: - "containersources.eventing.knative.dev" - "sinkbindings.sources.knative.dev" + - "brokers.sources.knative.dev" + - "triggers.sources.knative.dev" diff --git a/config/pre-install/v0.18.0/trigger.yaml b/config/pre-install/v0.18.0/trigger.yaml new file mode 100644 index 00000000000..d4f2c7c7a9f --- /dev/null +++ b/config/pre-install/v0.18.0/trigger.yaml @@ -0,0 +1,175 @@ +# Copyright 2020 The Knative Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + name: triggers.eventing.knative.dev + labels: + eventing.knative.dev/release: devel + knative.dev/crd-install: "true" +spec: + group: eventing.knative.dev + versions: + - &version + name: v1beta1 + served: true + storage: false + subresources: + status: {} + additionalPrinterColumns: + - name: Broker + type: string + jsonPath: .spec.broker + - name: Subscriber_URI + type: string + jsonPath: .status.subscriberUri + - name: Age + type: date + jsonPath: .metadata.creationTimestamp + - name: Ready + type: string + jsonPath: ".status.conditions[?(@.type==\"Ready\")].status" + - name: Reason + type: string + jsonPath: ".status.conditions[?(@.type==\"Ready\")].reason" + schema: + openAPIV3Schema: + type: object + properties: + spec: + required: + - subscriber + type: object + properties: + broker: + type: string + description: 'Broker that this trigger receives events from. If not specified, will default to ''default''.' + filter: + type: object + properties: + attributes: + type: object + description: 'Map of CloudEvents attributes used for filtering events. If not specified, will default to all events' + additionalProperties: + type: string + subscriber: + type: object + description: 'the destination that should receive events.' + properties: + ref: + type: object + description: 'a reference to a Kubernetes object from which to retrieve the target URI.' + required: + - apiVersion + - kind + - name + properties: + apiVersion: + type: string + minLength: 1 + kind: + type: string + minLength: 1 + namespace: + type: string + minLength: 1 + name: + type: string + minLength: 1 + uri: + type: string + description: 'the target URI or, if ref is provided, a relative URI reference that will be combined with ref to produce a target URI.' + status: + type: object + x-kubernetes-preserve-unknown-fields: true + - << : *version + name: v1 + served: true + storage: true + schema: + openAPIV3Schema: + type: object + description: 'Trigger represents a request to have events delivered to a subscriber from a Broker''s event pool.' + properties: + spec: + description: 'Spec defines the desired state of the Trigger.' + required: + - subscriber + - broker + type: object + properties: + broker: + type: string + description: 'Broker that this trigger receives events from.' + filter: + type: object + description: 'Filter is the filter to apply against all events from + the Broker. Only events that pass this filter will be sent to + the Subscriber. If not specified, will default to allowing all + events.' + properties: + attributes: + type: object + description: 'Map of CloudEvents attributes used for filtering events. If not specified, will default to all events' + additionalProperties: + type: string + subscriber: + type: object + description: 'the destination that should receive events.' + properties: + ref: + type: object + description: 'a reference to a Kubernetes object from which to retrieve the target URI.' + required: + - apiVersion + - kind + - name + properties: + apiVersion: + type: string + minLength: 1 + kind: + type: string + minLength: 1 + namespace: + type: string + minLength: 1 + name: + type: string + minLength: 1 + uri: + type: string + description: 'the target URI or, if ref is provided, a relative URI reference that will be combined with ref to produce a target URI.' + status: + description: 'Status represents the current state of the Trigger. This data may be out of date.' + type: object + x-kubernetes-preserve-unknown-fields: true + names: + kind: Trigger + plural: triggers + singular: trigger + categories: + - all + - knative + - eventing + scope: Namespaced + conversion: + strategy: Webhook + webhook: + conversionReviewVersions: ["v1", "v1beta1"] + clientConfig: + service: + name: eventing-webhook + namespace: knative-eventing