KubeArchive adoption discussion #1239
Replies: 9 comments 23 replies
-
|
Hello. One of the Tekton Results maintainers here. And I'm definitely not a KubeArchive expert, so please excuse any inadvertent inaccuracies in the details below. I want to touch on the comparison with Tekton Results and why one should not be a replacement solution of the other. They simply have different focus and purpose. KubeArchive is generic solution and supports any Kubernetes objects equally (more or less). It is not limited to a certain types of resources and one can use it to store any Kubernetes resource. Tekton Results specializes in Tekton execution objects and has deeper insight of those objects, beyond the generic object properties (name, labels, annotations). That is what allows Results more flexible policies for storing and retaining objects out of the box. For example one can decide not to store “canceled” pipelines. Or have different retention policies for "successful" and "failed" PipelineRuns. Being focused on specific types of objects and sharing code with Tekton Pipelines allows seamless version management (PipelineRun v1beta1, v1, v2, etc.) and that is done from a single place. The existing data is always transformed by the service in a compatible way, starting few the newest object version and going backwards. For a user, Pipeline execution is a Pipeline execution regardless of PipelineRun version used. It abstracts those details from the user. With a generic solution, each client should track and manage the different versions of the stored objects, by either writing transformers or managing the different versions separately. For Tekton Results we have already planed to extend it beyond the Tekton execution objects and capture both the context and artifacts of an execution. Yet, a PipelineRun and a TaskRun will remain the primary objects and used as references to those additional objects. This will allow us to evolve and expand the project while also keeping our primary focus on Tekton. With that said, I believe both projects have their specific use cases. If users mostly care about Tekton objects and prefer the extra flexibility of storing and retention policies and seamless transition of Tekton objects with backward compatibility, then Tekton Results is the right service for them. If they prefer flat support for any type of Kubernetes object instead, then KubeArchive is the right solution for them. On a side note, I was not able to attend the Tekton working group call when KubeArchive was presented, but I disagree with the description "Next generation of Tekton Results". As I tried to explain my point above, those are two solutions with different focus, strengths and weaknesses. |
Beta Was this translation helpful? Give feedback.
-
|
Chiming in as an effective "emeritus maintainer" of Tekton Results and the "parent" of KubeArchive. When I designed KubeArchive 3+ years ago, it was a generalized form Tekton Results. Several pieces of the architecture tried to capture "lessons learned" at that time:
Both projects have evolved, and that is a good thing! And @enarha is right - at present they do have different focus. However some of the concerns around Tekton specifics are not necessarily true, which I will address below:
Kubearchive uses CEL expressions to set policies on when an object is archived and/or deleted (on-cluster) - such a configuration is feasible, though Tekton Results can provide a stronger developer experience in this regard. Kubearchive currently doesn't have a mechanism for controlling long-term data retention, however I do not see a strong reason why this can't be implemented in some form. Moreover, this retention can be defined through Kubearchive CRDs, versus the ConfigMap-driven approach of the retention policy agent.
I agree this is a key differentiator for Tekton Results, and is something that would be exceptionally difficult for KubeArchive to provide in a generic fashion. Multi-version CRDs would need some kind of "transformer" component that can be plugged in, such as a conversion webhook. When I introduced KubeArchive to k8s apimachinery maintainers, they were very clear up front that the project should ignore CRD API conversion.
I don't see this documented as a feature request. Is this written down somewhere? I am curious what is meant by "context" and "artifacts". |
Beta Was this translation helpful? Give feedback.
-
|
Does Kubearchive expose any API to query logs specific to an Archived PR/TR ? If so please share some references cc: @hectormartinezdev |
Beta Was this translation helpful? Give feedback.
-
I'm not sure why KubeArchive would want to implement this anyway. This is a database function, and by design KubeArchive isn't in the database business. It's database agnostic. To me this is the job of a database admin, similar to backups. |
Beta Was this translation helpful? Give feedback.
-
|
@vdemeester Please find below the responses based on my assessment: Questions for the Community Do we see value in adopting KubeArchive for the Tekton ecosystem
What specific problems would this solve?
What are the benefits over current solutions (e.g., TektonResults)?
What level of integration makes sense?
Should it replace or complement existing solutions?
Users with pure Tekton can leverage Tekton Results. Users running multi-project environments (Tekton + Argo + Shipwright) benefit from Kubearchive's unified archival. What changes would be needed in Tekton components?
cc: @maruiz93 |
Beta Was this translation helpful? Give feedback.
-
|
I feel even after the adoption of KubeArchive, we will need a Tekton Results v2 to address some Tekton-specific APIs which leverage the KubeArchive DB. Logging can be offloaded to kubearchive, but for better results, I think we need it in v2 Tekton Results. |
Beta Was this translation helpful? Give feedback.
-
|
I want to clearly state my position as a Tekton maintainer: Why Results is the right foundation for TektonWhen a user's pipeline fails at 2am, they need to quickly find that As @adambkaplan acknowledged, version management would be A generic archival tool treats a PipelineRun as just another Kubernetes Results has room to growThere are clear areas where Results can evolve:
These are investments in purpose-built Tekton tooling, not reinventing KubeArchive is valuable — but doesn't belong in tektoncdKubeArchive solves a real problem: generic Kubernetes resource archival. The risk of replacing ResultsThere are existing users depending on Tekton Results today. Replacing Recommendation
I'd welcome other perspectives, but this is my recommendation. |
Beta Was this translation helpful? Give feedback.
-
|
It's worth pointing out that Argo Workflows has the exact same problem and implemented their own solution (which precedes Tekton Results): Workflow Archive. I think this bolsters the argument for Kubearchive to live as an independent project. Any plan for "replacement" would likewise have substantial migration impact, as both projects have enormous end-user communities/adopters. |
Beta Was this translation helpful? Give feedback.
-
|
Both Kubearchive and Results are more complementary to each other than at odds as we have already established. If both tools architecturally are going to move in the same direction and look the same, one generic and one specific, solving the same/similar problems, then it makes sense for Kubearchive to use Tekton Results packages and help improve them without reinventing the wheel, bolstering collaboration, as both tools are also used in the same context. Once Kubearchive is finally at par with Tekton Results AND can be extensible to do what Results does: we could reevaluate whether maintaining both is the right investment for the community. But from the discussion thread above the main blockers seem to be the resource relationship awareness, log retrieval and aggregation, bundling conversion logic, then query helpers, log backends per domain. It's a long serial chain, which Kubearchive will also have to implement, which can be reused from Results. |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
-
Background
KubeArchive was presented at a Tekton working group meeting in December
2025. This discussion is to gather community input on whether and how
the Tekton project should adopt or integrate with KubeArchive.
What is KubeArchive?
KubeArchive is a
Kubernetes utility designed to:
information
Key Use Cases
Shipwright and Tekton
would otherwise be deleted for performance or storage reasons
Relationship to Tekton
KubeArchive was inspired by Tekton Results and addresses similar use
cases around preserving pipeline run data and build artifacts after the
cluster resources are deleted.
Options for Adoption
The community could consider several approaches:
1. Official Recommendation
2. Native Integration
tektoncd{.verbatim}organization
3. Documentation & Examples
4. Relationship with Tekton Results
Tekton Results
5. No Action
Questions for the Community
ecosystem?
Results)?
Next Steps
Based on community feedback, we should:
consensus to move forward
References
Repository
if available]
Call for Feedback
Please share your thoughts, concerns, and questions. This is an
important decision for the Tekton community, and we want to ensure all
perspectives are considered.
cc @tektoncd/core-maintainers for visibility
Beta Was this translation helpful? Give feedback.
All reactions