From 40cc4dd3967a135cd49128559f8871ef3f755069 Mon Sep 17 00:00:00 2001 From: "Kostis (Codefresh)" <39800303+kostis-codefresh@users.noreply.github.com> Date: Mon, 29 Jul 2024 18:48:21 +0000 Subject: [PATCH 1/3] docs: added clarifications for short releases Signed-off-by: Kostis (Codefresh) <39800303+kostis-codefresh@users.noreply.github.com> --- docs/FAQ.md | 2 ++ docs/best-practices.md | 14 ++++++++++++++ 2 files changed, 16 insertions(+) diff --git a/docs/FAQ.md b/docs/FAQ.md index 861e4b3a80..caa9df475f 100644 --- a/docs/FAQ.md +++ b/docs/FAQ.md @@ -1,5 +1,7 @@ # FAQ +Be sure to read the [Best practices page](../best-practices) as well. + ## General ### Does Argo Rollouts depend on Argo CD or any other Argo project? diff --git a/docs/best-practices.md b/docs/best-practices.md index c268bb5d92..0867af87ba 100644 --- a/docs/best-practices.md +++ b/docs/best-practices.md @@ -29,6 +29,18 @@ You should *NOT* use Argo Rollouts for preview/ephemeral environments. For that The recommended way to use Argo Rollouts is for brief deployments that take 15-20 minutes or maximum 1-2 hours. If you want to run new versions for days or weeks before deciding to promote, then Argo Rollouts is probably not the best solution for you. +Keeping parallel releases for long times, complicates the deployment process a lot and opens several questions where different people have different views on how Argo Rollouts should work. + +For example let's say that you are testing for a week version 1.3 as stable and 1.4 as preview. +Then somebody deploys 1.5 + +* Some people believe that the new state should be 1.3 stable and 1.5 as preview +* Some people believe that the new state should be 1.4 stable and 1.5 as preview + +And then let's say that 1.5 has an issue. Some people believe that Argo rollouts should "rollback" to 1.3 while other people think it should rollback to 1.4 + +All these problems are not present if you make the assumption that each release stays active only for a minimal time and you always create one new version when the previous one has finished. + Also, if you want to run a wave of multiple versions at the same time (i.e. have 1.1 and 1.2 and 1.3 running at the same time), know that Argo Rollouts was not designed for this scenario. A version that has just been promoted is assumed to be ready for production and has already passed all your tests (either manual or automated). @@ -41,6 +53,8 @@ While Argo Rollouts supports manual promotions and other manual pauses, these ar Ideally you should have proper metrics that tell you in 5-15 minutes if a deployment is successful or not. If you don't have those metrics, then you will miss a lot of value from Argo Rollouts. +If you are doing a deployment right now and then have an actual human looking at logs/metrics/traces for the next 2 hours, adopting Argo Rollouts is not going to help you a lot with automated deployments. + Get your [metrics](../features/analysis) in place first and test them with dry-runs before applying them to production deployments. From 6a05b0a5c3d284843137b6bdf6809b3527647b56 Mon Sep 17 00:00:00 2001 From: "Kostis (Codefresh)" <39800303+kostis-codefresh@users.noreply.github.com> Date: Tue, 30 Jul 2024 15:34:43 +0000 Subject: [PATCH 2/3] docs: clarify current Argo Rollout behavior Signed-off-by: Kostis (Codefresh) <39800303+kostis-codefresh@users.noreply.github.com> --- docs/best-practices.md | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/docs/best-practices.md b/docs/best-practices.md index 0867af87ba..21d8d67a75 100644 --- a/docs/best-practices.md +++ b/docs/best-practices.md @@ -34,11 +34,15 @@ Keeping parallel releases for long times, complicates the deployment process a l For example let's say that you are testing for a week version 1.3 as stable and 1.4 as preview. Then somebody deploys 1.5 -* Some people believe that the new state should be 1.3 stable and 1.5 as preview -* Some people believe that the new state should be 1.4 stable and 1.5 as preview +1. Some people believe that the new state should be 1.3 stable and 1.5 as preview +1. Some people believe that the new state should be 1.4 stable and 1.5 as preview + +Currently Argo Rollouts follows the first approach, under the assumption that something was really wrong and 1.5 is the hotfix. And then let's say that 1.5 has an issue. Some people believe that Argo rollouts should "rollback" to 1.3 while other people think it should rollback to 1.4 +Currently Argo Rollouts assumes that the version to rollback is always 1.3 regardless of how many "hotfixes" have been previewed in-between. + All these problems are not present if you make the assumption that each release stays active only for a minimal time and you always create one new version when the previous one has finished. Also, if you want to run a wave of multiple versions at the same time (i.e. have 1.1 and 1.2 and 1.3 running at the same time), know that Argo Rollouts was not designed for this scenario. From f0ac4c8be0c7230be033950c7908902901d5d78b Mon Sep 17 00:00:00 2001 From: "Kostis (Codefresh)" <39800303+kostis-codefresh@users.noreply.github.com> Date: Tue, 30 Jul 2024 15:39:10 +0000 Subject: [PATCH 3/3] docs: also clarify multiple versions Signed-off-by: Kostis (Codefresh) <39800303+kostis-codefresh@users.noreply.github.com> --- docs/best-practices.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/best-practices.md b/docs/best-practices.md index 21d8d67a75..0ed32efbec 100644 --- a/docs/best-practices.md +++ b/docs/best-practices.md @@ -37,7 +37,7 @@ Then somebody deploys 1.5 1. Some people believe that the new state should be 1.3 stable and 1.5 as preview 1. Some people believe that the new state should be 1.4 stable and 1.5 as preview -Currently Argo Rollouts follows the first approach, under the assumption that something was really wrong and 1.5 is the hotfix. +Currently Argo Rollouts follows the first approach, under the assumption that something was really wrong with 1.4 and 1.5 is the hotfix. And then let's say that 1.5 has an issue. Some people believe that Argo rollouts should "rollback" to 1.3 while other people think it should rollback to 1.4 @@ -45,7 +45,7 @@ Currently Argo Rollouts assumes that the version to rollback is always 1.3 regar All these problems are not present if you make the assumption that each release stays active only for a minimal time and you always create one new version when the previous one has finished. -Also, if you want to run a wave of multiple versions at the same time (i.e. have 1.1 and 1.2 and 1.3 running at the same time), know that Argo Rollouts was not designed for this scenario. +Also, if you want to run a wave of multiple versions at the same time (i.e. have 1.1 and 1.2 and 1.3 running at the same time), know that Argo Rollouts was not designed for this scenario. Argo Rollouts always works with the assumption that there is one stable/previous version and one preview/next version. A version that has just been promoted is assumed to be ready for production and has already passed all your tests (either manual or automated).