Cuber

Cuber

Deploy your apps on Kubernetes easily

Get the simplicity of a platform (PaaS) at the cost of infrastructure (IaaS).

Cuber CLI

Deploy with 1 command

Cuber is an automation tool that makes it easy to publish your apps on Kubernetes.

$ cuber deploy
Cuberfile

Configure with 1 file

Your app configuration can be described with a few lines of code.

app 'my-app'
repo 'https://github.com/username/my-app.git'
buildpacks 'heroku/buildpacks:20'
image 'username/my-app'
kubeconfig 'path/to/kubeconfig.yml'
proc :web, 'web server command'
Beautiful syntax

Compact, flexible configuration

Easily define processes, env variables, secrets, cron jobs, migrations and more.

# Processes (like a Procfile)
proc :web, 'rails server'
proc :worker, 'bundle exec sidekiq', scale: 10

# Env variables and secrets
env 'RAILS_ENV', 'production'
env 'RAILS_MASTER_KEY', File.read('production.key'), secret: true

# Cron jobs
cron :mytask, '@daily', 'rake mytask'

# Migrations
migrate 'rails db:migrate'
Video

See Cuber in action

Why Cuber

Features you will love

Any cloud provider

Deploy on any Kubernetes cluster (DigitalOcean, AWS, GKE, etc.) without lock-in and with simple migrations.

Any language

Cuber is written in Ruby, but it can deploy apps in any language, including Ruby, Node.js, Python, Java, PHP, Go or any other language and framework.

Scalable and reliable

Your app runs on Kubernetes, which provides reliability, horizontal scaling and zero downtime deployments.

Solid foundations

Cuber has a small, easy-to-understand codebase built on popular open source projects, like Git, Docker, Buildpacks and Kubernetes.

It's just automation

Cuber is an automation tool installed locally or in the CI/CD pipeline: in the cluster you have only plain Kubernetes configurations and your app.

Versioning and rollbacks

Easily restore any previous release with a single command if something goes wrong.

Automatic builds

Cuber can build your app automatically with Cloud Native Buildpacks or you can provide a custom Dockerfile.

Reduce server cost

Scale the infrastructure, not costs: save up to 80% on server cost compared to a PaaS.

Reduce complexity

Stop YAML craziness, long command line options, complex sequences of commands with many pitfalls. Bring sanity to Kubernetes deployments with a simple deploy command.

Run remote commands

Easily run commands or open a shell in a separate pod that includes your app code and configuration.

Full visibility

Use a simple Cuber command to see the status and configuration of your running app or inspect Kubernetes directly.

Source available

We offer a permissive license that allows you to read and modify the source code if you want.

A layer of abstraction

Cuber has less features than Kubernetes, but it's much simpler. Kubernetes is low level, but most apps can run on a simple PaaS like Heroku, because they share the same needs... So why not try to make Kubernetes more accessible?

Infrastructure as code

Cuber uses a declarative approach: the entire app configuration is defined in a Cuberfile that you can keep in version control. This means that infrastructure is reproducible and you can move to a new cluster in minutes.

Multiple apps or clouds

You can run multiple apps in the same cluser, because every app has its own namespace. You can also run the same app in multiple clusters using multiple Cuberfiles.

Minimal

Cuber produces minimal, clean YAML, not hundreds of configs thrown in your cluster. It's more readable, more secure, and not a pain to keep it updated. The generated configuration is meaningful and can work even without Cuber.

Declarative approach for apps

While Kubernetes is made for low-level infrastructure, Cuber offers a simple, declarative approach for running apps on Kubernetes. It's fully declarative, without manual patching or separate commands that introduce pitfalls.

No state in the cluster

A deploy command should work regardless of previous cluster state, because all the configuration for a release is in the Cuberfile, not in the cluster. Like GitOps, Git is the only source of truth and configuration flows in only one direction.

No suffering for upgrades

Cuber is installed locally and you don't have additional components inside Kubernetes to keep updated. Moreover, each deploy applies a fresh configuration. You can also move to a new cluster with one command.

A flow that just works

Cuber is flow that just works, it's not a puzzle. It gets your app code from a repo, builds it using Docker or Buildpacks and applies the configuration to the Kubernetes cluster.

Made for web apps

Cuber is opinionated and made for apps. It's not general templating like kustomize or a generic CI/CD pipeline where everything is up to you.