Argo Workflows 2.x 全系列版本演进全览:核心功能、修复脉络与升级指引
Argo Workflows 2.x 全系列版本演进全览核心功能、修复脉络与升级指引【免费下载链接】argo-workflowsWorkflow Engine for Kubernetes项目地址: https://gitcode.com/gh_mirrors/ar/argo-workflows本篇技术指南以仓库中的 CHANGELOG-2-x-x.md 为骨架系统梳理 Argo Workflows 从 v2.0.02017 年末到 v2.12.132021 年 8 月近四年的版本演进历程。读者将能掌握 2.x 时代 DAG/Steps 编排模型、工件Artifacts体系、Executor、同步锁、Argo Server、SSO、CronWorkflow、持久化归档等核心能力的引入时间与底层实现位置并以此理解 3.x 架构的继承关系为集群选型、升级规划与排障提供可靠依据。一、2.x 版本时间线从 v2.0.0 到 v2.12.13根据 CHANGELOG-2-x-x.md 的完整记录2.x 系列跨越了 2017 年底至 2021 年年中整体脉络如下版本区间发布时间阶段定位v2.0.0-alpha1 ~ v2.0.02017-11 ~ 2018-02项目奠基Workflow CRD、executor、CLI 雏形v2.1.0-alpha1 ~ v2.1.22018-02 ~ 2018-10编排能力成形全局参数、retry、suspend、DAG 初版v2.2.0 ~ v2.2.12018-08 ~ 2018-10表达式、循环聚合、归档日志、TTL 回收v2.3.02019-04 ~ 2019-05PNS Executor、init 容器、dns/hostNetwork 配置v2.4.02019-08 ~ 2019-12WorkflowTemplate CRD、PodGC、ArtifactRepositoryRefv2.5.02020-01 ~ 2020-02Argo Server、MySQL 持久化、CronWorkflow 时间区v2.6.02020-02 ~ 2020-04API 客户端、归档过滤、go 1.13v2.7.02020-03 ~ 2020-05指标体系、workflowDefaults、GCS 原生工件v2.8.02020-04 ~ 2020-05TLS、数据保留策略、argo stopv2.9.02020-06 ~ 2020-08SSO、webhook 触发、Windows 容器、Mutexv2.10.02020-07 ~ 2020-09Semaphore、creator 标签、CRD 生成、argo node setv2.11.02020-09 ~ 2020-11全局超时、增强 depends、memoization、pod informer 性能优化v2.12.02020-11 ~ 2021-082.x 最终维护线TLS v1.2、Quay 镜像、证书内存化等收尾修复值得注意的是文档开篇即说明自v3.0.0-rc12021-02-08起的变更记录已迁移至 CHANGELOG.md因此本文讨论的功能与修复均以 2.x 时代为准。v2.12.132021-08-18是该系列最后一个补丁版本之后的用户应当升级到 3.x 以获得后续支持。二、编排模型演进Steps、DAG 与增强依赖逻辑2.1 奠基期Steps 与模板抽象v2.0.0-alpha12017-11-16是整个项目的起点其 Selected Changes 记录了第一批骨架能力CLI 与 Workflow CRD 骨架Initial project structure. CLI and Workflow CRD skeleton、Workflow operator 逻辑、S3/Git/HTTP 三类输入工件源、withItems循环与 script 模板等。v2.0.0-alpha2/alpha3 则补全了并行 step 列表表示、sidecar 容器、daemon step 初始支持、nodeSelector、raw 输入工件、activeDeadlineSeconds超时与 exit handler 等基础能力。v2.1.0 时期2018 年 2~4 月编排语义得到实质增强引入全局输出参数与工件、argo retry命令、suspend 模板、Step 级与 workflow 级并行度控制以及DAG 模板的初始支持Initial support for DAG based workflows。从源码结构看这些能力至今仍沉淀在 workflow/controller 目录下的steps.go、dag.go、operator.go等文件中。2.2 循环与聚合withItems / withParam / withSequence循环展开是 2.x 反复打磨的领域v2.1.0-beta1 引入withItems循环Initial withItems loop support与 item map 循环Support looping with item maps并在后续修复中把WorkflowStep.Item从interface{}收敛为结构体以强化校验v2.2.0 引入withSequenceIntroducewithSequenceto iterate a range of numbers in a loop并支持 DAG 模板中的withItems/withParam与参数聚合Support withItems/withParam and parameter aggregation with DAG templatesv2.8/v2.9 期间修复了嵌套 itemsSupport nested items、ItemValue.Type List、以及 withParam 引用全局参数等问题v2.10/v2.11 修复了 JSON 字符串中特殊字符在withItems下的保留问题并降低withItem/withParams的内存占用reduce withItem/withParams memory usage。这些迭代在仓库 examples 中有大量可直接运行的样本例如 loops.yaml、loops-maps.yaml、loops-sequence.yaml、loops-param-result.yaml 与 loops-arbitrary-sequential-steps.yaml。2.3 failFast、continueOn 与增强 dependsDAG 语义在 2.x 中逐步走向成熟v2.4.0 修复了 DAG failFast 挂起问题并让 DAG 支持输出参数/工件v2.5/v2.6 修复了 DAG 中 retry、continueOn 与 onExit 的执行细节v2.9.0-rc1 引入增强 depends 逻辑Enhanced depends logic对应 enhanced-depends-logic.md并在 v2.11.0-rc1 中修复depends 任务不允许以数字开头的校验问题对应 commit Do not allow tasks using depends to begin with a digitv2.11 引入Step 与 Task 级全局超时Step and Task Level Global Timeouttimeouts-step.yaml、timeouts-workflow.yaml 可对照。三、生命周期控制retry、suspend、exit handler、TTL 与 PodGC3.1 retry / resubmit / resumev2.1.0-beta1 引入argo retry以同名重试失败工作流并约定 onExit 相关节点在 resubmit/retry 期间不再执行v2.2.0 引入argo terminate终止但不删除工作流并支持重试时复用成功 stepSupport resubmission of failed workflows with ability to re-use successful stepsv2.5/v2.8 增加了节点级重试Add ability to retry nodes after errors、resubmitPendingPods语义重试时默认重新提交 Pending podv2.9/v2.10 支持从 selector/field-selector 批量 terminate/delete并为重试的 workflow 添加来源标签。3.2 suspend、timeout 与 exit handlersuspend 模板自 v2.1.0 起引入原称 pause 后统一为 suspend并支持 CLI 手动暂停/恢复argo suspend/argo resumeexit handler 在 v2.0.0-alpha3 引入v2.5.0-rc1 将其扩展到 Step 与 DAG 模板Added onExit handlers to Step and DAGv2.7/v2.10 继续修复模板引用场景下的 exit handler 执行问题。相关实现位于 workflow/controller/exit_handler.go示例见 exit-handlers.yaml超时语义activeDeadlineSeconds容器/脚本级自 v2.0 起支持v2.5.0-rc1 修复了 workflow 级超时Fix workflow level timeoutsv2.10 起 child pod 会严格遵循maxDurationEnsure child pods respect maxDuration。3.3 TTL 与 PodGCTTLSecondsAfterFinished与对应回收控制器在 v2.2.0 引入Add TTLSecondsAfterFinished field and controller to garbage collect completed workflowsv2.5.0-rc1 增强为可按 Succeeded/Failed/Error 分别配置对应 ttl.go 及 gc-ttl.yamlPodGC在 v2.4.0-rc1 引入Introduce podGC strategy for deleting completed/successful podsv2.10 修复了 onSuccess 策略下 Running pod 未回收的问题volume GC 策略按不同策略回收 PVC在 v2.12.0-rc1 加入Support different volume GC strategies。四、工件Artifacts体系存储后端、归档与仓库引用4.1 存储后端持续扩展工件存储能力是 2.x 覆盖最广的功能面v2.0.0-alpha1 即有 S3、Git、HTTP 三类输入工件源alpha2 增加 GCP 支持、artifact 输出参数v2.1.0-alpha1 增加 Artifactoryv2.3.0 支持 HDFS 工件Support HDFS Artifactv2.4.0 支持 raw 输入工件与archive策略含禁用 tar.gz 的能力v2.5.0 支持 zip 输入工件解压Decompress zip file input artifacts、可选的输入工件optional input artifacts见 input-artifact-raw.yaml 等示例v2.7.0-rc3 增加原生 Google Cloud Storage 支持Native Google Cloud Storage support for artifactinput-artifact-gcs.yamlv2.8.0-rc1 增加阿里云 OSSAdd support for Alibaba Cloud OSS artifactinput-artifact-oss.yaml与 Azureinput-artifact-azure.yaml。4.2 ArtifactRepositoryRef 与归档策略v2.2.0 引入keyPattern/keyFormat配置与日志归档到工件仓库能力Add ability to archive container logs to the artifact repository随后支持按模板决定是否归档日志v2.4.0-rc1 引入WorkflowSpec.ArtifactRepositoryRef在 workflow 命名空间内解析 ConfigMap对应 artifact-repository-ref.mdv2.9.0-rc1 为其增加默认名称v2.10.0-rc1 引入 artifact 归档显式策略Explicit archive strategy与 HTTP artifact 请求头支持Allow HTTP artifact load to set request headersinput-artifact-http.yaml。五、Executor 演进Docker、K8sAPI、PNS 与 WindowsExecutor 架构贯穿整个 2.xv2.0 时代以 Docker executor 为主通过绑定/var/run/docker.sock执行docker wait/docker cpv2.2.0 引入kubelet executorSupport additional container runtimes through kubelet executorv2.3.0-rc1 引入PNSProcess Namespace SharingexecutorImplement support for PNS executor其后续修复包括进程命名空间共享 pod 的 sidecar 终止、cri-containerd 下/proc/{pid}/cgroup的容器 ID 解析、PNS 下完整日志捕获、以及 SIGKILL 前的 sleep 移除等v2.8.0-rc1 引入K8sAPI executorSupport for K8s API based Executor并在后续版本修复其KillContainer实现与工件选项v2.10.0-rc1 增加Windows 节点上的 Docker executor 支持Add support for Docker workflow executor for Windows nodes随后又补充 Windows 输出工件修复v2.12 系列则集中修复了 executor 的 x509 证书、GODEBUGx509ignoreCN 与 TLS 强制 ≥1.2 等安全问题。Executor 相关源码集中在 workflow/executor运行时选择可通过 controller 配置与 CLI 参数控制。六、并发与同步原语Mutex 与 Semaphore2.x 后期最重要的多租户能力是同步机制Mutex于 v2.9.0-rc1 引入feat(controller): Mutexes用于互斥执行Semaphore于 v2.10.0-rc1 引入feat: Workflow Semaphore Support用于并发上限控制同步控制器与锁实现位于 workflow/syncmutex.go、mutex_limit.go、semaphore.go、database_mutex.go、database_semaphore.go等支持基于 ConfigMap 或数据库MySQL/Postgres的锁后端后续版本修复了锁释放Mutex not being released on step completion、semaphore 锁更新后唤醒等待队列、releaseAllWorkflowLockspanic、以及在 DAG 调用流中同步锁未释放Fixes #4046等关键缺陷示例见 synchronization-mutex-wf-level.yaml、synchronization-mutex-tmpl-level.yaml、synchronization-db-semaphore-wf-level.yaml若不存在则以 synchronization-db-wf-level.yaml 等为参照完整概念见 synchronization.md。七、服务端能力Argo Server、SSO、RBAC 与 Webhook7.1 Argo Server 与 APIv2.5.0-rc1 是服务端时代的开端新增argo server命令、CronWorkflow CRDSupport for scheduled Workflows with CronWorkflow CRD、MySQL 持久化支持Adds support for MySQL、audit 日志与 workflow-level 参数 UI 编辑v2.6.0 系列将 CLI 迁移到 API 客户端pkg/apiclient并新增argo auth token、Basic Auth、--token参数等认证方式v2.8/v2.9 增加 TLS 支持feat: Add TLS support、CSP/HSTS/X-Frame-Options 安全响应头、Swagger UI、按字段过滤响应field selection与 artifact 直接下载大工件场景。7.2 SSO 与 RBACSSO自 v2.9.0-rc1 起支持Add support for SSOv2.10/v2.11 完善了 SSO 超时配置、clientID 从 Secret 读取、SSORBAC 的邮箱支持、JWE token 由 Argo Server 自签以及登录后跳转回原始 URLRBAC for SSO在 v2.12.0-rc1 落地Enable RBAC for SSO。相关文档见 argo-server-sso.md、argo-server-auth-mode.md。7.3 Webhook 触发v2.9.0-rc1 引入WorkflowEventBinding可通过 Webhook 触发工作流Trigger workflows from webhooks并在此后修复了事件载荷 marshal、webhook 权限缺失等问题。事件绑定相关文档见 webhooks.md示例见 examples/workflow-event-binding。八、持久化、归档与大工作流offloading、Workflow Archive2.x 面向生产规模引入的存储体系包括Workflow Archive长期归档v2.2.0 起支持基于 SQL 的归档persist/sqldbv2.8.0-rc2 增加数据保留策略Implement data retentionv2.9.0-rc3 增加 ArchiveLabelSelector 过滤归档Offloading节点状态外置为解决 etcd 1M 资源大小限制v2.2.0 起Error workflows which hit k8s/etcd 1M resource size limit2.5/2.6 将大工作流节点状态卸载到数据库offload Node Status in Get and List api callv2.6.0-rc1 将 offloaded 节点类型改为 JSON 以支持 1GB 数据并持续修复 offload 数据清理与重试Retry transient offload errors、Failure tolerant workflow archiving and offloading数据库后端支持 MySQL最小版本 5.7.8与 Postgresv2.5.0-rc1 修复了 SSL 数据库连接v2.7.0-rc1 修复了 Postgres 的 SSL Mode 配置v2.10.0-rc1 支持默认数据库端口。相关代码见 persist/sqldbworkflow_archive.go、offload_node_status_repo.go、migrate.go等文档见 workflow-archive.md 与 offloading-large-workflows.md。九、CLI 能力扩展与可观测性9.1 CLI 命令族2.x 期间 CLI 从最初的submit/list/get/lint扩展到完整命令族对应今日 cmd/argo/commands 与 docs/cli 中的全部命令生命周期argo submit、argo get、argo list、argo delete、argo terminatev2.2.0、argo stopv2.8.0-rc1、argo wait、argo watchv2.2.0、argo logs、argo retry、argo resubmit、argo resume/argo suspend、argo node setv2.10.0-rc1、argo version无 KUBECONFIG 也可运行等模板族argo template与argo cluster-template的 create/delete/get/lint/list/updateCronargo cron createv2.5 起支持--schedule与提交选项、argo cron suspend/resume、argo cron backfill等归档argo archive list/get/delete、argo archive list-label-keys/list-label-values交互细节--no-utf8v2.12.0-rc1、--latestv2.9.0-rc2、--chunk-sizev2.9.0-rc1、label/field-selector 批量操作、shell 补全、ARGO_HTTP1支持 HTTP/1 请求等。9.2 指标与可观测性v2.2.0 引入Prometheus 指标Prometheus metrics and telemetry后持续完善指标命名校验、resource duration 计算v2.7/v2.9 的{{resourcesDuration}}变量、workflow/node 级别进度跟踪Track N/M progress、队列指标Expose certain queue metrics等v2.11.0-rc1 为 workflow-controller 引入结构化日志v2.12.0-rc3 增加毫秒级时间戳指标实现见 workflow/metrics配置见 metrics.md。十、默认值、模板引用与配置管理WorkflowDefaultsv2.7.0-rc1 引入Allow for setting default configurations for workflowsv2.7.0-rc3 扩展为完整 Workflow 对象。该配置在 config/config.go 中以WorkflowDefaults *wfv1.Workflow字段定义values that will apply to all Workflows from this controller, unless overridden on the Workflow-levelWorkflowTemplate / ClusterWorkflowTemplatev2.4.0-rc1 引入 WorkflowTemplate CRDv2.8.0-rc1 引入 ClusterWorkflowTemplateCluster scoped workflow templatev2.9.0-rc1 支持顶层 workflowTemplateRefSupport Top level workflow template referencev2.10/v2.11 持续修复模板合并顺序、默认值合并与跨命名空间引用问题memoization缓存v2.11.0-rc1 支持 Step 级缓存Step level memoization并增加MaxAge缓存有效期Add MaxAge to memoization示例见 memoize-simple.yaml自定义指标v2.7.0-rc1 支持 custom/step-level/usage 指标Custom, step-level, and usage metrics。十一、升级与维护建议从 2.x 变更日志可以提炼出对生产用户的几点实践建议2.x 已进入维护期3.0.0-rc1 之后的新功能与安全修复均只进入 CHANGELOG.md 对应的 3.x 主线v2.12.13 是 2.x 最终版本长期使用者应规划升级到 3.x。版本节奏遵循 Go 与 K8s 依赖升级2.x 期间 Kubernetes 依赖从 v1.10 逐步升级到 v1.14、Go 从 1.9 升级到 1.13升级前应核对目标版本对应的 K8s 兼容范围可参考 docs/tested-kubernetes-versions.md。关注 2.x 末期的稳定性修复v2.12.x 中包含了大量锁释放、executor 证书、creator 标签 DNS 合规63 字符截断、对象名长度校验63 字符拒绝等生产级修复若停留在更早的 2.11 或 2.10建议至少在 2.12 最新补丁上运行。从 2.x 迁移 3.x 时重点核对模板引用合并、同步锁语义、SSO/RBAC、归档与 offloading 数据库 schemapersist/sqldb/migrate.go等跨大版本变化点。结语CHANGELOG-2-x-x.md 不仅是版本列表更是 Argo Workflows 设计哲学与工程演进的缩影从 v2.0 的 CRD executor 雏形到 v2.9/v2.10 的 Mutex/Semaphore 与 SSO再到 v2.12 的安全收尾2.x 为 3.x 的架构controller/agent 分离、模板解析重构、持久化增强奠定了全部核心抽象。无论你是初次接触 Argo Workflows还是正在维护 2.x 集群这份变更日志连同本仓库的 workflow/controller、workflow/sync、persist/sqldb 等源码都是理解其内部机制与升级路径的第一手资料。【免费下载链接】argo-workflowsWorkflow Engine for Kubernetes项目地址: https://gitcode.com/gh_mirrors/ar/argo-workflows创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
上一篇/下一篇内容由系统自动关联
返回资讯列表 →