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.
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.
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.
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!