Release and Rollouts

Concepts

A common use case for Kubernetes applications, especially cluster add-ons, is deployment and lifecycle management of same application across multiple clusters. Tracking progress of the installation and upgrades of application versions across multiple clusters is integral for Kubernetes workload management. Promoting an application from one environment to another is another key requirement, for example, promote selected versions from development environment to test. Nirmata addresses these requirements via Release and Rollouts feature.

With the Release and Rollouts feature, Catalog applications now support progressive delivery, release channels, and rollouts across multiple application delivery models. A Catalog application can track upstream Git repositories with YAML, Kustomize, and unarchived Helm charts, or upstream Helm registries. In addition, you can directly model YAML applications and also import YAMLs. Regardless of how applications artifacts are managed, Nirmata enables consistent and scalable delivery of those applications across fleets of clusters.

Both Git and Helm support versioning. The user can map application versions to a Release Channel (for example, test and prod) to make that version available to all environments that subscribe to the channel.

application-dependency

Channels

Channels provide a way of organizing releases. Nirmata has two default channels, “Rapid” and “Stable”. Users can create / update/ delete channels (in future releases).

A channel can be configured with a label selector to select environments. When an environment is created it “subscribes” to a channel.

Each channel has a “Rollout Strategy”.

By default, the Rapid channel will be set to allow concurrent deployments to all environments (to match the current implementation), while a specific version of rapid channel can be promoted to stable channel.

Releases

Users can create a Release and pick an Application version and publish the release to a Channel. Nirmata tracks and displays the rollout of the application version to all environments for that channel.

Rollouts

A rollout is the process/workflow that actually updates each environment based on the Rollout strategy configuration.

Versions

A version is an instance of catalog application that includes a state of configuration of the application. Once changes are made to the catalog application, a new version can be created. A version can be chosen during application deployment. As changes are made to the catalog application, new versions can be created. If a version does not exist, a new version can be created during deployment. As new versions are created for an application, the rapid channel will create rollouts for the environments and clusters subscribed to the channel.

Application Deployment Workflow

With Release and Rollouts, the application workflow looks as described below:

  1. Catalog application - Each application now has a release and a version tab. The status of release across channels and version can be found in these tabs. Version tab shows the current version of running instance of the catalog application. There is also an option to create a version for the application by clicking “create version” button.

application-releases

  1. Application deployment - when deploying an application, the release and the version can be chosen along with clusters and environments to deploy the application. This sets up all environments and clusters that are part of the channel being chosen during the deployment. As new versions of application are created, all subscribers to the Rapid channel will get an update that a user can choose to deploy in the running environment.
  1. Running application - Once the application is deployed, you can check the status of the release for each deployed application along with the version deployed in specific environments.

application-release-run

application-release-run

Release and version status for a channel

Summary status of the release for an application is available on the Releases tab for catalog application. The status of the release and the version can be reviewed by clicking on the specific channel (Rapid or Stable).

To review status of individual rollouts related to a version of the application, click on the versions option.