GithubHelp home page GithubHelp logo

Comments (5)

muaazsaleem avatar muaazsaleem commented on July 29, 2024 1

It seems there are some questions around this feature:

What are the use cases for it?
I only see one use case for this. If someone is switching from using a normal service to StackSet, their application would go from having a stable cluster.local endpoint like
some-service.default.svc.cluster.local to only having per version service endpoints i.e some-service-v*.default.svc.cluster.local.

This might break callers that were using the original cluster.local endpoint. For example, services that use UI/API Gateways e.g tailor or zuul usually tend to use the cluster.local endpoints.

Which Stack version would this service point to?
Since we can't really traffic switch on service endpoints, which Stack version should this service point to. Should it always point to the latest version or should that be configurable?

One solution could be that we have a service key in the spec that refers to a stack version, something like:

apiVersion: zalando.org/v1
kind: StackSet
metadata:
  name: my-app
spec:
  #... optional igress definition
  # define which Stack service should the cluster.local endpoint point to 
 service:
    version: v1 # direct 100% of the cluster.local traffic to this version of the Stack.

People could also achieve the same effect by defining a service explicitly so the value of doing this is not clear.

Another solution would be to have the convention that this service always points to the Stack version that has the most traffic.

We could also decide that it would only work if a stack version is getting a 100% of the traffic. But then what should the endpoint refer to during traffic switching when there are multiple version.

But in all of the above solutions traffic switching is essentially "broken" for traffic coming from inside the cluster.

from stackset-controller.

mikkeloscar avatar mikkeloscar commented on July 29, 2024

Good idea!

They can't be traffic switched so the question is, what should be the selector?

stackset: <name> could be the selector. Each stack has this.

from stackset-controller.

linki avatar linki commented on July 29, 2024

stackset: could be the selector.

Right, but that would mean 100% on a particular version. Wrong if you have a 20/80% split on the Ingress level but probably good enough.

from stackset-controller.

linki avatar linki commented on July 29, 2024

@muaazsaleem Thanks for the detailed explanation.

from stackset-controller.

linki avatar linki commented on July 29, 2024

We decided that people have to provide their own service.yaml when they need the unversioned cluster.local dns name.

from stackset-controller.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.