![](/img/trans.png)
[英]What's the best way to inject a yaml file into an Argo workflow step?
[英]How to pass or parse a resource event source body generated from an argo workflow?
我有一個資源傳感器來觸發一個工作流,該工作流報告導致事件的原始工作流 - 一種記錄器。 在傳感器的參數中,我想獲取原始工作流的主體,以便從中提取某些值——目前我打算簡單地將整個 JSON 作為輸入字符串傳遞。
當工作流程不平凡並且包含可變文件時,就會出現問題,例如:
apiVersion: argoproj.io/v1alpha1
kind: Workflow
metadata:
generateName: test-es-workflow-
labels:
class: dummy-in
spec:
entrypoint: whalesay
arguments:
parameters:
- name: message
value: hello world
templates:
- name: whalesay
inputs:
parameters:
- name: message
container:
image: docker/whalesay:latest
command: [cowsay]
args: ["{{inputs.parameters.message}}"]
發生這種情況時觸發的工作流程:
apiVersion: argoproj.io/v1alpha1
kind: Sensor
metadata:
name: demo-sensor
spec:
template:
serviceAccountName: operate-workflow-sa
dependencies:
- name: test-dep-sensor
eventSourceName: demo-wf-submit
eventName: demo-log
triggers:
- template:
name: argo-workflow
k8s:
operation: create
source:
resource:
apiVersion: argoproj.io/v1alpha1
kind: Workflow
metadata:
generateName: demo-log-
spec:
entrypoint: demolog
arguments:
parameters:
- name: body
value: hello world
templates:
- name: demolog
inputs:
parameters:
- name: body
container:
image: demolog:latest
imagePullPolicy: "Always"
command: [/app/demoapp.py]
args: ["-j", "{{inputs.parameters.body}}"]
parameters:
- src:
dependencyName: test-dep-sensor
dataKey: body
value: wow! a default value
dest: spec.arguments.parameters.0.value
retryStrategy:
steps: 3
失敗並顯示消息Message: invalid spec: templates.demolog: failed to resolve {{inputs.parameters.message}}
如果工作流不包含任何變量({{}} 中不包含任何變量),則觸發的工作流會按預期執行。
我很樂意弄清楚如何獲得以下任何或所有解決方案:
環境:Kubernetes:v1.20.15; 阿爾戈:v3.2.9; Argo 活動:v1.6.3
我開發了類型 2 的答案,即渲染包含在雙花括號中的變量。 它並不優雅,但似乎有效:
使用 jq 修補傳感器的依賴項部分以用其他東西替換雙花括號(我選擇了“%%”)
dependencies:
- name: test-dep-sensor
eventSourceName: demo-wf-submit
eventName: demo-log
transform:
jq: 'walk( if type=="string" then gsub("{{";"%%") else . end ) | walk( if type=="string" then gsub("}}";"%%") else . end )'
附加信息:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.