Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Messaging storage v1 #3925

Merged
merged 2 commits into from
Aug 26, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

can we just add the groups and resources here to LOC 48 and 50?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@nlopezgi you mean messaging api group should come before eventing api group? or something else?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think it should be possible to have a single apiGroups statement that includes the following resources:

      - "containersources"
      - "sinkbindings"	      
      - "channels"
      - "inmemorychannels"
      - "brokers"
      - "triggers"	

given that for all resources the same verbs are listed?
Just to reduce a bit of verbosity, but in all senses a nit, so totally your choice to leave as is or collapse.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@nlopezgi not sure if that would work. These resources are from different apiGroups (eventing, messaging, etc.).
Let's leave as is and we can have a look later?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

thanks! yeah, you are probably right. I think with #3943 my concern is addressed

- "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