Skip to content

Commit

Permalink
Messaging storage v1 (#3925)
Browse files Browse the repository at this point in the history
* Make messaging.* v1 resources the stored version

* No storage version change for subscriptions yet
  • Loading branch information
aliok authored Aug 26, 2020
1 parent 6044c62 commit f7f934c
Show file tree
Hide file tree
Showing 6 changed files with 361 additions and 4 deletions.
4 changes: 2 additions & 2 deletions config/channels/in-memory-channel/300-in-memory-channel.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ spec:
- &version
name: v1beta1
served: true
storage: true
storage: false
subresources:
status: {}
schema:
Expand All @@ -53,7 +53,7 @@ spec:
- << : *version
name: v1
served: true
storage: false
storage: true
names:
kind: InMemoryChannel
plural: inmemorychannels
Expand Down
4 changes: 2 additions & 2 deletions config/core/resources/channel.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ spec:
- &version
name: v1beta1
served: true
storage: true
storage: false
subresources:
status: {}
additionalPrinterColumns:
Expand Down Expand Up @@ -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:
Expand Down
266 changes: 266 additions & 0 deletions config/pre-install/v0.18.0/channel.yaml
Original file line number Diff line number Diff line change
@@ -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^<numberOfRetries>.'
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
13 changes: 13 additions & 0 deletions config/pre-install/v0.18.0/clusterrole.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -58,3 +58,16 @@ rules:
- "delete"
- "patch"
- "watch"
- apiGroups:
- "messaging.knative.dev"
resources:
- "channels"
- "inmemorychannels"
verbs:
- "get"
- "list"
- "create"
- "update"
- "delete"
- "patch"
- "watch"
76 changes: 76 additions & 0 deletions config/pre-install/v0.18.0/in-memory-channel.yaml
Original file line number Diff line number Diff line change
@@ -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
Loading

0 comments on commit f7f934c

Please sign in to comment.