我渴望的Tekton用例很简单:
- 成功的pipelineruns应该在x天后删除
- 失败的pipelineruns不应该被自动删除。
我计划在初始清理任务中进行清理。在我看来,这似乎比注解或cronjob方法更好。只要没有建立新的东西,就没有什么需要删除的。
直接方法:
*失败:tkn delete
似乎没有太大帮助,因为它不区分成功与否。
*失败:oc delete --field-selector ...
不包含隐藏性好但表现力强的字段status.conditions[0].type==Succeeded
间接方法(首先过滤一个podname列表,然后删除它们-一点也不优雅):
*Failed:-o=jsonpath...
过滤输出的代价似乎很高,条件数组似乎破坏了语句,所以(为什么?!)一切都归还了……不可行
- 我的最后一次尝试是
tkn pipelineruns list --show-managed-fields
,并使用sed/awk解析它。很恶心但至少它做了我想让它做的事而且效率很高但是,当输出的设计在未来的版本中发生变化时,它可能会变得脆弱。
你有更好更优雅的方法吗?多谢了!
2条答案
按热度按时间rxztt3cl1#
在有更好的解决方案之前,我将发布我目前的解决方案(及其缺点):
我们的清理任务现在是围绕以下解决方案构建的,评估
tkn pipelineruns list
返回的表:优点:
缺点:
总而言之,我希望这个解决方案能坚持到有一些更有用的客户端功能可以直接过滤所需的信息。实际上,我希望像
tkn pipelineruns delete --state successful --period P1D
这样的东西。时间段的符号来自ISO8601。ukxgm1gy2#
为了完整起见,我在这里粘贴了kubectl/oc native命令,供我们这些没有tkn cli的人使用。根据需要更换
target-namespace
。删除失败的管道运行:
删除成功的管道运行: