From 2e773f51461b357d5df88a724a4f330440b83212 Mon Sep 17 00:00:00 2001 From: Ali Ok Date: Tue, 25 Aug 2020 16:48:15 +0300 Subject: [PATCH 1/2] Make messaging.* v1 resources the stored version --- .../300-in-memory-channel.yaml | 4 +- config/core/resources/channel.yaml | 4 +- config/core/resources/subscription.yaml | 4 +- config/pre-install/v0.18.0/channel.yaml | 266 +++++++++++++++ config/pre-install/v0.18.0/clusterrole.yaml | 14 + .../v0.18.0/in-memory-channel.yaml | 76 +++++ .../v0.18.0/storage-version-migration.yaml | 3 + config/pre-install/v0.18.0/subscription.yaml | 314 ++++++++++++++++++ 8 files changed, 679 insertions(+), 6 deletions(-) create mode 100644 config/pre-install/v0.18.0/channel.yaml create mode 100644 config/pre-install/v0.18.0/in-memory-channel.yaml create mode 100644 config/pre-install/v0.18.0/subscription.yaml diff --git a/config/channels/in-memory-channel/300-in-memory-channel.yaml b/config/channels/in-memory-channel/300-in-memory-channel.yaml index 4448289f476..1f57a454b44 100644 --- a/config/channels/in-memory-channel/300-in-memory-channel.yaml +++ b/config/channels/in-memory-channel/300-in-memory-channel.yaml @@ -26,7 +26,7 @@ spec: - &version name: v1beta1 served: true - storage: true + storage: false subresources: status: {} schema: @@ -53,7 +53,7 @@ spec: - << : *version name: v1 served: true - storage: false + storage: true names: kind: InMemoryChannel plural: inmemorychannels diff --git a/config/core/resources/channel.yaml b/config/core/resources/channel.yaml index 9517e54abff..bf785634672 100644 --- a/config/core/resources/channel.yaml +++ b/config/core/resources/channel.yaml @@ -27,7 +27,7 @@ spec: - &version name: v1beta1 served: true - storage: true + storage: false subresources: status: {} additionalPrinterColumns: @@ -239,7 +239,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/subscription.yaml b/config/core/resources/subscription.yaml index 28637367096..397873c214b 100644 --- a/config/core/resources/subscription.yaml +++ b/config/core/resources/subscription.yaml @@ -24,7 +24,7 @@ spec: - &version name: v1beta1 served: true - storage: true + storage: false subresources: status: {} schema: @@ -288,7 +288,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/pre-install/v0.18.0/channel.yaml b/config/pre-install/v0.18.0/channel.yaml new file mode 100644 index 00000000000..bf785634672 --- /dev/null +++ b/config/pre-install/v0.18.0/channel.yaml @@ -0,0 +1,266 @@ +# 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: channels.messaging.knative.dev + labels: + eventing.knative.dev/release: devel + knative.dev/crd-install: "true" + messaging.knative.dev/subscribable: "true" + duck.knative.dev/addressable: "true" +spec: + group: messaging.knative.dev + versions: + - &version + name: v1beta1 + served: true + storage: false + subresources: + status: {} + 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" + schema: + openAPIV3Schema: &openAPIV3Schema + type: object + properties: + spec: + description: Spec defines the desired state of the Channel. + type: object + properties: + channelTemplate: + description: ChannelTemplate specifies which Channel CRD to use to + create the CRD Channel backing this Channel. This is immutable + after creation. Normally this is set by the Channel defaulter, + not directly by the user. + type: object + 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 + spec: + description: Spec defines the Spec to use for each channel + created. Passed in verbatim to the Channel CRD as Spec + section. + type: string + delivery: &deliverySpec + description: DeliverySpec contains options controlling the event delivery + 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: &referentProperties + 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 + subscribers: + description: This is the list of subscriptions for this subscribable. + type: array + items: + type: object + properties: + delivery: + <<: *deliverySpec + generation: + description: Generation of the origin of the subscriber + with uid:UID. + type: integer + format: int64 + replyUri: + description: ReplyURI is the endpoint for the reply + type: string + subscriberUri: + description: SubscriberURI is the endpoint for the subscriber + type: string + uid: + description: UID is used to understand the origin of the + subscriber. + type: string + status: + description: Status represents the current state of the Channel. This data + may be out of date. + type: object + properties: + address: + 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 + channel: + description: Channel is an KReference to the Channel CRD backing this + Channel. + type: object + properties: + <<: *referentProperties + conditions: + description: Conditions the latest available observations of a resource's + current state. + type: array + items: + type: object + x-kubernetes-preserve-unknown-fields: true + 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 + 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 + deadLetterChannel: + description: DeadLetterChannel is a KReference and is set by the channel + when it supports native error handling via a channel Failed messages + are delivered here. + type: object + properties: + <<: *referentProperties + observedGeneration: + description: ObservedGeneration is the 'Generation' of the Service + that was last processed by the controller. + type: integer + format: int64 + subscribers: + description: This is the list of subscription's statuses for this + channel. + type: array + items: + type: object + properties: + message: + description: A human readable message indicating details + of Ready status. + type: string + observedGeneration: + description: Generation of the origin of the subscriber + with uid:UID. + type: integer + format: int64 + ready: + description: Status of the subscriber. + type: string + uid: + description: UID is used to understand the origin of the + subscriber. + type: string + - << : *version + name: v1 + served: true + storage: true + # the schema of v1 is exactly the same as v1beta1 schema + schema: + openAPIV3Schema: + << : *openAPIV3Schema + names: + kind: Channel + plural: channels + singular: channel + categories: + - all + - knative + - messaging + - channel + shortNames: + - ch + 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 bfa98b1c38a..c58b03054d2 100644 --- a/config/pre-install/v0.18.0/clusterrole.yaml +++ b/config/pre-install/v0.18.0/clusterrole.yaml @@ -58,3 +58,17 @@ rules: - "delete" - "patch" - "watch" + - apiGroups: + - "messaging.knative.dev" + resources: + - "channels" + - "inmemorychannels" + - "subscriptions" + verbs: + - "get" + - "list" + - "create" + - "update" + - "delete" + - "patch" + - "watch" diff --git a/config/pre-install/v0.18.0/in-memory-channel.yaml b/config/pre-install/v0.18.0/in-memory-channel.yaml new file mode 100644 index 00000000000..1f57a454b44 --- /dev/null +++ b/config/pre-install/v0.18.0/in-memory-channel.yaml @@ -0,0 +1,76 @@ +# Copyright 2019 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: inmemorychannels.messaging.knative.dev + labels: + eventing.knative.dev/release: devel + knative.dev/crd-install: "true" + messaging.knative.dev/subscribable: "true" + duck.knative.dev/addressable: "true" +spec: + group: messaging.knative.dev + versions: + - &version + name: v1beta1 + served: true + storage: false + subresources: + status: {} + schema: + openAPIV3Schema: + type: object + # this is a work around so we don't need to flush out the + # schema for each version at this time + # + # see issue: https://github.com/knative/serving/issues/912 + x-kubernetes-preserve-unknown-fields: true + 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 + names: + kind: InMemoryChannel + plural: inmemorychannels + singular: inmemorychannel + categories: + - all + - knative + - messaging + - channel + shortNames: + - imc + 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/storage-version-migration.yaml b/config/pre-install/v0.18.0/storage-version-migration.yaml index 394e21a292a..0897f6a4323 100644 --- a/config/pre-install/v0.18.0/storage-version-migration.yaml +++ b/config/pre-install/v0.18.0/storage-version-migration.yaml @@ -42,3 +42,6 @@ spec: - "sinkbindings.sources.knative.dev" - "brokers.sources.knative.dev" - "triggers.sources.knative.dev" + - "channels.messaging.knative.dev" + - "inmemorychannels.messaging.knative.dev" + - "subscriptions.messaging.knative.dev" diff --git a/config/pre-install/v0.18.0/subscription.yaml b/config/pre-install/v0.18.0/subscription.yaml new file mode 100644 index 00000000000..397873c214b --- /dev/null +++ b/config/pre-install/v0.18.0/subscription.yaml @@ -0,0 +1,314 @@ +# 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: subscriptions.messaging.knative.dev + labels: + eventing.knative.dev/release: devel + knative.dev/crd-install: "true" +spec: + group: messaging.knative.dev + versions: + - &version + name: v1beta1 + served: true + storage: false + subresources: + status: {} + schema: + openAPIV3Schema: &openAPIV3Schema + type: object + description: 'Subscription routes events received on a Channel to a DNS name and + corresponds to the subscriptions.channels.knative.dev CRD.' + properties: + spec: + type: object + description: 'Specifies the Channel for incoming events, a Subscriber target + for processing those events and where to put the result of the processing. Only + From (where the events are coming from) is always required. You can optionally + only Process the events (results in no output events) by leaving out the Result. + You can also perform an identity transformation on the incoming events by leaving + out the Subscriber and only specifying Result. + + The following are all valid specifications: + channel --[subscriber]--> reply + Sink, no outgoing events: + channel -- subscriber + no-op function (identity transformation): + channel --> reply' + properties: + channel: + description: 'Reference to a channel that will be used to create the + subscription You can specify only the following fields of the + ObjectReference: + - Kind + - APIVersion + - Name The resource pointed + by this ObjectReference must meet the contract to the ChannelableSpec + duck type. If the resource does not meet this contract it will + be reflected in the Subscription''s status. This field is immutable. + We have no good answer on what happens to the events that are + currently in the channel being consumed from and what the semantics + there should be. For now, you can always delete the Subscription + and recreate it to point to a different channel, giving the user + more control over what semantics should be used (drain the channel + first, possibly have events dropped, etc.)' + type: object + properties: + apiVersion: + description: 'API version of the referent.' + type: string + fieldPath: + description: 'If referring to a piece of an object instead + of an entire object, this string should contain a valid + JSON/Go field access statement, such as desiredState.manifest.containers[2]. + For example, if the object reference is to a container + within a pod, this would take on a value like: "spec.containers{name}" + (where "name" refers to the name of the container that + triggered the event) or if no container name is specified + "spec.containers[2]" (container with index 2 in this pod). + This syntax is chosen only to have some well-defined way + of referencing a part of an object.' + 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/' + type: string + resourceVersion: + description: 'Specific resourceVersion to which this reference + is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency' + type: string + uid: + description: 'UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids' + type: string + delivery: + description: 'Delivery configuration' + 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 + reply: + description: 'Reply specifies (optionally) how to handle events returned + from the Subscriber target.' + 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 + subscriber: + description: 'Subscriber is reference to (optional) function for processing + events. Events from the Channel will be delivered here and replies + are sent to a Destination as specified by the Reply.' + 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 + status: + type: object + description: Status (computed) for a subscription + properties: + 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 + 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 + physicalSubscription: + description: 'PhysicalSubscription is the fully resolved values that + this Subscription represents.' + type: object + properties: + deadLetterSinkUri: + description: 'ReplyURI is the fully resolved URI for the spec.delivery.deadLetterSink.' + type: string + replyUri: + description: 'ReplyURI is the fully resolved URI for the spec.reply.' + type: string + subscriberUri: + description: 'SubscriberURI is the fully resolved URI for spec.subscriber.' + type: string + additionalPrinterColumns: + - 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: Subscription + plural: subscriptions + singular: subscription + categories: + - all + - knative + - messaging + shortNames: + - sub + scope: Namespaced + conversion: + strategy: Webhook + webhook: + conversionReviewVersions: ["v1", "v1beta1"] + clientConfig: + service: + name: eventing-webhook + namespace: knative-eventing From 4baf8a8c4540f307e401fcef6ebf40672c37a3f5 Mon Sep 17 00:00:00 2001 From: Ali Ok Date: Tue, 25 Aug 2020 18:14:14 +0300 Subject: [PATCH 2/2] No storage version change for subscriptions yet --- config/core/resources/subscription.yaml | 4 +- config/pre-install/v0.18.0/clusterrole.yaml | 1 - .../v0.18.0/storage-version-migration.yaml | 1 - config/pre-install/v0.18.0/subscription.yaml | 314 ------------------ 4 files changed, 2 insertions(+), 318 deletions(-) delete mode 100644 config/pre-install/v0.18.0/subscription.yaml diff --git a/config/core/resources/subscription.yaml b/config/core/resources/subscription.yaml index 397873c214b..28637367096 100644 --- a/config/core/resources/subscription.yaml +++ b/config/core/resources/subscription.yaml @@ -24,7 +24,7 @@ spec: - &version name: v1beta1 served: true - storage: false + storage: true subresources: status: {} schema: @@ -288,7 +288,7 @@ spec: - <<: *version name: v1 served: true - storage: true + storage: false # the schema of v1 is exactly the same as v1beta1 schema schema: openAPIV3Schema: diff --git a/config/pre-install/v0.18.0/clusterrole.yaml b/config/pre-install/v0.18.0/clusterrole.yaml index c58b03054d2..b80fa65e81e 100644 --- a/config/pre-install/v0.18.0/clusterrole.yaml +++ b/config/pre-install/v0.18.0/clusterrole.yaml @@ -63,7 +63,6 @@ rules: resources: - "channels" - "inmemorychannels" - - "subscriptions" verbs: - "get" - "list" 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 0897f6a4323..29eed16f74c 100644 --- a/config/pre-install/v0.18.0/storage-version-migration.yaml +++ b/config/pre-install/v0.18.0/storage-version-migration.yaml @@ -44,4 +44,3 @@ spec: - "triggers.sources.knative.dev" - "channels.messaging.knative.dev" - "inmemorychannels.messaging.knative.dev" - - "subscriptions.messaging.knative.dev" diff --git a/config/pre-install/v0.18.0/subscription.yaml b/config/pre-install/v0.18.0/subscription.yaml deleted file mode 100644 index 397873c214b..00000000000 --- a/config/pre-install/v0.18.0/subscription.yaml +++ /dev/null @@ -1,314 +0,0 @@ -# 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: subscriptions.messaging.knative.dev - labels: - eventing.knative.dev/release: devel - knative.dev/crd-install: "true" -spec: - group: messaging.knative.dev - versions: - - &version - name: v1beta1 - served: true - storage: false - subresources: - status: {} - schema: - openAPIV3Schema: &openAPIV3Schema - type: object - description: 'Subscription routes events received on a Channel to a DNS name and - corresponds to the subscriptions.channels.knative.dev CRD.' - properties: - spec: - type: object - description: 'Specifies the Channel for incoming events, a Subscriber target - for processing those events and where to put the result of the processing. Only - From (where the events are coming from) is always required. You can optionally - only Process the events (results in no output events) by leaving out the Result. - You can also perform an identity transformation on the incoming events by leaving - out the Subscriber and only specifying Result. - - The following are all valid specifications: - channel --[subscriber]--> reply - Sink, no outgoing events: - channel -- subscriber - no-op function (identity transformation): - channel --> reply' - properties: - channel: - description: 'Reference to a channel that will be used to create the - subscription You can specify only the following fields of the - ObjectReference: - - Kind - - APIVersion - - Name The resource pointed - by this ObjectReference must meet the contract to the ChannelableSpec - duck type. If the resource does not meet this contract it will - be reflected in the Subscription''s status. This field is immutable. - We have no good answer on what happens to the events that are - currently in the channel being consumed from and what the semantics - there should be. For now, you can always delete the Subscription - and recreate it to point to a different channel, giving the user - more control over what semantics should be used (drain the channel - first, possibly have events dropped, etc.)' - type: object - properties: - apiVersion: - description: 'API version of the referent.' - type: string - fieldPath: - description: 'If referring to a piece of an object instead - of an entire object, this string should contain a valid - JSON/Go field access statement, such as desiredState.manifest.containers[2]. - For example, if the object reference is to a container - within a pod, this would take on a value like: "spec.containers{name}" - (where "name" refers to the name of the container that - triggered the event) or if no container name is specified - "spec.containers[2]" (container with index 2 in this pod). - This syntax is chosen only to have some well-defined way - of referencing a part of an object.' - 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/' - type: string - resourceVersion: - description: 'Specific resourceVersion to which this reference - is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency' - type: string - uid: - description: 'UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids' - type: string - delivery: - description: 'Delivery configuration' - 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 - reply: - description: 'Reply specifies (optionally) how to handle events returned - from the Subscriber target.' - 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 - subscriber: - description: 'Subscriber is reference to (optional) function for processing - events. Events from the Channel will be delivered here and replies - are sent to a Destination as specified by the Reply.' - 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 - status: - type: object - description: Status (computed) for a subscription - properties: - 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 - 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 - physicalSubscription: - description: 'PhysicalSubscription is the fully resolved values that - this Subscription represents.' - type: object - properties: - deadLetterSinkUri: - description: 'ReplyURI is the fully resolved URI for the spec.delivery.deadLetterSink.' - type: string - replyUri: - description: 'ReplyURI is the fully resolved URI for the spec.reply.' - type: string - subscriberUri: - description: 'SubscriberURI is the fully resolved URI for spec.subscriber.' - type: string - additionalPrinterColumns: - - 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: Subscription - plural: subscriptions - singular: subscription - categories: - - all - - knative - - messaging - shortNames: - - sub - scope: Namespaced - conversion: - strategy: Webhook - webhook: - conversionReviewVersions: ["v1", "v1beta1"] - clientConfig: - service: - name: eventing-webhook - namespace: knative-eventing