Cloud Native 12 min read

What’s New in Argo Workflows 3.6? Deep Dive into Key Features

This article provides a comprehensive overview of Argo Workflows 3.6, covering its core architecture, primary use cases, and detailed explanations of new capabilities such as enhanced CronWorkflow scheduling, UI improvements, controller optimizations, OSS artifact garbage collection, dynamic template references, expression library updates, and CLI usability enhancements.

Alibaba Cloud Native
Alibaba Cloud Native
Alibaba Cloud Native
What’s New in Argo Workflows 3.6? Deep Dive into Key Features

Introduction

Argo Workflows is a CNCF graduated project designed to orchestrate parallel jobs on Kubernetes by running each task in its own container. It is lightweight, highly scalable, and suitable for batch processing, machine‑learning pipelines, infrastructure automation, and CI/CD.

Key Use Cases

Batch processing : declarative definition of large‑scale ETL or reporting jobs.

Machine‑learning workflows : coordinate data preprocessing, model training, hyper‑parameter tuning and deployment, with GPU scheduling.

Infrastructure automation : create/configure K8s resources, perform backup/restore, monitor health.

CI/CD pipelines : integrate build, test, and deployment steps into automated pipelines.

New Features in Version 3.6

CronWorkflow enhancements

Multiple cron schedules per workflow.

Stop strategy to halt scheduling after a failure threshold.

When expression to evaluate a condition before each run.

Example:

apiVersion: argoproj.io/v1alpha1
kind: CronWorkflow
metadata:
  name: cron-workflow-example
spec:
  schedules:
  - "*/3 * * * *"
  - "*/5 * * * *"
  concurrencyPolicy: "Allow"
  stopStrategy:
    condition: "failed >= 10"
  when: "{{= cronworkflow.lastScheduledTime == nil || (now() - cronworkflow.lastScheduledTime).Seconds() > 3600 }}"
  startingDeadlineSeconds: 0
  workflowSpec:
    entrypoint: whalesay
    templates:
    - name: whalesay
      container:
        image: alpine:3.6
        command: [sh, -c]
        args: ["date; sleep 1"]

UI improvements

The Argo UI now shows detailed workflow information, timestamps, artifact directories, and supports Markdown. Users can view execution history and real‑time logs for CronWorkflows and WorkflowTemplates.

Controller enhancements

Workflow archiving uses a queue to improve memory handling.

Parallel Pod cleanup for large retries.

Pod finalizer to avoid premature deletion errors.

Flat workflow parallel parsing for faster large‑workflow processing.

Automatic offload of large parameters.

Seccomp profile defaults to RuntimeDefault for better container security.

OSS Artifacts automatic garbage collection

Configure artifactGC to delete intermediate files from Alibaba Cloud OSS when a workflow completes or is deleted, reducing storage costs.

Example:

apiVersion: argoproj.io/v1alpha1
kind: Workflow
metadata:
  generateName: artifact-gc-
spec:
  entrypoint: main
  artifactGC:
    strategy: OnWorkflowDeletion
  templates:
  - name: main
    container:
      image: argoproj/argosay:v2
      command: [sh, -c]
      args: ["echo \"hello world\" > /tmp/on-completion.txt"]
    outputs:
      artifacts:
      - name: on-completion
        path: /tmp/on-completion.txt
        oss:
          endpoint: http://oss-cn-zhangjiakou-internal.aliyuncs.com
          bucket: my-argo-workflow
          key: on-completion.txt
          accessKeySecret:
            name: my-argo-workflow-credentials
            key: accessKey
          secretKeySecret:
            name: my-argo-workflow-credentials
            key: secretKey
        artifactGC:
          strategy: OnWorkflowCompletion

Template scheduling constraints

Templates can now specify nodeSelector and tolerations to control pod placement.

apiVersion: argoproj.io/v1alpha1
kind: WorkflowTemplate
metadata:
  name: benchmarks
spec:
  entrypoint: main
  serviceAccountName: workflow
  templates:
  - dag:
      tasks:
      - name: benchmark
        template: benchmark
        arguments:
          parameters:
          - name: msg
            value: 'hello'
    name: main
    nodeSelector:
      pool: workflows
    tolerations:
    - key: pool
      operator: Equal
      value: workflows
  - name: benchmark
    script:
      image: python:latest
      command: [python]
      source: |
        print("{{inputs.parameters.msg}}")

Dynamic template references

Templates can be referenced dynamically using parameters, simplifying workflow definitions.

apiVersion: argoproj.io/v1alpha1
kind: Workflow
metadata:
  generateName: hello-world-wf-global-arg-
spec:
  entrypoint: whalesay
  arguments:
    parameters:
    - name: global-parameter
      value: hello
  templates:
  - name: whalesay
    steps:
    - - name: hello-world
        templateRef:
          name: '{{item.workflow-template}}'
          template: '{{item.template-name}}'
        withItems:
        - {workflow-template: 'hello-world-template-global-arg', template-name: 'hello-world'}
    - name: hello-world-dag
      template: diamond
  - name: diamond
    dag:
      tasks:
      - name: A
        templateRef:
          name: '{{item.workflow-template}}'
          template: '{{item.template-name}}'
        withItems:
        - {workflow-template: 'hello-world-template-global-arg', template-name: 'hello-world'}

Expression library updates

New functions for list concatenation and string joining are available.

apiVersion: argoproj.io/v1alpha1
kind: Workflow
metadata:
  generateName: test-expression-
spec:
  entrypoint: main
  arguments:
    parameters:
    - name: expr
      value: "{{= concat(['a','b'], ['c','d']) | join('\
') }}"
  templates:
  - name: main
    inputs:
      parameters:
      - name: expr
    script:
      image: alpine:3.6
      command: ["sh"]
      source: |
        echo result: '{{ inputs.parameters.expr }}'

CLI usability improvements

Argo CLI now supports direct template updates and label‑based filtering.

argo cron update FILE1
argo template update FILE1
argo cluster-template update FILE1
argo template list -l app=test

Quick Start

To submit a workflow, install the Argo CLI, create a YAML definition, and run argo submit my-workflow.yaml. A fully managed, serverless version of Argo Workflows is also offered on Alibaba Cloud Container Service, providing a no‑ops experience with REST API and Python SDK.

Original Source

Signed-in readers can open the original source through BestHub's protected redirect.

Sign in to view source
Republication Notice

This article has been distilled and summarized from source material, then republished for learning and reference. If you believe it infringes your rights, please contactadmin@besthub.devand we will review it promptly.

ci/cdKubernetesworkflow automationArgo WorkflowsCronWorkflow
Alibaba Cloud Native
Written by

Alibaba Cloud Native

We publish cloud-native tech news, curate in-depth content, host regular events and live streams, and share Alibaba product and user case studies. Join us to explore and share the cloud-native insights you need.

0 followers
Reader feedback

How this landed with the community

Sign in to like

Rate this article

Was this worth your time?

Sign in to rate
Discussion

0 Comments

Thoughtful readers leave field notes, pushback, and hard-won operational detail here.