PubSub Domain
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.
| Field | Type | Default | Validation |
|---|---|---|---|
clientId | string | — | Required, minLength: 1 |
clientSecret | string | — | Required, minLength: 1 |
tokenUrl | string | — | Required, Format: uri, minLength: 1 |
url | string | — | Required, Format: uri, minLength: 1 |
EventStoreStatus
Appears in: EventStore, Publisher
EventStoreStatus defines the observed state of EventStore.
| Field | Type | Default | Validation |
|---|---|---|---|
conditions | Condition[] | — | Optional |
Condition
Appears in: EventStoreStatus, SubscriberStatus
| Field | Type | Default | Validation |
|---|---|---|---|
lastTransitionTime | string | — | Required, Format: date-time |
message | string | — | Required, maxLength: 32768 |
observedGeneration | integer | — | Optional, Format: int64, minimum: 0 |
reason | string | — | Required, minLength: 1, maxLength: 1024, pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ |
status | string | — | Required, Enum: True \| False \| Unknown |
type | string | — | 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.
| Field | Type | Default | Validation |
|---|---|---|---|
additionalPublisherIds | string[] | — | Optional |
eventStore | EventStore | — | Required |
eventType | string | — | Required, minLength: 1 |
jsonSchema | string | — | Optional |
publisherId | string | — | Required, minLength: 1 |
EventStore
Appears in: PublisherSpec, SubscriberSpec
EventStore references the EventStore CR that provides configuration connection details.
| Field | Type | Default | Validation |
|---|---|---|---|
name | string | — | Required |
namespace | string | — | Required |
uid | string | — | 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.
| Field | Type | Default | Validation |
|---|---|---|---|
appliedScopes | string[] | — | Optional |
delivery | Delivery | — | Required |
publisher | EventStore | — | Required |
publisherTrigger | PublisherTrigger | — | Optional |
subscriberId | string | — | Required, minLength: 1 |
trigger | PublisherTrigger | — | Optional |
Delivery
Appears in: SubscriberSpec
Delivery configures how events are delivered to the subscriber.
| Field | Type | Default | Validation |
|---|---|---|---|
callback | string | — | Optional |
circuitBreakerOptOut | boolean | — | Optional |
enforceGetHttpRequestMethodForHealthCheck | boolean | — | Optional |
eventRetentionTime | string | — | Optional |
payload | string | Data | Required, Enum: Data \| DataRef |
redeliveriesPerSecond | integer | — | Optional |
retryableStatusCodes | integer[] | — | Optional |
type | string | Callback | Required, Enum: Callback \| ServerSentEvent |
PublisherTrigger
Appears in: SubscriberSpec
PublisherTrigger defines publisher-side filtering criteria for event delivery.
| Field | Type | Default | Validation |
|---|---|---|---|
responseFilter | ResponseFilter | — | Optional |
selectionFilter | SelectionFilter | — | Optional |
ResponseFilter
Appears in: PublisherTrigger
ResponseFilter controls payload shaping (which fields to return).
| Field | Type | Default | Validation |
|---|---|---|---|
mode | string | Include | Optional, Enum: Include \| Exclude |
paths | string[] | — | Optional |
SelectionFilter
Appears in: PublisherTrigger
SelectionFilter controls event matching (which events to deliver).
| Field | Type | Default | Validation |
|---|---|---|---|
attributes | map<string, string> | — | Optional |
expression | object | — | Optional |
SubscriberStatus
Appears in: Subscriber
SubscriberStatus defines the observed state of Subscriber.
| Field | Type | Default | Validation |
|---|---|---|---|
conditions | Condition[] | — | Optional |
subscriptionId | string | — | 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.
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.