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
clientIdstringRequired, minLength: 1
clientSecretstringRequired, minLength: 1
tokenUrlstringRequired, Format: uri, minLength: 1
urlstringRequired, 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
lastTransitionTimestringRequired, Format: date-time
messagestringRequired, maxLength: 32768
observedGenerationintegerOptional, Format: int64, minimum: 0
reasonstringRequired, minLength: 1, maxLength: 1024, pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
statusstringRequired, Enum: True \| False \| Unknown
typestringRequired, 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
eventStoreEventStoreRequired
eventTypestringRequired, minLength: 1
jsonSchemastringOptional
publisherIdstringRequired, minLength: 1

EventStore

Appears in: PublisherSpec, SubscriberSpec

EventStore references the EventStore CR that provides configuration connection details.

FieldTypeDefaultValidation
namestringRequired
namespacestringRequired
uidstringOptional

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
deliveryDeliveryRequired
publisherEventStoreRequired
publisherTriggerPublisherTriggerOptional
subscriberIdstringRequired, minLength: 1
triggerPublisherTriggerOptional

Delivery

Appears in: SubscriberSpec

Delivery configures how events are delivered to the subscriber.

FieldTypeDefaultValidation
callbackstringOptional
circuitBreakerOptOutbooleanOptional
enforceGetHttpRequestMethodForHealthCheckbooleanOptional
eventRetentionTimestringOptional
payloadstringDataRequired, Enum: Data \| DataRef
redeliveriesPerSecondintegerOptional
retryableStatusCodesinteger[]Optional
typestringCallbackRequired, Enum: Callback \| ServerSentEvent

PublisherTrigger

Appears in: SubscriberSpec

PublisherTrigger defines publisher-side filtering criteria for event delivery.

FieldTypeDefaultValidation
responseFilterResponseFilterOptional
selectionFilterSelectionFilterOptional

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
expressionobjectOptional

SubscriberStatus

Appears in: Subscriber

SubscriberStatus defines the observed state of Subscriber.

FieldTypeDefaultValidation
conditionsCondition[]Optional
subscriptionIdstringOptional

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.