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
failoverZonesFailoverZone[]Optional
needsClientbooleantrueRequired
needsConsumerbooleantrueRequired
secretstringRequired, minLength: 1
securitySecurityOptional
teamstringRequired, minLength: 1, maxLength: 64
teamEmailstringRequired, Format: email, minLength: 1, maxLength: 64
zoneFailoverZoneRequired

FailoverZone

Appears in: ApplicationSpec, ApplicationStatus

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

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

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

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.