Main features
- Deploys container images or builds from GitHub, GitLab, Bitbucket, Gitea or Gogs
- Runpacks, Nixpacks or Dockerfile builds
- Pipelines with up to four stages per app
- Review apps for pull requests, removed when they close
- Automatic redeploys on pushes to branches or tags
- PostgreSQL, Redis and other add-ons through Kubernetes operators
- More than 160 application templates
- Logs, metrics, web console and cron jobs in the UI
- Scheduled vulnerability scans of running apps
- Multi-tenancy and single sign-on with GitHub or OAuth2
What Kubero does
Kubero puts a Heroku-like layer on top of Kubernetes. Developers create a pipeline, connect a Git repository and get apps in up to four stages, such as review, test, staging and production, without writing Kubernetes manifests or Helm charts. Opening a pull request can start a review app that is built, deployed and cleaned up automatically, and pushes to a branch or tag can redeploy a stage.
Kubero is a Kubernetes operator with a web interface: it runs as two containers, the operator and the UI. Each app is described by a custom resource, so you can manage it from the UI, the Kubero CLI or plain kubectl, and keep the definitions in version control. The project’s own comparison with Heroku lists horizontal scaling, autoscaling and sleeping pods among its features.
Builds and add-ons
There are three ways to build from Git. The default, Runpacks, does not build an image at all: an init container fetches the code, another runs the build commands on a public base image, and the app runs in a third. That avoids a registry and is fast to start, but the documentation notes the code is built again for every pod, which becomes less efficient as you add replicas. Nixpacks and Dockerfile builds produce images that are pushed to a container registry. You can also deploy an image built elsewhere, for example in your existing CI.
Databases and other services are added as add-ons such as PostgreSQL and Redis, deployed through Kubernetes operators. Some add-ons ship with the Kubero operator and are meant to get you started rather than for high availability; others need their own operator. The README says the Bitnami-based add-ons are deprecated and will be removed. There are also more than 160 one-click templates for applications such as WordPress and Grafana.
Self-hosting Kubero
You need a Kubernetes cluster and kubectl. The Kubero CLI can create a cluster for you on GKE, Scaleway, DigitalOcean or Linode, or a local Kind cluster, and then installs the components Kubero depends on: the Operator Lifecycle Manager, an ingress controller, metrics and cert-manager. Guides also cover MicroK8s, Minikube and Colima, and any other cluster can be used.
The documentation states that app data lives in the Kubernetes API. The server code also contains a Prisma schema backed by SQLite, so check the installation guide for what needs persistent storage in your setup.
Hosted version
None. The project offers a public demo instance, but no hosted service.
Limitations
Kubero is simple compared with raw Kubernetes, but you still have to run a Kubernetes cluster, which is a bigger commitment than a single server with Docker. The built-in add-ons are not high-availability ready, and the project’s own comparison table does not list database backups as a feature, so plan backups yourself. The default Runpacks strategy is not the best choice for apps with many replicas.
Who it suits
Kubero suits teams that already use Kubernetes, or plan to, and want developers to deploy from Git with review apps and staging pipelines instead of editing manifests. If you only have one or two servers, Coolify, Dokploy or Dokku are less to operate; Canine and Epinio are other Kubernetes-based options.
Technical details
Self-hosting needs
- Kubernetes
Built with
- TypeScript
- NestJS
- Vue.js
- Go
GitHub topics
- ci-cd
- cloud
- coolify
- developer-tools
- dokku
- gitops
- hacktoberfest
- heroku
- hosting
- infrastructure
- internal-developer-platform
- kubernetes
- netlify
- nodejs
Reviewed by the OpenSourcePicks editors from the project's repository and documentation. Something out of date? Tell us.