Skip to content

App field reference

Complete list of every App spec field. Required fields are marked. “Applies to” notes workload-type scoping where relevant; most fields apply to all types. For task-oriented usage see The App claim and Data services.

Provenance. The App XRD and composition are not in this repository — they live in Smana/crossplane-configuration, which this repo pins as a Configuration package (infrastructure/base/crossplane/configuration/configuration-packages.yaml, currently ghcr.io/smana/crossplane-configuration-aws:v0.1.0). This table was reconciled by hand against that repository’s apis/app/definition.yaml (the CRD schema — types, enums, CEL rules) and apis/app/kcl/main.k (composition defaults that never appear in the schema, such as resource requests/limits or the gateway/route fallback names) at the commit tagged v0.1.0.

To regenerate: check out Smana/crossplane-configuration at the tag currently pinned above, and read apis/app/definition.yaml + apis/app/kcl/main.k in that checkout — there is no automated extractor, so this page drifts from the schema the same way any hand-maintained reference does. Re-verify after every pin bump.

Top-level

FieldTypeDefaultApplies toDescription
imageobject— (required)allContainer image (see below).
typeenum web|worker|cronweballWorkload shape.
schedulestring (cron)cron (required for cron)CronJob schedule; only valid when type: cron.
cronobjectcronCronJob tuning (see below).
command[]stringallEntrypoint override for the main container.
args[]stringallArguments to the main container entrypoint.
imagePullSecrets[]stringallNames of image pull Secrets in the namespace.
terminationGracePeriodSecondsinteger (≥0)allGrace period before force-kill.
autoscalingobjectweb, workerHPA config (see below). Forbidden on cron.
replicasinteger (≥1)1web, workerReplica count when autoscaling is off; CronJob has no replica concept.
deploymentStrategyenum RollingUpdate|RecreateRollingUpdate (or Recreate if persistence.enabled)web, workerUpdate strategy; explicit value always wins. Meaningless for cron (no strategy on a CronJob).
pdbobjectweb, workerPodDisruptionBudget (see below). Forbidden on cron.
persistenceobjectallPVC-backed storage (see below).
resourcesobjectrequests 100m/128Mi, limits 200m/256MiallRequests/limits for the main container.
onDemandbooleanfalseallSchedule only on on-demand instances.
runAsNonRootbooleantrueallRun pod as non-root (UID/fsGroup 1001).
spreadAcrossZonesbooleantrueallTopology spread across zones.
antiAffinityPresetenum soft|hardsoftallPod anti-affinity strength.
automountServiceAccountTokenbooleanfalseallAuto-mount the SA token.
securityContextobjectsecure defaultsallContainer/pod security overrides (see below).
env[]objectallEnvironment variables (value / valueFrom).
envFrom[]objectallImport env from ConfigMap/Secret, optional prefix.
initContainers[]object (max 16)allInit containers, reduced schema (see below).
sidecars[]object (max 16)allSidecar containers, reduced schema (see below).
extraVolumes[]objectallPassthrough pod volumes (combined with tmp).
extraVolumeMounts[]objectallPassthrough main-container volume mounts.
configsmapallConfig files to mount (path, content).
secretsmapallSecrets Manager paths (path, keys).
healthProbesobjectweb: HTTP defaultsallliveness/readiness/startup (see below).
serviceobjectport 8080web (Service); port also used as probe fallbackService config (see below).
gatewayobjectweb onlyDedicated Gateway (see below).
routeobjectweb onlyHTTPRoute config (see below).
networkPoliciesobjectdisabledallCilium policies (see below).
kvStoreobjectdisabledallValkey (see below).
sqlInstanceobjectdisabledallPostgreSQL (see below).
s3BucketobjectdisabledallS3 + Pod Identity (see below).
externalSecrets[]objectallAWS Secrets Manager sync (see below).
observabilityobjectdisabledallTraces/metrics/alerting (see below).
Correction from the old field reference: persistence was previously marked “Applies to: web, worker”. That’s wrong — the Deployment and the CronJob share the same pod-builder (_podSpec, apis/app/kcl/main.k:465, reused by the CronJob’s job template at main.k:630), and the persistence volume/mount are added to that shared spec unconditionally (main.k:357-366). A cron App can mount a PVC. deploymentStrategy still doesn’t apply to cron — that field only ever sets Deployment.spec.strategy, which a CronJob doesn’t have.

image

FieldTypeDefaultDescription
repositorystring— (required)Container image repository.
tagstringlatestImage tag.
pullPolicyenum Always|Never|IfNotPresentIfNotPresentImage pull policy.

cron (type: cron)

FieldTypeDefaultDescription
concurrencyPolicyenum Allow|Forbid|ReplaceForbidConcurrent execution handling.
backoffLimitinteger (≥0)3Retries before a job fails.
activeDeadlineSecondsinteger (≥1)Hard time cap for the job.
restartPolicyenum OnFailure|NeverOnFailureJob pod restart policy.
successfulJobsHistoryLimitinteger3Successful jobs to retain.
failedJobsHistoryLimitinteger3Failed jobs to retain.

autoscaling

FieldTypeDefaultDescription
enabledbooleanfalseEnable the HPA.
minReplicasinteger (≥1)1Minimum replicas (must be ≤ maxReplicas).
maxReplicasinteger (≥1)5Maximum replicas.
targetCPUUtilizationPercentageinteger 1–10070Target CPU utilization.

pdb

FieldTypeDefaultDescription
enabledbooleanfalseEnable the PDB.
minAvailableinteger (≥1)1Minimum available pods. Not a schema default — applied by the composition when unset (main.k:127,829).
unhealthyPodEvictionPolicyenum IfHealthyBudget|AlwaysAllowAlwaysAllowUnhealthy pod eviction policy.

persistence

FieldTypeDefaultDescription
enabledbooleanfalseRender a PVC.
sizestring (e.g. 10Gi)— (required when enabled)Requested storage size.
mountPathstring— (required when enabled)Mount path on the main container.
storageClassstringcluster defaultStorageClass name.
accessModes[]enum ReadWriteOnce|ReadWriteMany|ReadOnlyMany[ReadWriteOnce]PVC access modes. RWO forces Recreate on a Deployment and forbids autoscaling.

resources

FieldTypeDefaultDescription
requests.cpustring100mCPU request.
requests.memorystring128MiMemory request.
limits.cpustring200mCPU limit.
limits.memorystring256MiMemory limit.

securityContext

FieldTypeDefaultDescription
allowPrivilegeEscalationbooleanfalseAllow privilege escalation.
readOnlyRootFilesystembooleantrueRead-only root filesystem.
runAsNonRootbooleantrueRequire non-root.
capabilities.drop[]string[ALL]Capabilities to drop.
enableWritableTmpbooleantrueProvide a writable /tmp emptyDir.

initContainers[] / sidecars[]

Reduced container schema. ports is sidecars only. Names must be unique; the app’s own name is reserved (rejected by an admission CEL rule on the XRD, not the composition).

FieldTypeRequiredDescription
namestringyesContainer name (unique; not the app’s own name).
imagestringyesImage in plain repo:tag form.
command[]stringnoEntrypoint override.
args[]stringnoArguments.
env[]objectnoEnvironment variables (same shape as top-level env).
envFrom[]objectnoImport env from ConfigMap/Secret.
resourcesobjectnoRequests/limits.
volumeMounts[]objectnoPassthrough volume mounts.
securityContextobjectnoOverride for allowPrivilegeEscalation, readOnlyRootFilesystem, runAsNonRoot, capabilities.drop (defaults inherited).
ports[]object (name, containerPort, protocol=TCP)no (sidecars only)Ports exposed by the sidecar (not added to the Service automatically).

healthProbes

Blocks: liveness, readiness, startup. Each block:

FieldTypeDefaultDescription
typeenum http|tcp|grpc|exechttpProbe type.
pathstring/healthz (liveness), /readyz (readiness)HTTP path (http type).
portinteger 1–65535falls back to the http service port, else service.port/8080Probe port.
command[]stringCommand for exec type.
initialDelaySecondsintegerliveness 30, readiness 5, startup 0Initial delay.
periodSecondsintegerliveness 10, readiness 5, startup 10Probe period.
failureThresholdintegerliveness/readiness 3, startup 30Failures before failed.

service

FieldTypeDefaultDescription
portinteger 1–655358080Main container/Service port (named http).
extraPorts[][]objectExtra Service ports: name, port, targetPort (defaults to port), protocol (TCP default).

gateway (web only)

FieldTypeDefaultDescription
enabledbooleanfalseCreate a dedicated Gateway.
gatewayClassNamestringciliumGateway class. Composition default (main.k:857) — not a schema default.
namestring<app>-gatewayGateway name. Composition default (main.k:842).
namespacestringapp namespaceGateway namespace. Composition default.
listeners[][]objectone HTTP:80 listenername, port, protocol (HTTP|HTTPS), hostname. Composition default when omitted (main.k:869-878).

route (web only)

FieldTypeDefaultDescription
enabledbooleanfalseCreate an HTTPRoute.
internetFacingbooleanfalsefalse.priv.cloud.ogenki.io (private), true.cloud.ogenki.io (public).
hostnamestring— (required when enabled)Hostname prefix (domain auto-added).
rules[][]objectroute all to service.port at /backendPort (required), pathPrefix (default /). Composition default when omitted (main.k:923-927).

networkPolicies

FieldTypeDefaultDescription
enabledbooleanfalseEnable Cilium policies (default-deny when on).
ingress[][]objectfromEndpoints, fromEntities, toPorts.
egress[][]objecttoEndpoints, toEntities, toCIDR, toFQDNs, toPorts.

kvStore

FieldTypeDefaultDescription
enabledbooleanfalseEnable the KV store.
sizeenum small|medium|largesmallStore size.
typeenum valkey|redisvalkeyAccepted but ignored. The backend is Valkey-only (SPEC-012 CL-5, main.k:1009); the field is kept for API compatibility.

sqlInstance

FieldTypeDefaultDescription
enabledbooleanfalseEnable the PostgreSQL instance.
sizeenum small|medium|largesmallInstance size.
storageSizestring (e.g. 20Gi)Storage size.
instancesinteger3Number of instances (HA).
primaryUpdateStrategystringunsupervisedPrimary update strategy.
createSuperuserbooleanfalseCreate a superuser.
performanceInsightsobjectdisabledpg_stat_statements / auto_explain tuning (see below).
databases[][]objectname (required), owner (required).
roles[][]objectname (required), superuser (required), comment, inRoles.
atlasSchemaobjectMigration Git url, ref, path.
postgresqlobjectparameters (map), pg_hba ([]string).
backupobjectschedule, retentionPolicy (default 15d), bucketName (required if schedule set).

sqlInstance.performanceInsights

FieldTypeDefaultDescription
enabledbooleanfalseEnable pg_stat_statements.
explain.sampleRatenumber 0.0–1.00.2Fraction of slow queries auto_explain captures.
explain.minDurationinteger (ms, ≥-1)1000Minimum query duration to trigger auto_explain; 0 logs everything, -1 disables it.
logStatementenum none|ddl|mod|allnoneWhich SQL statements Postgres logs via log_statement.

s3Bucket

FieldTypeDefaultDescription
enabledbooleanfalseEnable the bucket.
providerConfigRefobject{name: default}name (required), namespace (required). Name falls back to default when unset (main.k:1097).
regionstringenv regionAWS region; falls back to the cluster’s configured region (main.k:1101).
permissionsenum readwrite|readonly|customreadwriteAccess level.
customPolicystringIAM policy JSON (when custom).
versioningbooleanfalseEnable versioning.
retentionDaysinteger 1–365Object retention days.

externalSecrets[]

FieldTypeDefaultDescription
namestring— (required)Kubernetes Secret name to create.
remoteRefstring— (required)Path in AWS Secrets Manager.
refreshIntervalstring (e.g. 1h)1hSync interval.

observability

FieldTypeDefaultDescription
traces.enabledbooleanfalseEnable OTLP tracing.
traces.endpointstringVictoriaTraces in observabilityOTLP traces endpoint; falls back to the in-cluster VictoriaTraces service (main.k:130,159).
traces.samplingRatenumber 0.0–1.01.0Trace sampling rate.
metrics.enabledbooleanfalseEnable metrics (VMServiceScrape for web).
metrics.endpointstringvmagent in observabilityOTLP metrics endpoint; falls back to the in-cluster vmsingle service (main.k:131,178).
metrics.pathstring/metricsScrape path.
metrics.intervalstring30sScrape interval.
alertingRules.groups[][]objectVMRule groups (name (required), interval, rules (required)).