From c94253307751c2a5daf1923249f55160fb937208 Mon Sep 17 00:00:00 2001 From: Ali Ok Date: Thu, 27 Aug 2020 11:29:23 +0300 Subject: [PATCH] Change storage to v1 for subscriptions --- 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, 318 insertions(+), 2 deletions(-) create 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 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/clusterrole.yaml b/config/pre-install/v0.18.0/clusterrole.yaml index b80fa65e81e..c58b03054d2 100644 --- a/config/pre-install/v0.18.0/clusterrole.yaml +++ b/config/pre-install/v0.18.0/clusterrole.yaml @@ -63,6 +63,7 @@ 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 29eed16f74c..0897f6a4323 100644 --- a/config/pre-install/v0.18.0/storage-version-migration.yaml +++ b/config/pre-install/v0.18.0/storage-version-migration.yaml @@ -44,3 +44,4 @@ 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 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