Skip to content

NimTechnology

Trình bày các công nghệ CLOUD một cách dễ hiểu.

  • Kubernetes & Container
    • Docker
    • Kubernetes
      • Ingress
      • Pod
    • Helm Chart
    • OAuth2 Proxy
    • Isito-EnvoyFilter
    • Apache Kafka
      • Kafka
      • Kafka Connect
      • Lenses
    • Vault
    • Longhorn – Storage
    • VictoriaMetrics
    • MetalLB
    • Kong Gateway
  • CI/CD
    • ArgoCD
    • ArgoWorkflows
    • Argo Events
    • Spinnaker
    • Jenkins
    • Harbor
    • TeamCity
    • Git
      • Bitbucket
  • Coding
    • DevSecOps
    • Terraform
      • GCP – Google Cloud
      • AWS – Amazon Web Service
      • Azure Cloud
    • Golang
    • Laravel
    • Python
    • Jquery & JavaScript
    • Selenium
  • Log, Monitor & Tracing
    • DataDog
    • Prometheus
    • Grafana
    • ELK
      • Kibana
      • Logstash
  • BareMetal
    • NextCloud
  • Toggle search form

[Argo-Workflows] Lesson23: Creating a Master Workflow

Posted on April 13, 2023April 13, 2023 By nim No Comments on [Argo-Workflows] Lesson23: Creating a Master Workflow

Các bài trước chúng ta chỉ run 1 template 1 workflow … Nếu bạn muốn run nhiều template thì sao.
Chúng ta tiếp tục đẻ ra 1 khái niệm là Master Workflow.

Đầu tiên chúng ta cần 2 template:

apiVersion: argoproj.io/v1alpha1
kind: WorkflowTemplate
metadata:
  name: wftmpl-dag
spec:
  entrypoint: dag-templates
  templates:
  - name: dag-templates
    dag:
      tasks:
      - name: Task1
        template: task-template
      - name: Task2
        template: task-template
        dependencies: [Task1]
      - name: Task3
        template: task-template
        dependencies: [Task1]
      - name: Task4
        template: task-template
        dependencies: [Task2, Task3]
  - name: task-template
    script:
      image: python:3.8-slim
      command:
        - python
      source: |
        print("Nimtechnology - Task executed.")

và Template thứ 2:

apiVersion: argoproj.io/v1alpha1
kind: WorkflowTemplate
metadata:
  name: wftmpl-loop
spec:
  entrypoint: dag-template
  arguments:
    parameters:
    - name: message1
      value: Task 1 is executed
    - name: message2
      value: Task 2 is executed
  templates:
  - name: dag-template
    inputs:
      parameters:
        - name: message1
        - name: message2
    dag:
      tasks:
      - name: Task1
        arguments:
          parameters: [{name: text, value: "{{inputs.parameters.message1}}"}]
        template: task-template
      - name: Task2
        arguments:
          parameters: [{name: text, value: "{{inputs.parameters.message2}}"}]
        template: task-template
      - name: Task3
        template: task-template
        dependencies: [Task1]
        arguments:
          parameters:
            - name: text
              value: "{{item}}"
        withItems:
        - Element1
        - Element2
        - Element3
  - name: task-template
    inputs:
      parameters: 
      - name: text
    script:
      image: python:3.8-slim
      command:
        - python
      source: |
        p = "{{inputs.parameters.text}}"
        print(p)
Giờ chúng ta có 2 template

Tiếp đến là tạo 1 master:

apiVersion: argoproj.io/v1alpha1
kind: CronWorkflow
metadata:
  name: cronwf-master
spec:
  schedule: "0 * * * *"
  concurrentcyPolicy: "Replace"
  startingDeadLineSeconds: 0

  workflowSpec:
    entrypoint: dag-master
    templates:
    - name: dag-master
      dag:
        tasks:
          - name: task-dag
            template: trigger-workflow
            arguments:
              parameters:
              - name: workflowtemplate
                value: wftmpl-dag 
          - name: task-loop
            depends: task-dag.Succeeded
            template: trigger-workflow
            arguments:
              parameters: 
              - name: workflowtemplate
                value: wftmpl-loop
    - name: trigger-workflow
      inputs:
        parameters:
          - name: workflowtemplate
      resource:
        action: create
        manifest: |
          apiVersion: argoproj.io/v1alpha1
          kind: Workflow
          metadata:
            generateName: {{inputs.parameters.workflowtemplate}}-
          spec:
            workflowTemplateRef:
              name: {{inputs.parameters.workflowtemplate}}
        successCondition: status.phase == Succeeded
        failureCondition: status.phase in (Failed, Error)
Thực hiện submit CronWorkflow

Bạn thấy nó gọi 2 template và chạy 2 workflow.

ArgoWorkflows

Post navigation

Previous Post: [Argo-Workflows] Lesson22: Reference to Workflow Templates
Next Post: [Argo-Workflows] Lesson23: Setup logging and artifact repository

More Related Articles

[Argo-Workflows] Lesson23: Setup logging and artifact repository ArgoWorkflows
[Argo-Workflows] Lesson6: Output Parameter File ArgoWorkflows
[Argo-Workflows] Lesson22: Reference to Workflow Templates ArgoWorkflows
[Argo-Workflows] Lesson17: Retry strategy ArgoWorkflows
[Argo Event] Building webhook trigger for any action by argo-event. Argo Events
[Argo-Workflows] Lesson15: Conditionals ArgoWorkflows

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

Tham Gia Group DevOps nhé!
Để Nim có nhiều động lực ra nhiều bài viết.
Để nhận được những thông báo mới nhất.

Recent Posts

  • [Laravel] Laravel Helpful June 26, 2025
  • [VScode] Hướng dẫn điều chỉnh font cho terminal June 20, 2025
  • [WordPress] Hướng dấn gửi mail trên WordPress thông qua gmail. June 15, 2025
  • [Bitbucket] Git Clone/Pull/Push with Bitbucket through API Token. June 12, 2025
  • [Teamcity] How to transfer the value from pipeline A to pipeline B June 9, 2025

Archives

  • June 2025
  • May 2025
  • April 2025
  • March 2025
  • February 2025
  • January 2025
  • December 2024
  • November 2024
  • October 2024
  • September 2024
  • August 2024
  • July 2024
  • June 2024
  • May 2024
  • April 2024
  • March 2024
  • February 2024
  • January 2024
  • December 2023
  • November 2023
  • October 2023
  • September 2023
  • August 2023
  • July 2023
  • June 2023
  • May 2023
  • April 2023
  • March 2023
  • February 2023
  • January 2023
  • December 2022
  • November 2022
  • October 2022
  • September 2022
  • August 2022
  • July 2022
  • June 2022
  • May 2022
  • April 2022
  • March 2022
  • February 2022
  • January 2022
  • December 2021
  • November 2021
  • October 2021
  • September 2021
  • August 2021
  • July 2021
  • June 2021

Categories

  • BareMetal
    • NextCloud
  • CI/CD
    • Argo Events
    • ArgoCD
    • ArgoWorkflows
    • Git
      • Bitbucket
    • Harbor
    • Jenkins
    • Spinnaker
    • TeamCity
  • Coding
    • DevSecOps
    • Golang
    • Jquery & JavaScript
    • Laravel
    • NextJS 14 & ReactJS & Type Script
    • Python
    • Selenium
    • Terraform
      • AWS – Amazon Web Service
      • Azure Cloud
      • GCP – Google Cloud
  • Kubernetes & Container
    • Apache Kafka
      • Kafka
      • Kafka Connect
      • Lenses
    • Docker
    • Helm Chart
    • Isito-EnvoyFilter
    • Kong Gateway
    • Kubernetes
      • Ingress
      • Pod
    • Longhorn – Storage
    • MetalLB
    • OAuth2 Proxy
    • Vault
    • VictoriaMetrics
  • Log, Monitor & Tracing
    • DataDog
    • ELK
      • Kibana
      • Logstash
    • Fluent
    • Grafana
    • Prometheus
  • Uncategorized
  • Admin

Copyright © 2025 NimTechnology.