config

package
v0.17.8 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 6, 2020 License: Apache-2.0 Imports: 0 Imported by: 0

README

NATS Streaming Channels

NATS Streaming channels are beta-quality Channels that are backed by NATS Streaming.

They offer:

  • Persistence
    • If the Channel's Pod goes down, all events already ACKed by the Channel will persist and be retransmitted when the Pod restarts.
  • Redelivery attempts
    • If downstream rejects an event, that request is attempted again. NOTE: downstream must successfully process the event within one minute or the delivery is assumed to have failed and will be reattempted.

They do not offer:

  • Ordering guarantees
    • Events seen downstream may not occur in the same order they were inserted into the Channel.

Deployment steps

  1. Setup Knative Eventing.

  2. If not done already, install a NATS Streaming

  3. Apply the NATSS configuration:

    ko apply -f natss/config
    
  4. Create NATSS channels:

    apiVersion: messaging.knative.dev/v1alpha1
    kind: NatssChannel
    metadata:
      name: foo
    

Components

The major components are:

  • NATS Streaming
  • NATSS Channel Controller
  • NATSS Channel Dispatcher

The NATSS Channel Controller is located in one Pod.

kubectl get deployment -n knative-eventing natss-ch-controller

The NATSS Channel Dispatcher receives and distributes all events. There is a single Dispatcher for all NATSS Channels.

kubectl get deployment -n knative-eventing natss-ch-dispatcher

By default the components are configured to connect to NATS at nats://nats-streaming.natss.svc:4222 with NATS Streaming cluster ID knative-nats-streaming. This may be overridden by configuring both the natss-ch-controller and natss-ch-dispatcher deployments with the following environment variables:

env:
  - name: DEFAULT_NATSS_URL
    value: nats://natss.custom-namespace.svc.cluster.local:4222
  - name: DEFAULT_CLUSTER_ID
    value: custom-cluster-id
  - name: SYSTEM_NAMESPACE
    valueFrom:
      fieldRef:
        fieldPath: metadata.namespace

Documentation

Overview

Package config is a placeholder that allows us to pull in config files via go mod vendor.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL