Argo Rollouts Progressive Delivery with Consul on Kubernetes
This page describes the process to configure and use the Argo Rollouts Controller with Consul on Kubernetes to manage advanced subset-based routing for Canary deployments.
Consul's support for Argo Rollouts is currently limited to subset-based routing.
Install Argo Rollouts Controller
There are three methods for installing the Argo Rollouts Controller with Consul on Kubernetes:
- Install Rollouts Using Helm and init containers. We recommend installing the Argo Rollouts Controllor using this method.
- Install Rollouts Using Helm and binary
- Standalone installation
After installing the controller, you must apply the RBAC CRD to your Kubernetes cluster.
Install Rollouts Using Helm and init containers
We recommend using this method to install this plugin.
Add the following code to your values.yaml
file to configure the plugin:
Then install the argo-rollouts
and apply your updated values using Helm:
Install Rollouts Using Helm and binary
To build the binary and install Rollouts, complete the following steps:
- Build this plugin using your preferred tool. For example,
make build
. - Mount the built plugin onto the
argo-rollouts
container. - Add the following code to your
values.yaml
file to configure the plugin:
Then install the argo-rollouts
and apply your updated values using Helm:
Stand-alone installation
This section describes the process to create a stand-alone installation. These instructions are for illustrative purposes. We recommend using init containers to create and install this plugin.
To create a stand-alone installation of the Rollouts plugin, complete the following steps:
- Build this plugin.
- Put the plugin on the path and mount it to the
argo-rollouts
container. - Create a
ConfigMap
to configureargo-rollouts
with the plugin's location.
The following example schedules a Deployment and mounts it to the argo-rollouts
container:
The following example creates the ConfigMap
with the location of the plugin:
Install the RBAC
After either mounting the binary or using an init container, configure an RBAC using Argo Rollout Consul plugin rbac.yaml
:
Use the Argo Rollouts Consul plugin
Schedule the Kubernetes Service utilized by the service being rolled out. Additionally, configure any service defaults and proxy defaults required for the service.
Next, create the service resolver and service splitter CRDs for your stable service. Argo automatically modifies these CRDs during canary deployments.
The following example demonstrates the configuration of the service resolver CRD, which creates service subsets and sets the stable subset as the default:
The following example demonstrates the configuration of the service splitter CRD, which initially sends 100% of traffic to the stable deployment:
Then configure your Argo Rollout resource to incrementally rollout the canary deployment:
Finally, perform the Rollout operation using the Argo Rollouts Kubectl plugin.