Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support multiple services to be managed by a rollout #451

Open
vadasambar opened this issue Mar 31, 2020 · 7 comments
Open

Support multiple services to be managed by a rollout #451

vadasambar opened this issue Mar 31, 2020 · 7 comments
Labels
enhancement New feature or request no-issue-activity

Comments

@vadasambar
Copy link

I have Service A and B pointing to a Deployment D. I want to convert Deployment D into an Argo Rollout but I cannot because Rollout right now supports only one activeService under blue green strategy.

...
  strategy:
    blueGreen: 
      # activeService specifies the service to update with the new template hash at time of promotion.
      # This field is mandatory for the blueGreen update strategy.
      activeService: rollout-bluegreen-active

https://argoproj.github.io/argo-rollouts/features/bluegreen/

@jessesuen jessesuen added the enhancement New feature or request label Aug 24, 2020
@jessesuen jessesuen modified the milestones: v0.10, v0.11 Nov 3, 2020
@dwalker-va
Copy link

My situation is that many apps support different protocols on different ports and they have different Services for this. When I do a rollout, I would like all of the relevant services to be part of the rollout. (Using Istio).

@jessesuen jessesuen changed the title Add support for multiple activeServices for blue green strategy Support multiple services to be managed by a rollout Dec 3, 2020
@jessesuen
Copy link
Member

Thanks for the second use-case, I'll expand the scope of this to include the canary strategy.

@argee5285
Copy link

argee5285 commented Jan 27, 2021

@jessesuen : Greetings! Is the feature now available to have multiple services rollout in one deployment? We have a deployment where we have multiple services (external - node port) and internal (cluster-ip), mapped to one deployment. We are looking out at using the argo based rollouts (blue-green) to enable that.

@jessesuen jessesuen modified the milestones: v1.0, v1.1 Feb 24, 2021
@jessesuen jessesuen modified the milestones: v1.1, v1.2 Jul 15, 2021
@huikang
Copy link
Member

huikang commented Oct 3, 2021

Hi, @jessesuen , I can take over this one as we march to v1.2. Implementation wise, we may update the rollout CRD with the following additional fields:

      activeServices:
      - rollout-bluegreen-active-1
      - rollout-bluegreen-active-2
      previewServices:
      - rollout-bluegreen-preview-1
      - rollout-bluegreen-preview-2

We keep the activeService and previewService for backward compatibility like in multiple virtualServices support.
What do you think?

@huikang huikang self-assigned this Nov 26, 2021
@jessesuen
Copy link
Member

While I think the spec you are proposing is ideal, I do want to call out some complications with the implementation.

There is quite a bit of the blue-green code which is currently assuming a single activeService, and the controller is examining the Service as the source of truth to infer what stage it is in during blue-green update. But by switching to a list of services, the source of truth could become inconsistent (e.g. if we crash after updating only some of the services).

I think it is worth trying this approach, but in terms of implementation, and in order to reduce risky changes to the controller, we may have to pick one of the services (e.g. the first one), to act as the primary source of truth, and the rest of the services should always follow that definition.

@jessesuen jessesuen modified the milestones: v1.2, v1.3 Jan 12, 2022
@harikrongali harikrongali modified the milestones: v1.3, v1.4 Jun 30, 2022
@lamebear
Copy link

lamebear commented Jul 6, 2022

To add another use case for this, we have to split our HTTP and gRPC traffic from Traefik to our applications so we can use the h2c scheme on the gRPC traffic (have Linkerd handling mTLS). In order to do that, we have to have separate Service resources with different annotations, or separate TraefikService resources to set the scheme/port. So for all of our deployments that expose gRPC and HTTP, we cannot implement Argo Rollouts as we require multiple services.

@perenesenko perenesenko assigned perenesenko and unassigned huikang Sep 3, 2022
@perenesenko perenesenko removed their assignment Oct 30, 2022
@zachaller zachaller removed this from the v1.4 milestone Dec 1, 2022
@github-actions
Copy link
Contributor

This issue is stale because it has been open 60 days with no activity.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request no-issue-activity
Projects
None yet
Development

No branches or pull requests

10 participants