定时触发

类似于 k8s 中的 job 和 cronjob,CronWorkflow 会定时创建 Workflow 来实现定时触发。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
apiVersion: argoproj.io/v1alpha1
kind: CronWorkflow
metadata:
name: test-cron
spec:
workflowMetadata: #元数据,由这个CronWorkflow创建的Workflow都会带有这个labels
labels:
dou: bao
schedule: "* * * * *"
concurrencyPolicy: "Replace"
startingDeadlineSeconds: 0
serviceAccountName: argo
workflowSpec:
entrypoint: whalesay
templates:
- name: whalesay
inputs:
parameters:
- name: message #模板的输入参数
value: cron-test
container:
image: docker/whalesay
command: [cowsay]
args: ["{{inputs.parameters.message}}"] #引用模板的入参

阅读全文 »

argo workflow & template

Workflow 的相关类型

Workflow

  • 定义: 是一个具体的工作流实例,描述了要执行的任务和步骤。
  • 使用: 可以直接包含 templates,或者引用 WorkflowTemplateClusterWorkflowTemplate

WorkflowTemplate

  • 定义: 是一个可重用的工作流模板,适用于同一命名空间内的多个工作流。
  • 使用: Workflow 可以引用 WorkflowTemplate 以使用其定义的步骤和任务。

ClusterWorkflowTemplate

  • 定义: 与 WorkflowTemplate 类似,但在集群范围内可用,适用于跨命名空间的工作流。
  • 使用: Workflow 可以引用 ClusterWorkflowTemplate,这使得模板在所有命名空间中都可用。

Templates

  • 定义: 是工作流中定义的实际可执行单元,可以是单个任务、步骤或 DAG。
  • 使用: 定义在 WorkflowWorkflowTemplateClusterWorkflowTemplate 中。templates 可以相互引用,支持复用和组合。

关系

  • Workflow 可以包含 templates 直接执行,也可以引用 WorkflowTemplateClusterWorkflowTemplate
  • WorkflowTemplateClusterWorkflowTemplate 提供了复用和参数化的能力,使得工作流定义更加灵活和可维护。
  • Templates 是工作流各组件的基本构建块,定义了具体的执行逻辑。
阅读全文 »

安装部署

新建命名空间并部署项目资源

1
2
kubectl create namespace argo
kubectl apply -n argo -f https://github.com/argoproj/argo-workflows/releases/download/v3.5.10/install.yaml

暴露服务

默认情况下, argo workflows 服务不对外暴露服务,可以通过 LoadBalancer 或者 NodePort 类型的 Service、Ingress、Kubectl 端口转发等方式将 argo workflows 服务发布到 Kubernetes 集群外部。

由于是 vm 自建,所以选择使用 NodePort 的方式暴露服务。

1
kubectl patch svc argo-server -n argo -p '{"spec": {"type": "NodePort"}}'

查看随机暴露的端口

1
2
3
root@devops:~# kubectl get svc -n argo
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
argo-server NodePort 10.43.35.195 <none> 2746:30701/TCP 4m28s
阅读全文 »
0%