
云原生容器编排工作流自动化任务调度后端【免费下载链接】argo-workflowsWorkflow Engine for Kubernetes项目地址https://gitcode.com/gh_mirrors/ar/argo-workflows点击查看免费下载argo list是 Argo Workflows 命令行工具CLI中最常用的查询命令之一用于列出当前命名空间或全命名空间下的 Workflow 资源。本文以 docs/cli/argo_list.md 为骨架结合 cmd/argo/commands/list.go、cmd/argo/commands/list_test.go、util/printer/workflow-printer.go 等源码系统讲解该命令的全部选项、底层实现原理与实战组合用法帮助你快速定位运行中、已完成、异常退出的工作流并输出适合脚本解析的表格、JSON 或 YAML 结果。命令语法与基本用法argo list的基本语法非常简单不需要任何位置参数argo list [flags]其底层由 Cobra 命令NewListCommand()定义见 cmd/argo/commands/list.go执行流程为建立 API 客户端 → 调用listWorkflows()组装过滤条件并请求 Workflow Service → 通过printer.PrintWorkflows()渲染输出。在不带任何参数时命令列出当前命名空间下的所有工作流默认输出为带表头的表格NAME STATUS AGE DURATION PRIORITY MESSAGE表格各列由 util/printer/workflow-printer.go 中的printTable()生成依次为工作流名称、状态含智能推断如Running (Suspended)、Failed (Terminated)、创建时长AGE、运行时长DURATION、优先级PRIORITY取spec.priority未设置时为 0以及状态消息MESSAGE。核心过滤选项逐一详解按命名空间与运行状态过滤选项缩写说明--all-namespaces-A列出所有命名空间下的工作流表格会额外显示 NAMESPACE 列--running无仅显示运行中的工作流与--completed互斥--completed无仅显示已完成的工作流与--running互斥--status strings无按状态过滤支持逗号分隔多个值如--status Running,Pending--resubmitted无仅显示由其他工作流重新提交resubmit产生的工作流--prefix string无按工作流名称前缀过滤实现原理这些选项并不是在客户端拿到全量列表后做内存过滤而是在底层转换成 Kubernetes 标签选择器Label Selector下发给服务端见 cmd/argo/commands/list.go--status转换为workflows.argoproj.io/phase in (Pending,Running)形式的In条件--completed追加workflows.argoproj.io/completedtrue--running追加workflows.argoproj.io/completed!true--resubmitted追加标签workflows.argoproj.io/resubmitted-from-workflow存在性条件。上述标签常量定义于 workflow/common/common.go由 workflow-controller 在创建工作流时自动打标。--completed与--running同时使用时源码会直接返回错误--completed and --running cannot be used together见 list.go。按标签与字段过滤选项缩写说明--selector string-l标签查询Label query支持、、!多个条件用逗号分隔--field-selector string无字段查询Field query支持、、!服务端仅支持有限字段典型用法# 列出同时带有 label1value1 和 label2value2 两个标签的工作流 argo list -l label1value1,label2value2 # 按字段过滤例如按工作流名称 argo list --field-selector metadata.namemy-wf--selector会被labels.Parse()解析后并入最终的LabelSelector--field-selector则直接透传给服务端ListOptions.FieldSelector见 list.go。按时间窗口过滤选项说明--since string仅显示创建时间晚于指定相对时长的最近工作流如10m、3h、1d--older string仅显示完成时间早于指定相对时长的已完成工作流与标签过滤不同这两个时间选项是在客户端拉取列表后进行内存过滤的。源码list.go使用argotime.ParseSince()解析相对时长并调用定义于 pkg/apis/workflow/v1alpha1/workflow_types.go 的三个谓词函数WorkflowCreatedAfter(t)metadata.creationTimestamp晚于tWorkflowFinishedBefore(t)status.finishedAt早于tWorkflowRanBetween(start, end)创建与完成时间均落在区间内。当--since与--older同时指定时等价于“在这段时间窗口内运行过”的区间查询只指定其一则分别应用对应谓词。相关边界行为如未完成工作流的WorkflowFinishedBefore恒为 false可在 pkg/apis/workflow/v1alpha1/workflow_types_test.go 的单元测试中验证。分页与头部控制选项说明--chunk-size int以分块方式获取大列表而非一次性返回全部传 0 表示禁用分页--no-headers不打印表头默认打印表头--chunk-size对应 KubernetesListOptions.Limit。源码在循环中逐页调用ListWorkflows()并通过wfList.Continue令牌继续拉取直到服务端返回空的 continue 字段为止见 list.go。这对于大规模集群中避免单次响应过载非常有用。输出格式-o / --output-o, --output支持四种取值name、json、yaml、wide默认空字符串表示标准表格。取值说明典型场景默认标准表格NAME、STATUS、AGE、DURATION、PRIORITY、MESSAGE日常巡检wide在标准表格基础上追加P/R/CPending/Running/Completed 节点数与PARAMETERS工作流入参两列需要观察参数与节点状态的排障场景name每行仅输出一个工作流名称脚本循环处理如for wf in $(argo list -o name)json输出完整工作流列表的 JSON程序化消费、对接自动化平台yaml输出完整工作流列表的 YAML人工审阅、与 kubectl 风格对齐对应实现位于 util/printer/workflow-printer.gojson使用json.MarshalIndent缩进输出yaml通过sigs.k8s.io/yaml序列化。列表为空时json/yaml输出[]表格模式输出No workflows found。此外源码通过displayFields()见 list.go做了字段投影优化输出为name时仅请求metadata,items.metadata.name,items.metadata.creationTimestamp,items.status.finishedAt这些必要字段默认表格模式只请求metadata、items.metadata、items.spec、items.status.phase/message/finishedAt/startedAt/estimatedDuration/progress等展示所需字段输出为json、yaml、wide时不做裁剪拉取完整对象。这意味着argo list默认情况下传输数据量很小适合在拥有大量工作流的集群中频繁使用。官方示例全集以下是 docs/cli/argo_list.md 中给出的全部官方示例逐条可直接复制运行# 列出当前命名空间的所有工作流 argo list # 列出所有命名空间的工作流 argo list -A # 列出所有运行中的工作流 argo list --running # 列出所有已完成的工作流 argo list --completed # 列出最近 10 分钟内创建的工作流 argo list --since 10m # 列出 2 小时之前就已完成的工作流 argo list --older 2h # 以更详细的形式列出展示参数等信息 argo list -o wide # 以 YAML 格式列出 argo list -o yaml # 列出同时带有两个标签的工作流 argo list -l label1value1,label2value2组合用法示例单个选项之外各过滤条件可以自由组合例如# 查看最近 1 小时创建、仍处于运行状态的工作流 argo list --running --since 1h # 按状态过滤多个取值逗号分隔 argo list --status Running,Pending # 按名称前缀筛选并以 name 格式输出便于脚本处理 argo list --prefix myapp- -o name # 全命名空间、宽表输出观察每个工作流的节点与入参 argo list -A -o wide排序与输出顺序listWorkflows()在返回前会对结果调用sort.Sort(workflows)见 list.go保证输出顺序稳定。从 cmd/argo/commands/list_test.go 的Names测试用例可以看到工作流按创建时间倒序排列——最近创建的工作流显示在最前面便于快速定位最新提交的任务。与父命令选项的配合argo list继承自argo根命令的大量连接与认证选项常用组合包括# 指定 API Server 地址等价于设置 ARGO_SERVER 环境变量 argo list -s localhost:2746 # 指定命名空间等价于 -n argo list -n my-namespace # 使用 Argo Server 的 TLS 连接默认开启可用 -e 控制 argo list -e # 通过 HTTP/1 而非 gRPC 客户端访问 argo list --argo-http1 # 为所有请求附加自定义 Header仅在 HTTP/1 模式下生效 argo list -H Authorization: Bearer xxx # 仅匹配特定 controller 实例instanceid 标签多租户场景下隔离查询 argo list --instanceid my-instance这些选项的完整列表见 docs/cli/argo.md实际解析逻辑位于 cmd/argo/commands/root.go。多数连接参数都支持对应的环境变量如ARGO_SERVER、ARGO_HTTP1、ARGO_INSTANCEID、ARGO_SECURE、ARGO_BASE_HREF适合在 CI 脚本或容器环境中通过环境变量统一注入。源码级补充测试用例佐证cmd/argo/commands/list_test.go 通过 mock 的WorkflowServiceClient对listWorkflows()的每个过滤分支做了单测验证包括空列表与正常列表status生成workflows.argoproj.io/phase in (Pending,Running)选择器completed/running/resubmitted各自的标签选择器prefix前缀过滤mock 返回 3 个工作流仅 1 个名称以foo-开头since/older时间过滤name输出模式下字段投影与排序顺序。这些测试用例本身就是理解该命令过滤逻辑的最佳参考。小结argo list通过“服务端标签/字段过滤 客户端时间与前缀过滤 字段投影 多格式输出”的组合设计兼顾了大规模集群下的查询效率与脚本化使用的灵活性。日常巡检用默认表格或-o wide脚本自动化用-o name/-o json/-o yaml排障定位用--running/--status/--since/--older组合即可覆盖绝大多数工作流查询场景。赞分享云原生容器编排工作流自动化任务调度后端【免费下载链接】argo-workflowsWorkflow Engine for Kubernetes项目地址https://gitcode.com/gh_mirrors/ar/argo-workflows点击查看免费下载相关推荐Argo Workflows argo template get 命令详解查询工作流模板详情与多格式输出Argo Workflows argo template get 命令详解查询工作流模板详情与多格式输出 argo template get 是 Argo W云原生容器编排工作流自动化任务调度后端Argo Workflows argo template list 命令完全指南列出与管理工作流模板Argo Workflows argo template list 命令完全指南列出与管理工作流模板 Argo Workflows 是 Kubernetes云原生容器编排工作流自动化任务调度后端Argo Workflows 归档工作流查询指南argo archive get 命令全解析Argo Workflows 归档工作流查询指南 argo archive get 命令全解析 归档工作流Archived Workflow是 Argo云原生容器编排工作流自动化任务调度后端上一篇【亲测免费】 部署 Dify 到 Kubernetes下一篇Jasmine用户登录与注册解锁完整功能权限的终极指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考