Argo Rollouts 1.5 Release Candidate
We have just released Argo Rollouts 1.5 RC! This release had 25 contributors, of which 17 where first timers, and includes 109 commits, thank you all for the contributions! This release adds 11 new features and fixes a handful of bugs and improvements. Let’s dive into a few key things that were included in the release.

Plugins Oh My
One of the biggest changes for the project going forward is the release of plugin support. Starting in Argo Rollouts 1.5 you will be able to create your own traffic router and metric provider plugins. This allows you to easily extend Argo Rollouts to add different traffic routers either custom internal routers or other open source ones. There is a small list of people that have signed up to help contribute some traffic router plugins already you can find them here.
I would like to call out that a couple of our most requested traffic routers GatewayAPI and Contour have work in progress plugins. Please give them a try if they interest you and help grow their community.
It’s not just traffic routers that you can create plugins for. You can also implement metric providers, you can see a small list of work in progress ones here. This allows for either the simple addition of another open source metric provider or you could implement a custom check or load testing plugin that allow you to control an analysis based rollback on any kind of internal system you have.
There is some documentation on creating plugins here as well as some in-tree example ones here. Also, look forward to a more in depth deep dive blog post about creating them as in the future as well.
Contributed by Zach Aller
Support Multiple Nginx Ingresses
You can now configure Argo Rollouts to manage multiple Nginx Ingress resources. This allows you to have internal/external traffic ingress resources and have rollouts keep the weights in sync. To use this feature there was an additional spec added spec.strategy.canary.trafficRouting.nginx.stableIngresses
note the plural form of stableIngress
example below.
apiVersion: argoproj.io/v1alpha1
kind: Rollout
spec:
...
strategy:
canary:
canaryService: canary-service # required
stableService: stable-service # required
trafficRouting:
nginx:
# Either stableIngress or stableIngresses must be configured,
# but not both.
stableIngresses:
- primary-ingress
- secondary-ingress
- tertiary-ingress
Contributed by Travis Perdue
Apache SkyWalking Support
A new metrics provider was added right before plugin support was available this goes hand in hand with the APISIX traffic router already added to rollouts back in 1.4 this allows you to use Apache SkyWalking as a metrics provider. You can find the docs here.
Contributed by kezhenxu94
APISIX SetHeader
APISIX has added support for the SetHeader step this allow you to route traffic to the canary based on a particular header. A quick example of this is below. This will be the 3rd traffic router to support the SetHeader step.
apiVersion: argoproj.io/v1alpha1
kind: Rollout
metadata:
name: rollout-apisix-canary
spec:
strategy:
canary:
canaryService: rollout-apisix-canary-canary
stableService: rollout-apisix-canary-stable
trafficRouting:
managedRoutes:
- name: set-header
apisix:
route:
name: rollouts-apisix-route
rules:
- rollouts-apisix
steps:
- setCanaryScale:
replicas: 1
setHeaderRoute:
match:
- headerName: trace
headerValue:
exact: debug
name: set-header
Contributed by shareinto
Datadog v2 Query API Support
Datadog has a new version of their query API. This version has less strict requirements especially around rate limits which users have complained about getting rate limited by datadog in their analysis runs. The good new is to use the new feature is really simple see example below and note the apiVersion: v2
. There are minor changes such as the http request becomes a POST instead of GET so if you have any network policies blocking that those would also need to be adjusted accordingly.
provider:
datadog:
apiVersion: v2
interval: 5m
query: |
sum:requests.error.count{service:{{args.service-name}}} /
sum:requests.request.count{service:{{args.service-name}}}
Summary
There have been many small improvements and changes in this release as well you can find the full details here and in the changelog. The main focus in this release has been the plugin system. I really look forward to growing the plugin ecosystem so keep an eye out for the detailed blog post about plugin creation as well as my upcoming talk at ArgoCon EU 2023. Feel free to reach out via CNCF Slack, Github Issues etc if you are interested in contributing an open source plugin.