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
failoverFailover—Required
needsClientbooleantrueRequired
needsConsumerbooleantrueRequired
rotatedSecretstring—Optional
secretstring—Required, minLength: 1
securitySecurity—Optional
teamstring—Required, minLength: 1, maxLength: 64
teamEmailstring—Required, Format: email, minLength: 1, maxLength: 64
zoneZone—Required

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
idstring—Required, minLength: 1, maxLength: 128
schemestring—Required, minLength: 1, maxLength: 32, pattern: ^[a-z][a-z0-9]*$

Failover​

Appears in: ApplicationSpec

Failover defines the failover configuration for the application

FieldTypeDefaultValidation
enabledboolean—Required

Security​

Appears in: ApplicationSpec

Security defines the security configuration for the application

FieldTypeDefaultValidation
ipRestrictionsIpRestrictions—Optional

IpRestrictions​

Appears in: Security

FieldTypeDefaultValidation
allowstring[]—Optional
denystring[]—Optional

Zone​

Appears in: ApplicationSpec, ApplicationStatus, SentNotification

Zone is the primary zone for the application

FieldTypeDefaultValidation
namestring—Required
namespacestring—Required
uidstring—Optional

ApplicationStatus​

Appears in: Application

ApplicationStatus defines the observed state of Application

FieldTypeDefaultValidation
clientIdstring—Required
clientSecretstring—Required
clientsZone[]—Optional
conditionsCondition[]—Optional
consumersZone[]—Optional
currentExpiresAtstring—Optional, Format: date-time
rotatedClientSecretstring—Optional
rotatedExpiresAtstring—Optional, Format: date-time
sentNotificationsSentNotification[]—Optional
tokenUrlstring—Optional

Condition​

Appears in: ApplicationStatus

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

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
refZone—Required
sentAtstring—Required, Format: date-time
thresholdstring—Required

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 InProgress → Success
  3. Sends notification emails at configured thresholds before expiry and upon completion
  4. Manages reminder state to avoid duplicate notifications

The Application admission webhook rejects a rotation request with a Forbidden error when the Application has needsClient: false. Applications without a client have no secret to rotate. In that case, the webhook doesn't change any secrets.

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.