Argo Rollouts 1.8 Released
Welcome Argo Rollouts 1.8! This release had 53 contributors, of which 39 were first-timers, and includes 202 commits! Thank you all for your contributions! There are some really nice features in this release so let’s take a look.

Canary Step Plugins
This exciting new feature allows you to configure new steps in your Canary configured Rollout. With this plugin system, you are now able to create a plugin and execute your own steps during the canary analysis. This extends Argo Rollouts capabilities and enriches the progressive delivery experience to accommodate a multitude of scenarios. It is a continuation of the previous work that was done to create a pluggable system for traffic routers and metric providers in the v1.5 release.
You can refer to the documentation to learn more about creating a plugin. Once implemented, it can be configure in the argo-rollouts-config ConfigMap:
apiVersion: v1
kind: ConfigMap
metadata:
name: argo-rollouts-config
data:
stepPlugins: |-
- name: "argoproj-labs/step-exec" # name of the plugin
location: "file://./my-custom-plugin" # supports http(s):// urls and file://Ya
Users can then configure this plugin as part of their canary steps:
apiVersion: argoproj.io/v1alpha1
kind: Rollout
metadata:
name: example-plugin-ro
spec:
strategy:
canary:
steps:
- plugin:
name: argoproj-labs/step-exec
config:
command: echo "hello world"
While these plugins do not require to be open-source, we are looking forward to what the community will implement in the upcoming months. If you are interested in contributing a canary step plugin to the community, simply open an issue under argo-rollouts requesting an argoproj-labs repository to host your plugin.
Contributed by: Alexandre Gaudreault
Analysis Consecutive Success Limit
This provides the inverse of what an analysis currently does. The main use case for this is to allow users to wait on a condition (in a step analysis especially) to hold, before proceeding to the next step.
Here is an example analysis:
apiVersion: argoproj.io/v1alpha1
kind: AnalysisTemplate
metadata:
name: success-rate
spec:
args:
- name: service-name
metrics:
- name: success-rate
interval: 1m
successCondition: result[0] <= 0.95
consecutiveSuccessLimit: 3
provider:
prometheus:
address: http://prometheus.example.com:9090
query: |
sum(irate(
istio_requests_total{reporter="source",destination_service=~"{{args.service-name}}",response_code!~"5.*"}[1m]
)) /
sum(irate(
istio_requests_total{reporter="source",destination_service=~"{{args.service-name}}"}[1m]
))
You can find more information in the documentation found here .
Contributed by: Youssef Rabie
Other Features
- New Prometheus metric: build_info (#3591)
- Enable pprof profiling support (#3769)
- Allow specifying full annotations for Nginx canary (#3671)
- Credentials to download plugin (#3905)
Bug fixes
We had 36 labeled bug fixes in this release some of the area’s of focus for bugs have been around Rollouts getting stuck progressing and better verification of not causing any outage during a rollout. So, if you have experienced any of these issue test this release out and let us know how it behaves.
Summary
This releases big feature was around step plugins, I can’t wait to see what this feature empowers end users to create. Feel free to share in the CNCF Argo Rollouts Slack channel and open an issue if you would like a plugin repo on argoproj-labs. Additionally, delve into the complete change log here, and don’t forget to try out the release, available here. A heartfelt thank you goes out to all those who contributed to this release.