Open aL3891 opened 3 years ago
This, selfishly, is one of the main features I want added to tye. I think the ability to reference a 3rd party package in your tye yaml that would be able to modify how a service starts (like dapr, zipkin, etc.) is critical for the success of tye long term.
I think you issue mentions two types of extensions, ones which add to a service during tye run and tye deploy. The other portion is adding extensions which deploy to something other than k8s. I think the first is more attainable at this point; a design for an extension model to handle how applications are deployed seems much more involved.
For sure, i understand that tye was created as a tool for Kubernetes and extending the actual publishing part is a much broader task. Many concepts in Kubernetes do not exists in other platforms and vice versa, and what if i want to extend my custom service fabric publish pipeline? could a plugin target a specific publish service? All these things could be solved of course, its just a lot of work and changes to the current architecture
Even so, using tye as kind of a way to model a microservice system in an abstract sense, services, ingress, containers, mapping ports... That would be pretty rad, even if the primary goal is publishing to Kubernetes.
Again, i understand this is not that can be done in a weekend, but maybe the model stuff could be exposed as a library so that you could read the yaml file into an object model, have the "service plugins" potentially modify it, and then hand if off to the library consumer to party on?
For example, my current thinking in using Tye with service fabric would be to just read the tye.yaml file directly and generate a servicefabric deployment from that. I haven't tried this though and it might not work if i can't add custom values to the tye file (i.e. values that tye just ignores). Having the object model, ConfigApplication
basically, would make that a lot easier
I have the far more kubernetes-focused case in that we don't use ingress in our clusters, and I'd like developers to be able to wire out routes and autoscaling without having to deploy extra yaml. As an offhand example, we're considering using KubeVela's [https://kubevela.io/docs/cue/component](extensibility feature) to potentially make "app yamls", but that doesn't cover the local dev case.
I'd love to extend tye with support for mahou, because tye makes debugging microservices so much easier, but kubernetes has a very high barrier-to-entry.
What should we add or change to make your life better?
There has been a few issues about publishing with tye to other places than kubernetes, this is something that I'm interested in as well, but more generally, what are the plans for extensibility in tye? From what I've gathered, extensions are currently baked into tye and can't be added without changing the code, atleast not easily (i have not dug super deep into this though so feel free to correct me)
It would be very useful to be able to
Extension points i would like
Why is this important to you?
Tye is a very promising project for us and it would be a shame if it was limited to kubernetes. Many developers have very customized deployment setups that are basically one off solutions, as well as legacy systems that might not use k8 at all. By adding the more extensibility points to tye deveopers can leverage the great stuff already in tye and also use it in more places, and also take pressure off the dev team to support more external stuff and focus on the tye core