Comments (8)
Hi @dvaldivia, @ShotaKitazawa and all,
We implemented a vanilla Kubernetes deployer that enables to run Service Weaver applications in any Kubernetes environment.
The main missing piece is traffic-shifting, which we plan to add soon. We are considering using argo rollouts for that.
If you would like to try the kubernetes deployer, provide any feedback, or help us improve it, please let us know.
from weaver.
I would love to see it can align with argocd and argo rollouts paradigm. As for real large application. clusters are managed by other configuration manager code. we don't really need to have the weaver command to support the whole global traffic management.
from weaver.
@cloudxu, @dvaldivia, @ShotaKitazawa you can add argocd / argo in the mix. We've played around with it and it should work. Let us know if you have any other questions.
from weaver.
Hi @dvaldivia,
We would love to support vanilla Kubernetes. The main reasons we launched with GKE support are:
- GKE supports multi-region/multi-cluster applications, and
- GKE load-balancers come with traffic-shifting capabilities.
Of the two, (2) was more important. Service Weaver makes the guarantee that a version X of an application only talks to other instances of version X. This typically means that a blue/green deployment is required (i.e., can't update Pods via rolling updates). An automated blue/green deployment strategy requires traffic shifting. Note that traffic-shifting can be achieved in vanilla Kubernetes using Istio, but we haven't done that yet.
Would you be interested in helping create a vanilla Kubernetes deployer?
from weaver.
Totally, what is needed?
from weaver.
I knew Weaver recently, and I'm interested in supporting a vanilla Kubernetes.
I think traffic-shifting can be supported as the following.
- Pods of main process, which is entrypoint from the external, have a same label on blue/green versions. And Service tied to Ingress is specified this label on labelSelector.
- My understanding, this way should be the same as Argo Rollout without Istio.
- Pods of other processes are tied to the label of individual versions.
I don't understand the implementation of deployer still now, So I'll investigate to know it at first.
from weaver.
Hi Kanata,
That would be excellent! Please let us know if you need anything from us in this process. Feel free to use the GKE deployer as a reference: it uses the Go K8s libraries extensively.
Re: blue/green. I think what you suggested is good except that gradual traffic shifting isn't supported by Kubernetes constructs. In other words, it would be ideal if Ingress slowly transitions traffic from the old deployed version to the new.
At least for GKE, this support added a ton of complexity. However, perhaps for vanilla Kubernetes we should just start with an atomic switch from the old version to the new? We can worry about adding Istio or some such later, if people really care about it. WDYT?
from weaver.
Re: blue/green. I think what you suggested is good except that gradual traffic shifting isn't supported by Kubernetes constructs. In other words, it would be ideal if Ingress slowly transitions traffic from the old deployed version to the new.
Regarding the above, it is possible to be almost realized by vanilla K8s way.
For example, in case we want to forward 20% of traffic to the new version, and in case the number of replicas
is 5, it is good to be deployed 1 new Pod and 4 old Pods.
- FYR: https://argoproj.github.io/argo-rollouts/features/canary/#overview →
Important
column
Anyway, I agree with your following opinion!
However, perhaps for vanilla Kubernetes we should just start with an atomic switch from the old version to the new? We can worry about adding Istio or some such later, if people really care about it.
from weaver.
Related Issues (20)
- context propagtion HOT 1
- multi deployment totally crashs after panic HOT 1
- initialize once in multi deploy mode HOT 1
- Replicated SQLite using Pocketbase and Marmot ( jetstream )
- Multi deployment: Blocks on first replica if other replica fails to start HOT 2
- Handling DB cleanup correctly HOT 5
- [Question] Weaver generate error in go/type.(*Checker) HOT 2
- Run alongside gRPC (will not HTTP2)
- Version mismatch with weaver-kube HOT 4
- Weaver generate process is not finished HOT 4
- Duplicate Method Executions in weavertest.RPC Mode HOT 3
- How to initializes the components in source code HOT 2
- Is Service Weaver suitable for writing tcp server? HOT 4
- weaver generate doesn't support go build tags HOT 4
- Duplicate method executions using multi deploy HOT 1
- How do I identify which replica a client tcp connection is on, and how do I route messages with rpc to that replica? HOT 7
- Is the project still alive? HOT 1
- Docs about AuthZ and AuthN
- Multi deployer support for gRPC and raw TCP traffic
- multi dashboard doesn't show traffic? HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from weaver.