You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository has been archived by the owner on Jul 28, 2023. It is now read-only.
Deploying multiple versions of the same application in the same cluster is a common practice in order to allow progressive transfer of traffic from the old to the new version over time, for instance, allowing a team to "test in production" with 5% of traffic going to a new release while 95% remains in the older release.
Is your feature request related to a problem?
Yes, for Istio service meshes, which support this concept natively through the usage of the label "version". appsody deploy always removes the old version of an app, there is no option to keep the previous version deployed.
One could try and rename the Appsody application in the app-deploy.yaml, but then Appsody will create two Service objects when what we want is a single Service object with a selector that matches all pods representing all the different versions of the application, such as in the snippet below pulled out of an Istio sample :
Istio prescribes the usage of the app label to tie various Deployment objects to the same logical application inside the service mesh, and the usage of the version label to distinguish each Deployment version. With all deployments labeled with app and version labels, Istio then requires a single Service object with a selector for the app label (see above snippet).
The AppsodyOperator already allows the addition of the app and label versions to the AppsodyApplication object, so we need a mechanism to achieve that arrangement with a single Service using a selector matching all the Deployment objects.
As a current workaround, one could ignore the Service objects created by the Appsody operator and create their own Service object with a selector tied to the Istio app and version labels in the multiple AppsodyApplication objects representing the multiple versions of the logical application.
The text was updated successfully, but these errors were encountered:
thanks for opening this @nastacio. It seems like this is directly related to the appsody deploy command, in which case it's probably a better fit for the CLI repo?
thanks for opening this @nastacio. It seems like this is directly related to the appsody deploy command, in which case it's probably a better fit for the CLI repo?
I added more clarification to the issue itself, explaining the reason why this feature needs to be addressed at the operator level: whenever a new version of the application is deployed (same name with the new version field) , the operator creates a new pair of Deployment and Service objects for the new AppsodyApplication object, but Istio prescribes a single Service object for all Deployment objects, using a selector with the Istioapp label for all the versions of the application.
This one is tricky, because we would have multiple AppsodyApplication deployments (creating their Deployment resources) but wanting to share a single Service - the problem is about which deployment owns that Service instance. When we delete an AppsodyApplication we also remove its owned resources, so the Operator would have to be smart enough to pass the ownership to another parent.
We'll need to design this one careful, as we don't yet have any Istio / Service Mesh specific config. I think it's a step forward to have something in that space.
@leochr - I think this one should move to Runtime Component, 0.6.0 or 0.7.0 candidate.
Feature Request
Deploying multiple versions of the same application in the same cluster is a common practice in order to allow progressive transfer of traffic from the old to the new version over time, for instance, allowing a team to "test in production" with 5% of traffic going to a new release while 95% remains in the older release.
Is your feature request related to a problem?
Yes, for Istio service meshes, which support this concept natively through the usage of the label "version".
appsody deploy
always removes the old version of an app, there is no option to keep the previous version deployed.One could try and rename the Appsody application in the app-deploy.yaml, but then Appsody will create two
Service
objects when what we want is a singleService
object with a selector that matches all pods representing all the different versions of the application, such as in the snippet below pulled out of an Istio sample :Describe the solution you'd like
Istio prescribes the usage of the
app
label to tie variousDeployment
objects to the same logical application inside the service mesh, and the usage of theversion
label to distinguish eachDeployment
version. With all deployments labeled withapp
andversion
labels, Istio then requires a singleService
object with a selector for theapp
label (see above snippet).The AppsodyOperator already allows the addition of the
app
andlabel
versions to theAppsodyApplication
object, so we need a mechanism to achieve that arrangement with a singleService
using a selector matching all theDeployment
objects.As a current workaround, one could ignore the
Service
objects created by the Appsody operator and create their ownService
object with a selector tied to the Istioapp
andversion
labels in the multipleAppsodyApplication
objects representing the multiple versions of the logical application.The text was updated successfully, but these errors were encountered: