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'

        database do
          user ENV[:DB_USER]
          password ENV[:DB_PASSWORD]
        end
      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 database for your app based on the contents of your database.yml. Just provide the database credentials and Kuby will do the rest, including automatically connecting to the right host.

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.

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!