-
Notifications
You must be signed in to change notification settings - Fork 3.2k
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
Plugins #5025
Comments
I'd hope plugins can evolve as independently as possible. Did you ever consider REST/gRPC plugins? It might share some of the issues you mentioned with http templates, but now it's clear they will talk to a single configured trusted server, so some problems like auth and user permissions no longer apply. |
Do you mean this? |
I was only thinking about the problem architecturally and I didn't know hashicorp/go-plugin before.
(referenced from the reddit link) The limitation on golang plugin seems unacceptable as a plugin purpose. EDIT: note, please keep in mind I have limited experience on microservice systems with my own experience. Just talking about my current thoughts and they can be wrong. |
Golang Plugin (GP) vs HashiCorp Plugin (HP) Aside: I think we should consider supporting both. Build
HP wins by a huge margin. Performance
GP wins. Language I believe that HP can be written in non-go. HP wins. Boilerplate
GP wins. Callback Callbacks are trivial in GP. Not sure about HP. GP wins. |
So, talking about use-cases, it seems GP can be a good fit for first party maintained optional plugins. |
I think we can and should build an RPC (or JSON RPC) plugin as a Go plugins. |
I'm really happy with my PoC. You can build your plugins as a Golang plugin. One of the Golang plugins will proxy requests via JSON-RPC. You can add a sidecar to the workflow-controller that services the RPC requests, so the deployment of the plugin is trivial. I think JSON-RPC will work for most use cases, but you can always write a Golang plugin if you want. |
Use case: Problem: Solution: Ability for a step to run a small python script in another context (workflow-manager, or dedicated). |
@therealnb do you think #795 work for your use-case? You can configure steps that send a request to your own server, and your server will be able to do whatever things you want. A limitation could be that this is not suitable for steps that take some time to execute. |
That's fine. #795 would help in our case. |
It would be good to have a system of plugins that do the following:
Additionally, the ability for users to create plugis would allow us to grow the ecosystem.
Golang Plugin
Golang provides a plugin system, but it very constrained as to how you build and package them:
This means effectively plugins must be built in the same source code repo.
However, if we provide a way to package your plugin, they are obviously the fastest and most powerful to write plugins.
HashiCorp Go Plugins
Golang provides an RPC library. HashCorp has formalized this into a way to write bi-directional plugins.
References
Tekton Custom Job:
Problems with Golang plugins:
https://www.reddit.com/r/golang/comments/b6h8qq/is_anyone_actually_using_go_plugins/
The text was updated successfully, but these errors were encountered: