-
Notifications
You must be signed in to change notification settings - Fork 55
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
[Spike] Discussion on how to trim down Tekton/Argo go pkg to resolve go.mod conflicts. #329
Comments
Hey I just saw this issue right now. From a technical level, we are able to run both Argo and Tekton using the same go.mod. However, the following list of packages are in a high risk of future dependency conflicts.
For all the custom task features (such as loop with parallelism, sub-dag, looping on thousand plus iterations, KFP driver/publisher optimization), we would need to use the Knative package because we need to run the Knative controller code from Tekton in this case. So these packages should stay with KFP-Tekton because custom tasks can be built from importing golang package instead of syncing upstream. As for the Tekton golang compiler/executor engine, KFP only needs the Tekton APIs and informers to create and watch Tekton Pipelineruns. Therefore, if we can remove the Knative dependency from the Tekton API package, KFP can reduce the risk of Tekton using a incompatible golang version. Another benefit is KFP can reduce the list of third party dependencies which can lower the image size and potential incapable licenses. |
Thank you @Tomcli I will go over this. This is very helpful.
So this sounds like the crux of what remains and needs to be done yes? The rest of the knative dependency collisions happen in all the custom task controllers' logic right? Which you are proposing to keep in kfp-tekton repo and import as packages. Am I understanding this correctly? |
I think we only want to push the Tekton compiler code upstream (under /backend/v2/compiler and related common packages). All the custom task controllers code for KFP-Tekton can stay in KFP-Tekton because they are mostly independent images. |
After some investigation, removing the Knative dependency would be pretty difficult for current Tekton implementation because Tekton Pipelinerun.status struct is from Knative. This is definitely a nice to have as I see the Knative package is more of a risk than benefit because the contributions in the Knative community is going down. |
Okay thanks @Tomcli that's good to know. I'll look into seeing if we can inquire with the tekton devs about this.
Given that most of the v2 tekton custom task controllers leverage the knative controller frameworks -- do you fore see this being another point of concern? |
From the controller perspective, since the Tekton core controller is using Knative, I don't think we can mitigate the risk even if we change all our custom task controllers to not use Knative. Since custom task controllers are only built for Tekton, we are less likely to have package conflicts when we import the upstream code for optimizing the driver/publisher features. The risk I see in Knative is more on its data struct. Since major part of the Tekton Status inherited from the Knative package, when we want to have KFP V2 supporting both Argo and Tekton data struct on the same server, any major conflict on the Kubernetes/go-client spec could break the compatibility. |
Migrated to Jira: https://issues.redhat.com/browse/RHOAIENG-1661 |
Review the pain points associated with conflicting tekton/argo packages:
Original ticket: kubeflow/kfp-tekton#1240
TektonCD issue: tektoncd/pipeline#6483
Investigate where we can help in pushing this forward as it's identified as a major blocker for getting kfp-v2 merged into upstream kfp.
Acceptance criteria:
The text was updated successfully, but these errors were encountered: