Skip to main content

Connection

A typed connection to an outside system: settings here, the credentials in the secret store.

Spec​

FieldTypeRequiredDefaultDescriptionConstraints
spec.configobject (map of string)NoNon-secret settings, for example host, port, database, bucket, baseUrl.max 32
spec.ownerGroupstring (nullable)NoScope group: the Keycloak group whose members manage and use the connection.min 1, max 64; pattern ^[A-Za-z0-9][A-Za-z0-9._-]*$
spec.refreshIntervalstringNo15mHow often the synced Secret is refreshed from the store, for example 15m. Between one minute and 24 hours.pattern ^[0-9]{1,4}(m|h)$
spec.scopestringNogroupWhose credential a connection holds and who may use it. Personal connections have no resource: they live only in the secret store and never reach a pipeline.group, managed
spec.secretobject (nullable)NoThe secret fields, when this connection has any. Absent for a connection that needs no credentials (the platform's own Kafka bus, an anonymous generic endpoint). The per-type validation below still requires it for every type that authenticates.
spec.secret.keysarray of stringYesNames of the secret fields, for example user and password. They become the keys of the synced Kubernetes Secret and the environment variables CONN_<NAME>_<KEY>.min 1, max 16
spec.secret.remoteRefstring (nullable)NoPath in the secret store. Absent: derived from the scope, connections/group/<ownerGroup>/<name> or connections/managed/<name>. Set it only when the platform reads the customer's own store (spec.secrets mode external); in platform mode the controller refuses a value, because a path chosen by the author could point at another group's secret.min 1, max 512; pattern ^[A-Za-z0-9][A-Za-z0-9_./-]*$
spec.typestringYesWhat a connection reaches. The type decides which settings and secret keys are required.postgresql, mysql, sqlserver, oracle, rest-api, s3, kafka, sftp, generic
spec.usableByarray of stringNoScope managed: the groups whose platform-run work may use the connection.max 20

Status​

FieldTypeRequiredDefaultDescriptionConstraints
status.conditionsarray of objectNo[]
status.conditions[].lastTransitionTimestring (nullable)No
status.conditions[].messagestring (nullable)No
status.conditions[].observedGenerationinteger (nullable)Noformat int64
status.conditions[].reasonstring (nullable)No
status.conditions[].statusstringYes
status.conditions[].typestringYes
status.lastSyncstring (nullable)NoRFC 3339 time of the last successful sync from the store.
status.observedGenerationinteger (nullable)Noformat int64
status.readybooleanNofalseTrue when the Secret exists and holds every key in spec.secret.keys.
status.secretNamestring (nullable)No

Validation rules​

  • a group connection needs ownerGroup and no usableBy
  • a managed connection needs usableBy and no ownerGroup
  • usableBy must list group names (letters, digits, dot, underscore, dash)
  • secret.remoteRef must not contain .. or //
  • secret.keys must be unique names of letters, digits and underscore
  • config holds settings, not secrets: a name like password, secret or token belongs in secret.keys
  • a database connection needs config.host and the secret keys user and password
  • a rest-api connection needs config.baseUrl and the secret key token, or clientId and clientSecret
  • an s3 connection needs config.bucket and the secret keys accessKeyId and secretAccessKey
  • an sftp connection needs config.host and the secret keys user and password or privateKey
  • a kafka connection needs config.bootstrapServers