# Argo Rollouts
# v1.0.1
26, May 2021 Source (opens new window)
Quickstart
kubectl create namespace argo-rollouts
kubectl apply -n argo-rollouts -f https://github.com/argoproj/argo-rollouts/releases/download/v1.0.1/install.yamlChanges since v1.0.1
Controller
- fix: Modify validation to check Analysis args passed through RO spec (#1215)
- fix: AnalysisRun args could not be resolved from secret (#1213)
- feat: WebMetric to support string body responses (#1212)
# v1.0.0
20, May 2021 Source (opens new window)
Quickstart
kubectl create namespace argo-rollouts
kubectl apply -n argo-rollouts -f https://github.com/argoproj/argo-rollouts/releases/download/v1.0.0/install.yaml
Notable Features
- New Argo Rollouts UI available in
kubectl argo rollouts dashboard - Ability to reference existing Deployment workloads instead of inlining a PodTemplate at spec.template
- Richer Prometheus stats and Kubernetes events
- Support for Ambassador as a canary traffic router
- Support canarying using Istio DestinationRule subsets
Upgrade Notes
Installation Manifests
Installation manifests are now attached as GitHub Release artifacts (as opposed to raw files checked into git)
and can be installed with the release download URL. e.g.:
kubectl apply -n argo-rollouts -f https://github.com/argoproj/argo-rollouts/releases/download/v1.0.0/install.yaml
Argo CD OutOfSync status on Rollout v1.0.0 CRDs:
Argo Rollouts v1.0 now vends apiextensions.k8s.io/v1 CustomResourceDefinitions (previously apiextensions.k8s.io/v1beta1). Kubernetes v1 CRDs no longer supports the preservation of unknown fields in objects, and rejects attempts to set spec.preserveUnknownFields: true (the previous default). In order to support a smooth upgrade from Argo Rollouts v0.10 to v1.0, spec.preserveUnknownFields is explicitly set to false in the manifests, despite false being the default, and only option in v1 CRDs. However this causes diffing tools (such as Argo CD) to report the manifest as OutOfSync (since K8s drops the false field).
More information:
To avoid the Argo CD OutOfSync conditions, you can remove spec.preserveUnknownFields from the manifests
entirely after upgrading to v1.0.
Alternatively, you can instruct Argo CD to ignore differences using ignoreDifferences in the Application spec:
spec:
ignoreDifferences:
- group: apiextensions.k8s.io
kind: CustomResourceDefinition
jsonPointers:
- /spec/preserveUnknownFieldsDeprecation of kubectl argo rollouts promote --skip-current-step flag
The promote flag --skip-current-step which skips the current running canary step has been deprecated and will be removed in a future release. Its logic to skipping the current step has been merged with the existing command:
kubectl argo rollouts promote ROLLOUTThe promote ROLLOUT command can now be used to handle both the case where the rollout needs to be unpaused, as well as to skip the currently running canary step (e.g. an analysis/experiment/pause step).
Changes since v0.10
Controller
- feat: support reference model for workloads (#676) (#1072)
- feat: Implement Ambassador to be used as traffic router for canary deployments (#1025)
- feat: support canarying using Istio DestinationRule subsets (#985)
- feat: istio virtualservice and rollout in different namespaces
- feat: add ability to verify canary weights before advancing steps (#957)
- feat: support scaleDownDelaySeconds in canary w/ traffic routing (#1056)
- feat: Add ability to restart maxUnavailable pods to BlueGreen strategy (#937)
- feat(controller): Add support for ephemeral metadata on BlueGreen rollouts. Fixes #973 (#974)
- feat: Allow user to handle NaN result in Analysis (#977)
- feat: Wait for canary RS to have ready replicas before shifting labels (#1022)
- feat: Create RolloutPaused condition (#1054)
- feat: Add RolloutCompleted condition (#1074)
- feat: add print version flag to rollouts-controller
- feat: calculate rollout phase & message controller side
- fix: Fixes the regression of dropping resources from argo-rollouts crds. Fixes #1043 (#1044)
- fix: Set Canary Strategy default maxUnavailable to 25% (#981)
- fix: blue-green rollouts could pause prematurely during prePromotionAnalysis (#1007)
- fix: Clear ProgressDeadlineExceeded Condition in paused BlueGreen Rollout (#1002)
- fix: analysis template arguments validate (#1038)
- fix: calculate scale down count. (#1047)
- fix: verify analysis arguments name with those in the rollout (#1071)
- fix: rollout status always in progressing if analysis fails (#1099)
- fix: Add edge case handling to traffic routing (#1190)
- fix: unhandled error patchVirtualService (#1168)
- fix: handling error on f.close (#1167)
- fix: rollouts in middle of restart should be considered Progressing
Analysis
- feat: metric fields can be parameterized by analysis arguments (#901)
- feat: support a custom base URL for the new relic provider (#1053)
- feat: Allow Datadog API and APP keys to be consumed from env vars (#1073)
- fix: Improve validation for AnalysisTemplates referenced by RO (#1094)
- fix: wavefront queries would return no datapoints. surface evaluate errors
- fix: metrics which errored did not retry at error interval
- fix: Improve and refactor validation for AnalysisTemplates
Plugin
- feat: Argo Rollouts api-server and UI (#1015)
- feat: Implement rollout status command. Fixes #596 (#1001)
- feat: lint supporting rollout in multiple doc
- fix: get rollout always return not found except default namespace (#961)
- fix: create command not support namespace in yaml file (#962)
- fix: kubectl argo create panic: runtime error: invalid memory address or nil pointer dereference
Misc
- chore: publish plugin image automatically. migrate to quay.io (#1102)
- feat: support ARM builds, remove unused components in Dockerfile (#889)
- chore: update k8s dependencies to v1.20. improve logging (#994)
- fix: add informational exposed ports to deployment (#1066)
- chore: Outsource reusable UI components to argo-ux npm package
- fix: use fixed size int32
# v1.0.0-rc1
05, May 2021 Source (opens new window)
Quickstart
kubectl create namespace argo-rollouts
kubectl apply -n argo-rollouts -f https://github.com/argoproj/argo-rollouts/releases/download/v1.0.0-rc1/install.yaml
Notable Features
- New Argo Rollouts UI available in
kubectl argo rollouts dashboard - Ability to reference existing Deployment workloads instead of inlining a PodTemplate at spec.template
- Support for Ambassador as a canary traffic router
- Support canarying using Istio DestinationRule subsets
Upgrade Notes
Installation Manifests
Installation manifests are now attached as GitHub Release artifacts (as opposed to raw files checked into git)
and can be installed with the release download URL. e.g.:
kubectl apply -n argo-rollouts -f https://github.com/argoproj/argo-rollouts/releases/download/v1.0.0-rc1/install.yaml
Argo CD OutOfSync status on Rollout v1.0.0 CRDs:
Argo Rollouts v1.0 now vends apiextensions.k8s.io/v1 CustomResourceDefinitions (previously apiextensions.k8s.io/v1beta1).
Kubernetes v1 CRDs no longer supports the preservation of unknown fields in objects, and rejects
attempts to set spec.preserveUnknownFields: true. In order to support a smooth upgrade from
Argo Rollouts v0.10 to v1.0, spec.preserveUnknownFields is explicitly set to false in the manifests,
despite false being the default, and only option in v1 CRDs. However this causes diffing tools
(such as Argo CD) to report the manifest as OutOfSync (since K8s drops the false field).
More information:
To avoid the Argo CD OutOfSync conditions, you can remove spec.preserveUnknownFields from the manifests
entirely after upgrading from v0.10.
Alternatively, you can instruct Argo CD to ignore differences using ignoreDifferences in the Application spec:
spec:
ignoreDifferences:
- group: apiextensions.k8s.io
kind: CustomResourceDefinition
jsonPointers:
- /spec/preserveUnknownFieldsChanges since v0.10
Controller
- feat: support reference model for workloads (#676) (#1072)
- feat: Implement Ambassador to be used as traffic router for canary deployments (#1025)
- feat: support canarying using Istio DestinationRule subsets (#985)
- feat: istio virtualservice and rollout in different namespaces
- feat: add ability to verify canary weights before advancing steps (#957)
- feat: support scaleDownDelaySeconds in canary w/ traffic routing (#1056)
- feat: Add ability to restart maxUnavailable pods to BlueGreen strategy (#937)
- feat(controller): Add support for ephemeral metadata on BlueGreen rollouts. Fixes #973 (#974)
- feat: Allow user to handle NaN result in Analysis (#977)
- feat: Wait for canary RS to have ready replicas before shifting labels (#1022)
- feat: Create RolloutPaused condition (#1054)
- feat: Add RolloutCompleted condition (#1074)
- fix: Fixes the regression of dropping resources from argo-rollouts crds. Fixes #1043 (#1044)
- fix: Set Canary Strategy default maxUnavailable to 25% (#981)
- fix: blue-green rollouts could pause prematurely during prePromotionAnalysis (#1007)
- fix: Clear ProgressDeadlineExceeded Condition in paused BlueGreen Rollout (#1002)
- fix: analysis template arguments validate (#1038)
- fix: calculate scale down count. (#1047)
- fix: verify analysis arguments name with those in the rollout (#1071)
- fix: rollout status always in progressing if analysis fails (#1099)
Analysis
- feat: metric fields can be parameterized by analysis arguments (#901)
- feat: support a custom base URL for the new relic provider (#1053)
- feat: Allow Datadog API and APP keys to be consumed from env vars (#1073)
- fix: Improve validation for AnalysisTemplates referenced by RO (#1094)
- fix: wavefront queries would return no datapoints. surface evaluate errors
- fix: metrics which errored did not retry at error interval
Plugin
- feat: Argo Rollouts api-server and UI (#1015)
- feat: Implement rollout status command. Fixes #596 (#1001)
- fix: get rollout always return not found except default namespace (#961)
- fix: create command not support namespace in yaml file (#962)
- fix: kubectl argo create panic: runtime error: invalid memory address or nil pointer dereference
Misc
- chore: publish plugin image automatically. migrate to quay.io (#1102)
- feat: support ARM builds, remove unused components in Dockerfile (#889)
- chore: update k8s dependencies to v1.20. improve logging (#994)
- fix: add informational exposed ports to deployment (#1066)
# v0.10.2
17, Dec 2020 Source (opens new window)
Quick Start
kubectl create namespace argo-rollouts
kubectl apply -n argo-rollouts -f https://raw.githubusercontent.com/argoproj/argo-rollouts/v0.10.2/manifests/install.yaml
Changes since v0.10.1
Controller
- fix: switch pod restart to use evict API to honor PDBs
- fix: ephemeral metadata injection was dropping metadata injected by mutating webhooks
- fix: requiredForCompletion did not work for an experiment started by a rollout
- fix: Add missing RoleBinding file to namespace installation
# stable: chore: update install manifests to v0.10.2
17, Dec 2020 Source (opens new window)
Signed-off-by: Jesse Suen jesse_suen@intuit.com
# v0.10.1
05, Dec 2020 Source (opens new window)
v0.10.1
Quick Start
kubectl create namespace argo-rollouts
kubectl apply -n argo-rollouts -f https://raw.githubusercontent.com/argoproj/argo-rollouts/v0.10.1/manifests/install.yaml
Changes since v0.10.0
Controller
- fix: restart was restarting too many pods when available > spec.replicas (#856)
- fix: Correct Istio VirtualService immediately when not in desired state (#874)
Plugin
- fix: plugin incorrectly treated v0.9 rollout as v0.10 when it had numeric observedGeneration (#875)
# v0.10.0
14, Nov 2020 Source (opens new window)
v0.10.0
Quick Start
kubectl create namespace argo-rollouts
kubectl apply -n argo-rollouts -f https://raw.githubusercontent.com/argoproj/argo-rollouts/v0.10.0/manifests/install.yaml
Notable Features
- Ability to set canary vs. stable ephemeral metadata on rollout Pods during an update
- Support new metric providers: New Relic, Datadog
- Ability to control canary scale during an update
- Ability to restart up to maxUnavailable pods at a time for a canary rollout
- Ability to self reference rollout metadata as arguments to analysis
- Ability to fully promote blue-green and canary rollouts (skipping steps, analysis, pauses)
- kubectl-argo-rollouts plugin command to lint rollout
- kubectl-argo-rollouts plugin command to undo a rollout (same as kubectl rollout undo)
Upgrade Notes
Rollouts v0.10 has switched to using Kubernetes CRD Status Subresources (PR #789). This feature allows the rollout controller to record the numeric metadata.generation into status.observedGeneration which provides a reliable indicator of a Rollout who's spec has (or has not yet) been observed by the controller (for example if the argo-rollouts controller was down or delayed).
A consequence of this change, is that the v0.10 rollout controller should be used with the v0.10 kubectl-argo-rollouts plugin in order to perform actions such as abort, pause, promote. Similarly, Argo CD v1.8 should be with the v0.10 rollout controller when performing those same actions. Both kubectl-argo-rollouts plugin v0.10 and Argo CD v1.8 are backwards compatible with v0.9 rollouts controller.
Changes since v0.9
Controller
- feat: set canary/stable ephemeral metadata to pods during updates (#770)
- feat: add support for valueFrom in analysis arguments. (#797)
- feat: Adding rollout_info_replicas_desired metric. Fixes #748 (#749)
- feat: restart pods up to maxUnavailable at a time
- feat: add full rollout promotion (skip analysis, pause, steps)
- feat: use CRD status subresource (#789)
- feat: Allow setting canary weight without side-effects. Fixes #556 (#677)
- fix: namespaced scoped controller support (#818)
- fix: fetch secrets on-demand to fix controller boot for large clusters (#829)
Analysis
Plugin
- feat: Implement kubectl argo rollouts lint
- feat: Add undo command in kubectl plugin. Fixes #575 (#812)
- fix: kubectl plugin should use dynamic client
Misc
- fix: rollout kustomize transform analysis ref should use templateName instead of name (#809)
- fix: add missing Service kustomize name reference in trafficRouting/alb/rootService (#699)
# v0.9.3
05, Nov 2020 Source (opens new window)
Quick Start
kubectl create namespace argo-rollouts
kubectl apply -n argo-rollouts -f https://raw.githubusercontent.com/argoproj/argo-rollouts/v0.9.3/manifests/install.yaml
Changes since v0.9.2
Controller
- fix: scaleDownDelayRevisionLimit was off by one (#816)
- fix: background analysis refs were not verified. requeue InvalidSpec rollouts (#814)
- fix(controller): fix unhandled panic from malformed rollout (#801)
- fix(controller): validation should not consider privileged security context (#802)
# v0.9.2
17, Oct 2020 Source (opens new window)
Quick Start
kubectl create namespace argo-rollouts
kubectl apply -n argo-rollouts -f https://raw.githubusercontent.com/argoproj/argo-rollouts/v0.9.2/manifests/install.yaml
Changes since v0.9.1
Controller
- fix(controller): controller did not honor maxUnavailable during rollback (#786)
- fix(controller): blue-green with analysis was broken (#780)
- fix(controller): blue-green fast-tracked rollbacks would still start analysis templates
- fix(controller): prePromotionAnalysis with previewReplicaCount would pause indefinitely w/o running analysis
- fix(controller): calculate available replicas from active ReplicaSet (#757)
Plugin
- feat(plugin): indicate the stable ReplicaSet for blue-green rollouts in plugin
- feat(plugin): plugin now surfaces InvalidSpec errors and failed analysisrun messages (#729)
- fix(plugin): bluegreen scaleDownDelay was delaying Healthy status. Present errors in message field (#768)
# v0.9.1
29, Sep 2020 Source (opens new window)
Quick Start
kubectl create namespace argo-rollouts
kubectl apply -n argo-rollouts -f https://raw.githubusercontent.com/argoproj/argo-rollouts/v0.9.1/manifests/install.yaml
Changes since v0.9.0
General
- feat: writeback rollout updates to informer to prevent stale data (#726)
- fix: unavailable stable RS was not scaled down to make room for canary (#739)
- fix: make controllers tolerant to spec marshalling errors (#666)
- perf: Create IstioVirtualServiceLister (#656)
- fix: add missing log message when a controller's syncHandler returns error (#658)
- fix: support azure auth (#664)
Analysis
- feat: web metrics preserve data types, allow insecure tls, and make jsonPath optional (#731)
- fix: analysis controller could get into a hotloop with terminated run (#724)
- fix: do not create analysisruns with initial deploy (#722)
- fix: add Failed AnalysisRun phase status to analysis_run_metric_phase and analysis_run_phase metrics. (#618)