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

feature(BlueGreen): Allow preview service to point ONLY at preview ReplicaSet #4131

Open
marcinjahn opened this issue Feb 13, 2025 · 2 comments
Labels
enhancement New feature or request
Milestone

Comments

@marcinjahn
Copy link

Summary

Currently, the preview service point either at preview ReplicaSet (if we're in the middle of a rollout), or at the active ReplicaSet (any other time).
I think it'd be useful to have an option to specify that the preview service would never point at the active ReplicaSet. Therefore, if there's no rollout going on, the preview service would not connect you to any pods. It could return something like HTTP 503 instead.

Use Cases

  • running tests on preview environments - it'd be a good feedback to know that there is no preview service being deployed at the moment
  • it'd be convenient to have confidence that the response I'm seeing for an API request to a preview service is actually coming from the preview service. Currently, I can never be sure.

Message from the maintainers:

Impacted by this bug? Give it a 👍. We prioritize the issues with the most 👍.

@marcinjahn marcinjahn added the enhancement New feature or request label Feb 13, 2025
@zachaller zachaller added this to the v1.9 milestone Feb 14, 2025
@kostis-codefresh
Copy link
Member

Hello

This is a breaking change for people who have the following scenario (me as well)

I am doing a blue/green deployment and I want an internal service to connect to the new version as soon as possible. Maybe this service is controlled by my QA team or it is my own intranet.

The use case is that I want them to have a look at the new version as soon as possible to detect errors that would allow me to decide if I actually want to promote the new version or not.

With the current behavior I just point everybody to the preview service and it automatically works at all instances.
With the suggested change I am now forced to change manually the URL of the rollout. When a rollout is in progress I need to point everybody to the preview service and when a rollout is not in progress I need to manually change everybody to the stable service (other wise my intranet users will get 503)

Frankly if you want to know what a rollout is doing you need to query the rollout itself directly and not use the preview service. Assuming that no rollout is happening because preview service throws 503 is a side effect and not the source of truth.

running tests on preview environments - it'd be a good feedback to know that there is no preview service being deployed at the moment

Why point those tests to the preview service and not the stable service if you want to avoid scenarios where a rollout is in progress?

it'd be convenient to have confidence that the response I'm seeing for an API request to a preview service is actually coming from the preview service. Currently, I can never be sure.

You should see in your metrics that the preview pods are getting requests. Your Analysis as well. That is the whole point of adopting Argo Rollout (to use with metrics).

@marcinjahn
Copy link
Author

Well, I definitely would not suggest to introduce it as breaking change. If my feature request would get implemented, it should be as a non-default option.

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

No branches or pull requests

3 participants