docs/reference/eventing/eventing.md

23 KiB
Raw Blame History

Packages:

duck.knative.dev

Package v1alpha1 is the v1alpha1 version of the API.

Resource Types:

    Channel

    Channel is a skeleton type wrapping Subscribable in the manner we expect resource writers defining compatible resources to embed it. We will typically use this type to deserialize Channel ObjectReferences and access the Subscription data. This is not a real resource.

    Field Description
    metadata
    Kubernetes meta/v1.ObjectMeta
    Refer to the Kubernetes API documentation for the fields of the metadata field.
    spec
    ChannelSpec

    ChannelSpec is the part where Subscribable object is configured as to be compatible with Subscribable contract.



    subscribable
    Subscribable

    ChannelSpec

    (Appears on: Channel)

    ChannelSpec shows how we expect folks to embed Subscribable in their Spec field.

    Field Description
    subscribable
    Subscribable

    ChannelSubscriberSpec

    (Appears on: Subscribable)

    ChannelSubscriberSpec defines a single subscriber to a Channel. Ref is a reference to the Subscription this ChannelSubscriberSpec was created for SubscriberURI is the endpoint for the subscriber ReplyURI is the endpoint for the reply At least one of SubscriberURI and ReplyURI must be present

    Field Description
    ref
    Kubernetes core/v1.ObjectReference
    (Optional)
    subscriberURI
    string
    (Optional)
    replyURI
    string
    (Optional)

    Subscribable

    (Appears on: ChannelSpec, ChannelSpec)

    Subscribable is the schema for the subscribable portion of the spec section of the resource.

    Field Description
    subscribers
    []ChannelSubscriberSpec

    TODO: What is actually required here for Channel spec. This is the list of subscriptions for this channel.


    eventing.knative.dev

    Package v1alpha1 is the v1alpha1 version of the API.

    Resource Types:

    Channel

    Channel is an abstract resource that implements the Addressable contract. The Provisioner provisions infrastructure to accepts events and deliver to Subscriptions.

    Field Description
    apiVersion
    string
    eventing.knative.dev/v1alpha1
    kind
    string
    Channel
    metadata
    Kubernetes meta/v1.ObjectMeta
    (Optional) Refer to the Kubernetes API documentation for the fields of the metadata field.
    spec
    ChannelSpec

    Spec defines the desired state of the Channel.



    generation
    int64
    (Optional)

    TODO: Generation does not work correctly with CRD. They are scrubbed by the APIserver (https://github.com/kubernetes/kubernetes/issues/58778) So, we add Generation here. Once that gets fixed, remove this and use ObjectMeta.Generation instead.

    provisioner
    Kubernetes core/v1.ObjectReference

    Provisioner defines the name of the Provisioner backing this channel.

    arguments
    k8s.io/apimachinery/pkg/runtime.RawExtension
    (Optional)

    Arguments defines the arguments to pass to the Provisioner which provisions this Channel.

    subscribable
    Subscribable

    Channel conforms to Duck type Subscribable.

    status
    ChannelStatus
    (Optional)

    Status represents the current state of the Channel. This data may be out of date.

    ClusterChannelProvisioner

    ClusterChannelProvisioner encapsulates a provisioning strategy for the backing resources required to realize a particular resource type.

    Field Description
    apiVersion
    string
    eventing.knative.dev/v1alpha1
    kind
    string
    ClusterChannelProvisioner
    metadata
    Kubernetes meta/v1.ObjectMeta
    (Optional) Refer to the Kubernetes API documentation for the fields of the metadata field.
    spec
    ClusterChannelProvisionerSpec

    Spec defines the Types provisioned by this Provisioner.



    generation
    int64
    (Optional)

    TODO: Generation does not work correctly with CRD. They are scrubbed by the APIserver (https://github.com/kubernetes/kubernetes/issues/58778) So, we add Generation here. Once that gets fixed, remove this and use ObjectMeta.Generation instead.

    status
    ClusterChannelProvisionerStatus
    (Optional)

    Status is the current status of the Provisioner.

    Subscription

    Subscription routes events received on a Channel to a DNS name and corresponds to the subscriptions.channels.knative.dev CRD.

    Field Description
    apiVersion
    string
    eventing.knative.dev/v1alpha1
    kind
    string
    Subscription
    metadata
    Kubernetes meta/v1.ObjectMeta
    Refer to the Kubernetes API documentation for the fields of the metadata field.
    spec
    SubscriptionSpec


    generation
    int64
    (Optional)

    TODO: Generation used to not work correctly with CRD. They were scrubbed by the APIserver (https://github.com/kubernetes/kubernetes/issues/58778) So, we add Generation here. Once the above bug gets rolled out to production clusters, remove this and use ObjectMeta.Generation instead.

    channel
    Kubernetes core/v1.ObjectReference

    Reference to a channel that will be used to create the subscription for receiving events. The channel must have spec.subscriptions list which will then be modified accordingly.

    You can specify only the following fields of the ObjectReference: - Kind - APIVersion - Name Kind must be “Channel” and APIVersion must be “eventing.knative.dev/v1alpha1”

    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.)

    subscriber
    SubscriberSpec
    (Optional)

    Subscriber is reference to (optional) function for processing events. Events from the Channel will be delivered here and replies are sent to a channel as specified by the Reply.

    reply
    ReplyStrategy
    (Optional)

    Reply specifies (optionally) how to handle events returned from the Subscriber target.

    status
    SubscriptionStatus

    ChannelProvisionerDefaulter

    ChannelProvisionerDefaulter sets the default Provisioner and Arguments on Channels that do not specify any Provisioner.

    ChannelSpec

    (Appears on: Channel)

    ChannelSpec specifies the Provisioner backing a channel and the configuration arguments for a Channel.

    Field Description
    generation
    int64
    (Optional)

    TODO: Generation does not work correctly with CRD. They are scrubbed by the APIserver (https://github.com/kubernetes/kubernetes/issues/58778) So, we add Generation here. Once that gets fixed, remove this and use ObjectMeta.Generation instead.

    provisioner
    Kubernetes core/v1.ObjectReference

    Provisioner defines the name of the Provisioner backing this channel.

    arguments
    k8s.io/apimachinery/pkg/runtime.RawExtension
    (Optional)

    Arguments defines the arguments to pass to the Provisioner which provisions this Channel.

    subscribable
    Subscribable

    Channel conforms to Duck type Subscribable.

    ChannelStatus

    (Appears on: Channel)

    ChannelStatus represents the current state of a Channel.

    Field Description
    observedGeneration
    int64
    (Optional)

    ObservedGeneration is the most recent generation observed for this Channel. It corresponds to the Channels generation, which is updated on mutation by the API Server. TODO: The above comment is only true once https://github.com/kubernetes/kubernetes/issues/58778 is fixed.

    address
    github.com/knative/pkg/apis/duck/v1alpha1.Addressable

    Channel is Addressable. It currently exposes the endpoint as a fully-qualified DNS name which will distribute traffic over the provided targets from inside the cluster.

    It generally has the form {channel}.{namespace}.svc.cluster.local

    conditions
    github.com/knative/pkg/apis/duck/v1alpha1.Conditions
    (Optional)

    Represents the latest available observations of a channels current state.

    ClusterChannelProvisionerSpec

    (Appears on: ClusterChannelProvisioner)

    ClusterChannelProvisionerSpec is the spec for a ClusterChannelProvisioner resource.

    Field Description
    generation
    int64
    (Optional)

    TODO: Generation does not work correctly with CRD. They are scrubbed by the APIserver (https://github.com/kubernetes/kubernetes/issues/58778) So, we add Generation here. Once that gets fixed, remove this and use ObjectMeta.Generation instead.

    ClusterChannelProvisionerStatus

    (Appears on: ClusterChannelProvisioner)

    ClusterChannelProvisionerStatus is the status for a ClusterChannelProvisioner resource

    Field Description
    conditions
    github.com/knative/pkg/apis/duck/v1alpha1.Conditions
    (Optional)

    Conditions holds the state of a cluster provisioner at a point in time.

    observedGeneration
    int64
    (Optional)

    ObservedGeneration is the Generation of the ClusterChannelProvisioner that was last reconciled by the controller.

    ReplyStrategy

    (Appears on: SubscriptionSpec)

    ReplyStrategy specifies the handling of the SubscriberSpecs returned replies. If no SubscriberSpec is specified, the identity function is assumed.

    Field Description
    channel
    Kubernetes core/v1.ObjectReference
    (Optional)

    This object must be a Channel.

    You can specify only the following fields of the ObjectReference: - Kind - APIVersion - Name Kind must be “Channel” and APIVersion must be “eventing.knative.dev/v1alpha1”

    SubscriberSpec

    (Appears on: SubscriptionSpec)

    SubscriberSpec specifies the reference to an object thats expected to provide the resolved target of the action. Currently we inspect the objects Status and see if theres a predefined Status field that we will then use to dispatch events to be processed by the target. Currently must resolve to a k8s service or Istio virtual service. Note that in the future we should try to utilize subresources (/resolve ?) to make this cleaner, but CRDs do not support subresources yet, so we need to rely on a specified Status field today. By relying on this behaviour we can utilize a dynamic client instead of having to understand all kinds of different types of objects. As long as they adhere to this particular contract, they can be used as a Target.

    This ensures that we can support external targets and for ease of use we also allow for an URI to be specified. There of course is also a requirement for the resolved SubscriberSpec to behave properly at the data plane level. TODO: Add a pointer to a real spec for this. For now, this means: Receive an event payload, and respond with one of: success and an optional response event, or failure. Delivery failures may be retried by the channel

    Field Description
    ref
    Kubernetes core/v1.ObjectReference
    (Optional)

    Reference to an object that will be used to find the target endpoint, which should implement the Addressable duck type. For example, this could be a reference to a Route resource or a Knative Service resource. TODO: Specify the required fields the target object must have in the status. You can specify only the following fields of the ObjectReference: - Kind - APIVersion - Name

    dnsName
    string
    (Optional)

    Reference to a known endpoint where no resolving is done. http://k8s-service for example http://myexternalhandler.example.com/foo/bar

    SubscriptionSpec

    (Appears on: Subscription)

    SubscriptionSpec 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 invoming 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

    Field Description
    generation
    int64
    (Optional)

    TODO: Generation used to not work correctly with CRD. They were scrubbed by the APIserver (https://github.com/kubernetes/kubernetes/issues/58778) So, we add Generation here. Once the above bug gets rolled out to production clusters, remove this and use ObjectMeta.Generation instead.

    channel
    Kubernetes core/v1.ObjectReference

    Reference to a channel that will be used to create the subscription for receiving events. The channel must have spec.subscriptions list which will then be modified accordingly.

    You can specify only the following fields of the ObjectReference: - Kind - APIVersion - Name Kind must be “Channel” and APIVersion must be “eventing.knative.dev/v1alpha1”

    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.)

    subscriber
    SubscriberSpec
    (Optional)

    Subscriber is reference to (optional) function for processing events. Events from the Channel will be delivered here and replies are sent to a channel as specified by the Reply.

    reply
    ReplyStrategy
    (Optional)

    Reply specifies (optionally) how to handle events returned from the Subscriber target.

    SubscriptionStatus

    (Appears on: Subscription)

    SubscriptionStatus (computed) for a subscription

    Field Description
    conditions
    github.com/knative/pkg/apis/duck/v1alpha1.Conditions

    Represents the latest available observations of a subscriptions current state.

    physicalSubscription,omitEmpty
    SubscriptionStatusPhysicalSubscription

    PhysicalSubscription is the fully resolved values that this Subscription represents.

    SubscriptionStatusPhysicalSubscription

    (Appears on: SubscriptionStatus)

    SubscriptionStatusPhysicalSubscription represents the fully resolved values for this Subscription.

    Field Description
    subscriberURI,omitEmpty
    string

    SubscriberURI is the fully resolved URI for spec.subscriber.

    replyURI,omitEmpty
    string

    ReplyURI is the fully resolved URI for the spec.reply.


    Generated with gen-crd-api-reference-docs on git commit 90852711.