Kubernetes-native continuous delivery
End-to-end delivery, without the pipeline.
Schedule windows, manual approvals, canaries, environment promotion, alert checks, smoke tests. Everyone can describe the pipeline they want; no tool has ever made it easy to build. Kuberik does, one piece at a time.
How it works
A reactive loop with five clear phases.
Each phase is a Kubernetes resource. Two are yours to compose; three are built in. Nothing else is hidden behind the curtain.
phase 01
release
release
guard
gates
update
health
01
release
Which versions are available?
Flux ImagePolicyOCI pullcosign-verified
02
guard
built-in · no config
Is this environment safe to deploy to?
healthynot pausedidleno override
03
gates
open class · you own this
Which version can we deploy right now?
schedulemanualafter(env)custom CRD
04
update
Roll out the new version.
Flux KustomizationOpenKruisecanary 0→100%
05
health
open class · you own this
Did it deploy successfully?
kstatusmetricsalertssmoke testcustom CRD
composing environments
Each environment is a loop. Compose them with gates.
No central pipeline orchestrates anything. Each environment runs its own loop and opens its gate when conditions are met — including after(env).
dev
on commit
after(env)
staging
after dev
after(env)
production
after staging + schedule
The spec
This is everything you write.
Three Flux resources, one Kuberik resource, one $VERSION placeholder.
fluxapiVersion: image.toolkit.fluxcd.io/v1beta2 kind: ImageRepository metadata: name: my-app spec: image: ghcr.io/me/my-app --- kind: ImagePolicy spec: policy: semver: range: ">=0.1.0"
kuberikapiVersion: kuberik.com/v1alpha1 kind: Rollout metadata: name: my-app spec: releasesImagePolicy: name: my-app bakeDuration: 10m
fluxapiVersion: kustomize.toolkit.fluxcd.io/v1 kind: Kustomization metadata: name: my-app annotations: rollout.kuberik.com/ substitute.VERSION.from: my-app spec: sourceRef: kind: GitRepository name: my-app
yoursapiVersion: apps/v1 kind: Deployment metadata: { name: my-app } spec: template: spec: containers: - name: app image: ghcr.io/me/my-app:${VERSION}
One dashboard
Every rollout. Every cluster.
No hub cluster. No stored cross-cluster credentials. RBAC on your own OIDC.

Try itStop writing rollout glue.
Stop writing rollout glue.
Declare gates and health. Watch the loop run.
$ helm repo add kuberik https://charts.kuberik.com $ helm install kuberik kuberik/rollout-controller