Skip to main content

Deploy Your Rails App the Easy Way

Kuby is a convention-over-configuration approach to deploying Rails apps. It makes the power of Docker and Kubernetes accessible to the average Rails developer without requiring a devops black belt.

Puts You on the Cutting Edge

Kuby brings the power of Docker and Kubernetes to Rails developers. Easily leverage the plethora of infrastructure tools in the Kubernetes ecosystem in your app.

Compatible with Cloud Providers

Kuby is compatible with all your favorite cloud providers, including DigitalOcean, Linode, AWS EKS, and Azure. Switch between cloud providers with a single line of code.

Open-Source

Kuby is 100% open-source and MIT licensed. All contributions welcome!Gem

Kuby.define('my-app') do
environment(:production) do
docker do
credentials do
username ENV['DOCKER_USERNAME']
password ENV['DOCKER_PASSWORD']
email ENV['DOCKER_EMAIL']
end

image_url 'registry.gitlab.com/me/my-app'
end

kubernetes do
provider :digitalocean do
access_token ENV['DIGITALOCEAN_ACCESS_TOKEN']
cluster_id 'my-cluster-id'
end

add_plugin :rails_app do
hostname 'mywebsite.com'
end
end
end
end

Minimal Configuration

This is all you need to deploy your Rails app to your favorite cloud provider. Kuby's convention-over-configuration approach means it uses smart defaults to deploy your app in a standard way. There isn't any complicated documentation to read, and aside from Docker, no additional tools to install.

Powerful Plugin System

Kuby features a plugin system that can make adding features like background jobs really easy. For example, add Sidekiq integration with a single add_plugin :sidekiq statement. Kuby comes with a bunch of plugins out-of-the-box, with others installable as ruby gems.

Database Support

Kuby automatically stands up a CockroachDB instance for your app, a cloud-native, Postgres-compatible database engine.

Deploy with a Single Command

Deployment can be done easily by running bundle exec kuby -e production deploy. Running this command will deploy the most recently created Docker image for your app to your Kubernetes cluster.

The kuby executable comes with a number of useful commands for administering your Kubernetes cluster. It's essentially a bunch of convenient sugar on top of kubectl, Kubernetes' command-line interface. Know your way around kubectl? No problem. kuby can run arbitrary kubectl commands too.

Deploy animation
Let's Encrypt logo

Automated TLS Certificates

Kuby uses Let's Encrypt to automatically generate and install TLS certificates for your Rails app. Certificates are free and automatically rotated, so you can be sure your app stays secure.

TLS certificate integration is a good example of a Kuby plugin. The cert-manager plugin leverages the Kubernetes native cert-manager operator and makes it available inside your cluster with no additional configuration.

Static Asset Server

Kuby automatically stands up a separate server for your static assets, freeing up your Rails app to serve requests. Kuby uses Nginx, a popular webserver, that's fast and efficient.

Asset compilation and static asset server setup happens transparently during the Docker build and Kubernetes deploy without any additional configuration.

Rails 7 Ready

Kuby supports all the ways Rails 7 offers for handling static assets, including ES modules, import maps, and of course Sprockets and Webpacker.

Static assets

Have some spare time?

Kuby is under active development. We need Rails developers to try it out and tell us what breaks. Give it a spin and file an issue!