Skip to content

v0.18.0

  - Call `app_root <path>` inside the `docker` section of your Kuby config file.
  - Necessary for use-cases like apps living inside gem repos, etc.
* Add `:app_phase` to set of Docker build phases.
  - Allows easily setting environment variables.
  - Sets the working directory to the app root if the app's root directory has been set via the `app_root` feature described above.
* Upgrade to Nginx ingress controller v1.1.1.
  - Necessary to support Kind, the local Kubernetes cluster tool (see the kuby-kind gem).
* Run `bundle lock` before installing gem dependencies.
* Fix bug causing errors when certain container registries return a 401 if the repo doesn't exist yet.
  - I'm looking at you, Azure.
* Don't fail to deploy if the app doesn't use Active Record.
* Fix git merge issue causing no output when running `kuby dockerfiles`.
* Upgrade integration tests to Kubernetes 1.23.
  - This upgrade is incompatible with the version of KubeDB we're currently using.
  - KubeDB has been replaced with the CockroachDB operator. Kuby will no longer support KubeDB after this release.
* Add ability to deploy resources into more than one namespace.
* Remove support for MySQL and Postgres in favor of CockroachDB.
  - KubeDB has moved to an incompatible licensing model and Kuby can no longer use it.
  - CockroachDB is now the only managed database offering (aside from SQLite) for the following reasons:
    - CRDB is cloud-native, i.e. is designed to be run on cloud platforms like Kubernetes.
    - CRDB can be easily upgraded in-place while both MySQL and Postgres demand a much more manual, error-prone upgrade process that proved very difficult to automate.
    - CRDB is Postgres wire-compatible, meaning those who use Postgres (and I believe that accounts for the majority of Rails devs) will hardly be impacted by this change at all. While CRDB is not feature-by-feature compatible with Postgres, the differences are unlikely to be important to the average Rails app.
* Use SSL certificates instead of usernames and passwords for database authentication.
  - This is the preferred way to communicate with instances of CockroachDB (also supported by Postgres).
  - Kuby uses cert-manager to establish a custom PKI for database interactions.
  - The Rails generator now entirely omits the database configuration section, making config simpler.
* Avoid failing on first deploy.
  - Previous versions of Kuby did not wait for the database to spin up before attempting to start the Rails app, which resulted in what appeared to be a failed deploy. Kubernetes would eventually sort everything out, but it made for a less than ideal developer experience.
  - The `create_unless_exists` rake task has been superceded by the `bootstrap` rake task, which is run in an init container whenever the app boots. It is responsible for ensuring the database server is reachable and creating any users defined in the Kuby config.
* Add the ability for plugins to define their own set of rake tasks.
  - These are runnable via the CLI.
* Add the ability for plugins to define a `#remove` routine, which is meant to do the opposite of whatever `#setup` does.
  - It is now also possible to run a plugin's remove routine from the CLI.
* Add the ability for plugins to depend on things like Kubernetes and Helm.
  - Uses semantic versioning and compares required versions to current versions.
* Avoid using the `which` command to find executables on the current PATH.
  - `which` has been deprecated in at least one Linux distro (Debian), perhaps others.
  - Use `Kuby::Utils.which` instead.
* Support Rails 7.
  - Don't run `yarn install` if there's no package.json.
* Automatically cache Docker builds from the latest image, should it exist.
Assets 2