簡體   English   中英

如何在 argo-events 模板或命名空間之外觸發現有的工作流/工作流模板?

[英]How can you trigger an existing workflow/workflow-template outside argo-events template or namespace?

根據文檔,我們可以觸發工作流的創建 有沒有辦法從argo-events命名空間中的傳感器觸發現有工作流(部署在argo命名空間中)?

就像是:

apiVersion: argoproj.io/v1alpha1
kind: Sensor
metadata:
  name: webhook
spec:
  template:
    serviceAccountName: operate-workflow-sa
  dependencies:
    - name: test-dep
      eventSourceName: webhook
      eventName: example
  triggers:
    - template:
      name: webhook-workflow-trigger
      argoWorkflow:
        source:
          resource: existing-workflow-in-another-namespace
     

現有工作流程:

apiVersion: argoproj.io/v1alpha1
kind: Workflow
metadata:
  generateName: sb1-
  labels:
    workflows.argoproj.io/archive-strategy: "false"
spec:
  entrypoint: full
  serviceAccountName: argo
  volumes:
  - name: kaniko-secret
    secret:
      secretName: regcred
      items:
        - key: .dockerconfigjson
          path: config.json
  - name: github-access
    secret:
      secretName: github-access
      items:
        - key: token
          path: token
  templates:
  - name: full
    dag:
      tasks:
      - name: build
        templateRef:
          name: container-image
          template: build-kaniko-git
          clusterScope: true
        arguments:
          parameters:
          - name: repo_url
            value: git://github.com/letthefireflieslive/test-app-sb1
          - name: repo_ref
            value: refs/heads/main
          - name: container_image
            value: legnoban/test-app-sb1
          - name: container_tag
            value: 1.0.2
      - name: promote-dev
        templateRef:
          name: promote
          template: promote
          clusterScope: true
        arguments:
          parameters:
            - name: repo_owner
              value: letthefireflieslive
            - name: repo_name
              value: vcs
            - name: repo_branch
              value: master
            - name: deployment_path
              value: overlays/eg/dev/sb1/deployment.yml
            - name: image_owner
              value: legnoban
            - name: image_name
              value: test-app-sb1
            - name: tag
              value: 1.0.2
        dependencies:
          - build
    

您應該能夠做到這一點,但您需要在傳感器中擁有可以管理工作流的 serviceaccount。 這意味着分配給該帳戶的 clusterrole 和 clusterrbinding:

apiVersion: v1
kind: ServiceAccount
metadata:
  name: argo-events-core
  namespace: argo-events
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: argo-events-core
  namespace: argo-events
rules:
  - apiGroups:
      - argoproj.io
    resources:
      - workflows
      - workflowtemplates
      - cronworkflows
      - clusterworkflowtemplates
    verbs:
      - "*"
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: argo-events-core
  namespace: argo-events
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: argo-events-core
subjects:
  - kind: ServiceAccount
    name: argo-events-core
    namespace: argo-events

在 Argo 中,工作流表示正在運行或已完成運行的作業,因此這可能不是您想要做的。

你可以做的是創建一個模板來創建一個工作流(運行一個作業),然后在你的觸發器中引用這個模板。 通過這種方式,您可以創建基於模板的工作流。

apiVersion: argoproj.io/v1alpha1
kind: WorkflowTemplate
metadata:
  name: sb1-workflowtemplate
spec:
  entrypoint: full
  templates:
  - name: full
    dag:
      tasks:
      - name: build
        templateRef:
          name: container-image
          template: build-kaniko-git
          clusterScope: true
        arguments:
          parameters:
          - name: repo_url
            value: git://github.com/letthefireflieslive/test-app-sb1
          - name: repo_ref
            value: refs/heads/main
          - name: container_image
            value: legnoban/test-app-sb1
          - name: container_tag
            value: 1.0.2
      - name: promote-dev
        templateRef:
          name: promote
          template: promote
          clusterScope: true
        arguments:
          parameters:
            - name: repo_owner
              value: letthefireflieslive
            - name: repo_name
              value: vcs
            - name: repo_branch
              value: master
            - name: deployment_path
              value: overlays/eg/dev/sb1/deployment.yml
            - name: image_owner
              value: legnoban
            - name: image_name
              value: test-app-sb1
            - name: tag
              value: 1.0.2
        dependencies:
          - build
apiVersion: argoproj.io/v1alpha1
kind: Sensor
metadata:
  name: webhook
spec:
  template:
    serviceAccountName: operate-workflow-sa
  dependencies:
    - name: test-dep
      eventSourceName: webhook
      eventName: example
  triggers:
    - template:
      name: webhook-workflow-trigger
      argoWorkflow:
          source:
            resource:
              apiVersion: argoproj.io/v1alpha1
              kind: Workflow
              metadata:
                generateName: sb1-
              spec:
                workflowTemplateRef:
                  name: sb1-workflowtemplate

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM