Skip to main content

Application Domain

The Application domain provides a Kubernetes-native abstraction for managing applications within the Control Plane. An Application logically groups together all the API exposures, subscriptions, and event configurations for a single service.

Custom Resources

Application

Application is the Schema for the applications API

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

ApplicationSpec

Appears in: Application

ApplicationSpec defines the desired state of Application

FieldTypeDefaultValidation
externalIdsExternalId[]Optional, maxItems: 16
failoverZonesFailoverZone[]Optional
needsClientbooleantrueRequired
needsConsumerbooleantrueRequired
rotatedSecretstringOptional
secretstringRequired, minLength: 1
securitySecurityOptional
teamstringRequired, minLength: 1, maxLength: 64
teamEmailstringRequired, Format: email, minLength: 1, maxLength: 64
zoneFailoverZoneRequired

ExternalId

Appears in: ApplicationSpec

ExternalIds carries business identifiers (e.g. PSI, ICTO) propagated from the owning Rover. Each entry is tagged with a scheme. Format and presence are validated per-zone via the zone's ExternalIdPolicies.

FieldTypeDefaultValidation
idstringRequired, minLength: 1, maxLength: 128
schemestringRequired, minLength: 1, maxLength: 32, pattern: ^[a-z][a-z0-9]*$

FailoverZone

Appears in: ApplicationSpec, ApplicationStatus, SentNotification

FailoverZones are the zones which can be used by the application in case of a failure in the primary zone

FieldTypeDefaultValidation
namestringRequired
namespacestringRequired
uidstringOptional

Security

Appears in: ApplicationSpec

Security defines the security configuration for the application

FieldTypeDefaultValidation
ipRestrictionsIpRestrictionsOptional

IpRestrictions

Appears in: Security

FieldTypeDefaultValidation
allowstring[]Optional
denystring[]Optional

ApplicationStatus

Appears in: Application

ApplicationStatus defines the observed state of Application

FieldTypeDefaultValidation
clientIdstringRequired
clientSecretstringRequired
clientsFailoverZone[]Optional
conditionsCondition[]Optional
consumersFailoverZone[]Optional
currentExpiresAtstringOptional, Format: date-time
rotatedClientSecretstringOptional
rotatedExpiresAtstringOptional, Format: date-time
sentNotificationsSentNotification[]Optional

Condition

Appears in: ApplicationStatus

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])$

SentNotification

Appears in: ApplicationStatus

SentNotifications tracks all reminder notifications that have been sent for this application's secret expiry, keyed by threshold. This is used to prevent duplicate notifications and to track repeat intervals.

FieldTypeDefaultValidation
refFailoverZoneRequired
sentAtstringRequired, Format: date-time
thresholdstringRequired

Provisioning

When an Application is created with needsClient: true and needsConsumer: true, the operator:

  1. Creates an Identity Client with the client ID {team}--{application-name}
  2. Creates a Gateway Consumer so the application can be identified at the API gateway

Secret Rotation

When graceful secret rotation is enabled for the zone, the Application operator manages the rotation lifecycle:

  1. Detects that a rotated (old) secret exists after a rotation is triggered
  2. Tracks the SecretRotation condition through InProgressSuccess
  3. Sends notification emails at configured thresholds before expiry and upon completion
  4. Manages reminder state to avoid duplicate notifications

See Graceful Secret Rotation (User Guide) and Secret Rotation (Admin Guide) for details.

Domain Interactions

  • Rover domain — Rover files create Application resources as part of the reconciliation process.
  • Identity domain — The Application operator creates identity clients.
  • Gateway domain — The Application operator creates gateway consumers.
  • Secret Manager — Handles credential storage for application clients.