Skip to content

Configuration reference

Every deployment is configured from a single form in your dashboard, with different fields depending on the resource type. This page is the exhaustive field reference. For the conceptual overview, see Deployments.

Every field is editable after creation from the deployment’s Settings tab. Saving triggers a rolling update.

FieldTypeDefaultRules
NametextnoneLowercase letters, numbers, and dashes; must start with a letter; up to 63 characters. Unique within the cluster + environment pair. Required.
Clusterselectshared Starter clusterAny active cluster in your organization. Functions attach to an AWS account and region instead of a cluster.
EnvironmentselectnoneAn environment like Development or Production, or none. Pick an existing one or create it inline.

Web, worker, and job deployments run a container image. You give Ownkube one of:

FieldTypeDefaultNotes
RepositoryGitHub repo pickernonePicked from your connected GitHub App install.
Branchtextrepo default (e.g. main)The branch to build from.
Dockerfile pathselect./DockerfileChosen from the Dockerfiles Ownkube auto-detects in the repo.

Ownkube builds the image, pushes it to your ECR, and can open a pull request that adds a build-and-push workflow so every push ships a new image.

Web and worker deployments share the same fields. The difference is intent: a web service is meant to be reached over HTTP (usually with a public hostname), a worker runs continuously in the background (queue consumers, processors, scheduled background tasks) and normally stays private.

FieldTypeDefaultRange
Portnumbernone1 to 65535. Required. The port your container listens on.
Replicasnumber10 to 20. 0 pauses the deployment without deleting it. Ignored when autoscaling is on.
FieldTypeDefaultNotes
Make this deployment publictoggleoffAllocates a generated *.ownkube.app hostname with automatic TLS. Workers can opt in but usually stay private.
WAF and DDoS protectiontoggleonOnly shown when public is on. When on, traffic is proxied for edge protection; when off, DNS points straight at the load balancer.

To serve from a hostname you own, see Map a custom domain.

Request and limit CPU and memory separately. CPU is set in millicores (m, where 1000m = 1 vCPU); memory in mebibytes (Mi).

FieldTypeDefault
Requests, CPUquantity100m
Requests, Memoryquantity128Mi
Limits, CPUquantity500m
Limits, Memoryquantity512Mi

Only persisted when enabled. See Autoscaling for the full behavior.

FieldTypeDefaultRange
Enable autoscalingtoggleoffn/a
Min replicasnumber11 to 100, and at most Max replicas
Max replicasnumber31 to 100, and at least Min replicas
Target CPU utilizationnumber801 to 100 (% of the CPU request)
Target memory utilizationnumber801 to 100 (% of the memory request)

Three independent probes, each off by default. When enabled, each takes the same fields.

FieldTypeDefaultRange
Pathtext/health (liveness), /ready (readiness, startup)non-empty
Periodseconds101 to 300
Timeoutseconds51 to 60
Failure thresholdcount31 to 30
Initial delayseconds00 to 300
  • Startup gates how long a container has to boot before it’s considered dead.
  • Liveness restarts the container if it fails.
  • Readiness holds traffic until it passes.

Most web apps only need a readiness probe on /health or /ready.

Shown only when the deployment is public. Protection is enforced on Starter (K3s) clusters today; Production (EKS) parity is on the roadmap.

FieldTypeDefaultNotes
Require a passwordtoggleoffHTTP basic auth. Set a Username (no spaces or colons) and Password.
Require Google sign-intoggleoffRestrict access to an allowlist of domains or emails. Mutually exclusive with password. Roadmap: this option is visible but not yet enabled.

Jobs share Source, Resources, and Environment variables with web deployments (same fields, same defaults). They add:

FieldTypeDefaultRange
Commandlistimage entrypointup to 64 entries
Argumentslistimage defaultup to 64 entries
FieldTypeDefaultNotes
ActivetoggleonWhen off, the schedule is suspended.
Cron expressiontextnoneStandard 5-field cron (or an @macro).
Overlapping runsselectForbidAllow, Forbid (skip if still running), or Replace.
Time zonetextcluster default (UTC)Optional IANA time zone (e.g. America/New_York).
Start deadlinesecondsnone0 to 86400. How late a run may start before it’s skipped.
Keep successful runscountnone0 to 100 finished runs retained for history.
Keep failed runscountnone0 to 100 failed runs retained.
FieldTypeDefaultRange
On failureselectNeverNever (leave the container for inspection) or OnFailure (retry in place).
Retry limitnumbernone0 to 20
Run timeoutsecondsnone1 to 86400
Clean up aftersecondsnone0 to 604800 (delete the finished run after this long)
Parallel tasksnumber11 to 20
Completionsnumber11 to 20

A managed PostgreSQL deployment. Databases have no environment variables, port, replicas, autoscaling, health probes, or access-protection fields; connection details are injected into the apps you attach. See Databases for engines, backups, and connection strings.

FieldTypeDefaultNotes
Versionselect18PostgreSQL 17 or 18. Set at creation.
Storageselect10Gi1, 5, 10, 20, 50, or 100 GiB. Can grow later, never shrink.
Instance countnumber21 to 10 for high availability on Production. Always 1 on a Starter (K3s) cluster.
Public accesstoggleoffAllocates a stable public hostname with its own TLS certificate. Available on Starter clusters; keep it off unless you need it.
Database nametextderived from the deployment nameA valid PostgreSQL identifier (lowercase, underscores). Set at creation.
Owner roletextderived from the deployment nameThe owning database role. Set at creation.

High availability, connection pooling, encryption, and automated backups are configured for you based on the cluster shape. They aren’t manual fields.

FieldTypeDefaultNotes
Runtimeselectnodejs22.xNode.js, Python, Java, .NET, Ruby, or a custom runtime for Go and Rust. Set at the first build.
Handlertextseeded per runtimeThe entry point in your code (e.g. index.handler).
Architectureselectarm64arm64 (cheaper) or x86_64.
Memoryselect256 MB128 MB up to 10240 MB.
Timeoutseconds301 to 900.
Log retentiondays141 to 3653.
HTTP triggertoggle + selectonA public invoke URL. Access is none (open) or iam (signed AWS callers only).
Schedule triggertextoffA rate(...) or cron(...) expression. At least one trigger is required.
  • Rolling updates. Every saved change rolls out gradually: new containers start and pass health checks before old ones drain. There is no separate deploy button.
  • Secrets. A variable marked Secret is stored securely, masked in the UI, and redacted from logs and change history. Saving a secret with a blank value keeps the existing stored value.
  • Revisions. Every change is recorded as a revision with a field-level diff, so you can see what changed and roll back.
  • App platform version. Web, worker, and job deployments run on the app platform version, the runtime Ownkube ships to power them. Upgrades are forward-only; an Upgrade control appears on the Overview tab when a newer version is available. See Deployments.