-
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
The argo agent will request two plugin interfaces at the same time for the same task #10304
Comments
@GhangZh Did you configure your plugin port on |
apiVersion: v1
data:
sidecar.automountServiceAccountToken: "false"
sidecar.container: |
args:
- test_plugin_two.py
image: docker.xxx.com/argo-plugins:2023-01-03-16-18
name: test-plugin-two-plugin
ports:
- containerPort: 6789
resources:
limits:
cpu: 500m
memory: 128Mi
requests:
cpu: 250m
memory: 64Mi
securityContext:
runAsNonRoot: true
runAsUser: 65534
kind: ConfigMap
metadata:
labels:
workflows.argoproj.io/configmap-type: ExecutorPlugin
name: test-plugin-two-plugin
namespace: argo |
If a plugin cannot execute a task, it should return nil node. |
I don't think this is very friendly either, it should be executed according to the matching plugin |
This comment was marked as resolved.
This comment was marked as resolved.
and this is very not friendly too. plugin is developed by different team, i dont' think they will consider that whether they should deal with different case ... |
Is it possible that only execute the plugin whose name matches the plugin name in the template? |
how about not creating unnecessary sidecar containers for unused plugins? argo-workflows/workflow/controller/agent.go Lines 271 to 290 in fec39fa
|
@alexec Can I filter unnecessary ExecutorPlugins by plugin value key? |
Yes, this will be really helpful. |
Some executor plugins may be lost, if the workflow spec uses |
Yep, I'm stuck on how to recursively list plugins that use ref in the workflow. |
This seems reasonable. It does not make sense for two plugins to execute the same task. |
Although the agent pod loads many unused plugins, during execution, it is easy to select the corresponding plugin based on the plugin name specified in the template, instead of iterating through all of them. as a workaround? |
Signed-off-by: oninowang <oninowang@tencent.com>
Signed-off-by: oninowang <oninowang@tencent.com>
Signed-off-by: oninowang <oninowang@tencent.com>
Signed-off-by: oninowang <oninowang@tencent.com>
I came across the same issue while working on a solution for #13026 which makes this problem even more relevant, because you may end up with a lot of unnecessary volumes. My worry is that some users may already rely on this undocumented behaviour. For example with the current implementation one custom plugin can serve multiple plugin RPC calls. If we start filtering which plugin will be loaded in the agent pod based on the name alone some workflows may break. |
What's worse is that the plugin actually has two names: one is the name of the executor plugin configmap (without the '-executor-plugin' suffix), and the other is the name of the sidecar container. |
Signed-off-by: oninowang <oninowang@tencent.com>
Signed-off-by: jswxstw <jswxstw@gmail.com>
Signed-off-by: oninowang <oninowang@tencent.com>
If I have two plugins set up at the same time, on ports 4355 and 5678, then the argo agent pod will request the interface of each of these two containers for each task. Is there any way to circumvent this?
test-plugin-two was listening on port 6789, but instead he requested 4355
The text was updated successfully, but these errors were encountered: