PubSub Domain
The PubSub domain is part of the optional Event feature. It is managed by the Event and Spectre domains — 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 |
overwriteEnvironmentName | string | — | Optional |
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 or by the SpectreApplication handler in the spectre 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 or by the SpectreApplication handler in the spectre 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 or by the Listener handler in the spectre 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 or by the Listener handler in the spectre 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 — Creates PubSub resources as part of the event publishing/subscribing lifecycle:
- EventConfig → EventStore
- EventExposure → Publisher
- EventSubscription → Subscriber
- Spectre domain — Creates PubSub resources for application listeners:
- SpectreApplication → Publisher
- Listener → Subscriber
- Horizon (external) — The Subscriber controller makes REST API calls to the Horizon Configuration Backend to register and deregister subscriptions.
EventStore is created exclusively by EventConfig. Spectre reads it but does not own or modify it.
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.