Skip to main content

PubSub Domain

Optional Feature

The PubSub domain is part of the optional Event feature. It is managed exclusively by the Event domain — users do not interact with PubSub resources directly.

The PubSub domain provides the runtime configuration layer for publish/subscribe messaging. It acts as a thin bridge between the Control Plane and the Horizon runtime component, translating Kubernetes custom resources into REST API calls that configure the external messaging system.

Custom Resources​

EventStore​

EventStore is the Schema for the eventstores API. It stores the resolved connection and authentication details for the configuration backend. EventStore resources are created and managed by the EventConfig handler in the event domain.

Group: pubsub.cp.ei.telekom.de · Version: v1 · Scope: Namespaced

EventStoreSpec​

Appears in: EventStore

EventStoreSpec defines the desired state of EventStore. EventStore holds resolved operational values for connecting to the configuration backend, including OAuth2 credentials. It is created by the EventConfig handler.

FieldTypeDefaultValidation
clientIdstring—Required, minLength: 1
clientSecretstring—Required, minLength: 1
overwriteEnvironmentNamestring—Optional
tokenUrlstring—Required, Format: uri, minLength: 1
urlstring—Required, Format: uri, minLength: 1

EventStoreStatus​

Appears in: EventStore, Publisher

EventStoreStatus defines the observed state of EventStore.

FieldTypeDefaultValidation
conditionsCondition[]—Optional

Condition​

Appears in: EventStoreStatus, SubscriberStatus

FieldTypeDefaultValidation
lastTransitionTimestring—Required, Format: date-time
messagestring—Required, maxLength: 32768
observedGenerationinteger—Optional, Format: int64, minimum: 0
reasonstring—Required, minLength: 1, maxLength: 1024, pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
statusstring—Required, Enum: True \| False \| Unknown
typestring—Required, maxLength: 316, pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$

Publisher​

Publisher is the Schema for the publishers API. It represents an event publisher registration in the configuration backend. Publisher resources are created and managed by the EventExposure handler in the event domain.

Group: pubsub.cp.ei.telekom.de · Version: v1 · Scope: Namespaced

PublisherSpec​

Appears in: Publisher

PublisherSpec defines the desired state of Publisher. Publisher represents a registered event publisher in the configuration backend. It is created by the EventExposure handler in the event domain.

FieldTypeDefaultValidation
additionalPublisherIdsstring[]—Optional
eventStoreEventStore—Required
eventTypestring—Required, minLength: 1
jsonSchemastring—Optional
publisherIdstring—Required, minLength: 1

EventStore​

Appears in: PublisherSpec, SubscriberSpec

EventStore references the EventStore CR that provides configuration connection details.

FieldTypeDefaultValidation
namestring—Required
namespacestring—Required
uidstring—Optional

Subscriber​

Subscriber is the Schema for the subscribers API. It represents an event subscription registration in the configuration backend. Subscriber resources are created and managed by the EventSubscription handler in the event domain.

Group: pubsub.cp.ei.telekom.de · Version: v1 · Scope: Namespaced

SubscriberSpec​

Appears in: Subscriber

SubscriberSpec defines the desired state of Subscriber. Subscriber represents an event subscription registration in the configuration backend. It is created by the EventSubscription handler in the event domain.

FieldTypeDefaultValidation
appliedScopesstring[]—Optional
deliveryDelivery—Required
publisherEventStore—Required
publisherTriggerPublisherTrigger—Optional
subscriberIdstring—Required, minLength: 1
triggerPublisherTrigger—Optional

Delivery​

Appears in: SubscriberSpec

Delivery configures how events are delivered to the subscriber.

FieldTypeDefaultValidation
callbackstring—Optional
circuitBreakerOptOutboolean—Optional
enforceGetHttpRequestMethodForHealthCheckboolean—Optional
eventRetentionTimestring—Optional
payloadstringDataRequired, Enum: Data \| DataRef
redeliveriesPerSecondinteger—Optional
retryableStatusCodesinteger[]—Optional
typestringCallbackRequired, Enum: Callback \| ServerSentEvent

PublisherTrigger​

Appears in: SubscriberSpec

PublisherTrigger defines publisher-side filtering criteria for event delivery.

FieldTypeDefaultValidation
responseFilterResponseFilter—Optional
selectionFilterSelectionFilter—Optional

ResponseFilter​

Appears in: PublisherTrigger

ResponseFilter controls payload shaping (which fields to return).

FieldTypeDefaultValidation
modestringIncludeOptional, Enum: Include \| Exclude
pathsstring[]—Optional

SelectionFilter​

Appears in: PublisherTrigger

SelectionFilter controls event matching (which events to deliver).

FieldTypeDefaultValidation
attributesmap<string, string>—Optional
expressionobject—Optional

SubscriberStatus​

Appears in: Subscriber

SubscriberStatus defines the observed state of Subscriber.

FieldTypeDefaultValidation
conditionsCondition[]—Optional
subscriptionIdstring—Optional

Dependency Chain​

Resources in the PubSub domain follow a strict dependency chain:

EventStore ◀── Publisher ◀── Subscriber
(zone) (app) (subscription)
  • A Subscriber can only be created if its Publisher is ready.
  • A Publisher can only be created if its EventStore is ready.
  • An EventStore is created by the Event domain when an EventConfig is applied.

Domain Interactions​

  • Event domain — All PubSub resources are created and owned by the Event domain:
    • EventConfig → EventStore
    • EventExposure → Publisher
    • EventSubscription → Subscriber
  • Horizon (external) — The Subscriber controller makes REST API calls to the Horizon Configuration Backend to register and deregister subscriptions.
note

The PubSub domain is intentionally self-contained. It does not import API types from other Control Plane domains, making it possible to replace the Horizon runtime with a different messaging backend in the future.