DEV Community

Cover image for Cuber: a Capistrano alternative for deploying Rails applications on Kubernetes
Marco Colli
Marco Colli

Posted on

Cuber: a Capistrano alternative for deploying Rails applications on Kubernetes

Cuber is an automation and deployment tool written in Ruby: it is similar to Capistrano, but it deploys on Kubernetes, so you don’t need to configure all the servers and it’s more scalable.

Basically you can deploy your application by defining a Cuberfile (a few lines of Ruby code, like a Capfile for Capistrano) and then typing cuber deploy in your terminal.

Cuber has been designed for monolithic Rails applications, but it can actually deploy any application, in any language and framework.

It has all the features needed to run an application in production.

Here’s an example Cuberfile that you can use to deploy any Rails app on Kubernetes:

app 'myapp'
repo '.'
buildpacks 'heroku/buildpacks:20'
image 'username/myapp'
dockerconfig 'dockerconfig.json'
kubeconfig 'kubeconfig.yml'
migrate 'rails db:migrate', check: 'rake db:abort_if_pending_migrations'
proc :web, 'bundle exec puma', scale: 3
proc :worker, 'bundle exec sidekiq', scale: 2
cron :mytask, '@daily', 'rake mytask'
env 'RAILS_ENV', 'production'
env 'RAILS_LOG_TO_STDOUT', 'enabled'
env 'RAILS_SERVE_STATIC_FILES', 'enabled'
env 'RAILS_MASTER_KEY', File.read('config/credentials/production.key').strip, secret: true
Enter fullscreen mode Exit fullscreen mode

That's it. Save that file in a directory (usually your application root), type cuber deploy and let the magic happen.

There is also lot of information and technical documentation on the project website.

Finally note that Kubernetes can be 80% cheaper than Heroku or other PaaS, because it is bare infrastructure. Kubernetes is also offered by most cloud providers, and thus you avoid lock-in with a single service provider.

Latest comments (0)