我正在創建一個帶有withParam地圖變數回圈的 argo 作業流程。在這張地圖中,我想使用多行 json 字串。有什么方法可以使用它嗎?
這是我policy用作多行字串的方式,但它不起作用
apiVersion: argoproj.io/v1alpha1
kind: Workflow
metadata:
generateName: loops-param-arg-
spec:
entrypoint: loop-param-arg-example
arguments:
parameters:
- name: os-list
value: |
[
{ "image": "debian", "tag": "9.1", "policy": "{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "BucketAdmin",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:*",
"Resource": "*"
}
]
}" },
{ "image": "ubuntu", "tag": "17.10", "policy": "{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "BucketAdmin",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:*",
"Resource": "*"
}
]
}"}
]
templates:
- name: loop-param-arg-example
inputs:
parameters:
- name: os-list
steps:
- - name: test-linux
template: cat-os-release
arguments:
parameters:
- name: image
value: "{{item.image}}"
- name: tag
value: "{{item.tag}}"
withParam: "{{inputs.parameters.os-list}}"
- name: cat-os-release
inputs:
parameters:
- name: image
- name: tag
container:
image: "{{inputs.parameters.image}}:{{inputs.parameters.tag}} and policy is {{inputs.parameters.policy}}"
command: [cat]
args: [/etc/os-release]
在 argo 作業流程中有什么方法可以實作這一點嗎?如果沒有,有什么替代方法可以做到這一點?
uj5u.com熱心網友回復:
存在三個問題:
- 這些策略不是有效的 JSON。星號必須用引號引起來,因為它們是字串。
{ "Sid": "BucketAdmin", "Effect": "Allow", - "Principal": *, "Principal": "*", "Action": "s3:*", - "Resource": * "Resource": "*" } - 策略應編碼為字串,以便它們可以作為引數輕松傳遞。例如:
"{\"Version\":\"2012-10-17\",\"Statement\":[{\"Sid\":\"BucketAdmin\",\"Effect\":\"Allow\",\"Principal\":\"*\",\"Action\":\"s3:*\",\"Resource\":\"*\"}]}" - 策略值需要作為引數顯式傳遞給 cat-os-release 模板。
最終的作業流程應如下所示:
apiVersion: argoproj.io/v1alpha1
kind: Workflow
metadata:
generateName: loops-param-arg-
spec:
entrypoint: loop-param-arg-example
arguments:
parameters:
- name: os-list
value: |
[
{
"image": "debian",
"tag": "9.1",
"policy": "{\"Version\":\"2012-10-17\",\"Statement\":[{\"Sid\":\"BucketAdmin\",\"Effect\":\"Allow\",\"Principal\":\"*\",\"Action\":\"s3:*\",\"Resource\":\"*\"}]}"
},
{
"image": "ubuntu",
"tag": "17.10",
"policy": "{\"Version\":\"2012-10-17\",\"Statement\":[{\"Sid\":\"BucketAdmin\",\"Effect\":\"Allow\",\"Principal\":\"*\",\"Action\":\"s3:*\",\"Resource\":\"*\"}]}"
}
]
templates:
- name: loop-param-arg-example
inputs:
parameters:
- name: os-list
steps:
- - name: test-linux
template: cat-os-release
arguments:
parameters:
- name: image
value: "{{item.image}}"
- name: tag
value: "{{item.tag}}"
- name: policy
value: "{{item.policy}}"
withParam: "{{inputs.parameters.os-list}}"
- name: cat-os-release
inputs:
parameters:
- name: image
- name: tag
- name: policy
container:
image: "{{inputs.parameters.image}}:{{inputs.parameters.tag}}"
command: [echo]
args: ["{{inputs.parameters.policy}}"]
uj5u.com熱心網友回復:
Michael 提供的解決方案有效,以下解決方案也適用于您,具有一定的政策可讀性
kind: Workflow
metadata:
generateName: loops-param-arg-
spec:
entrypoint: loop-param-arg-example
arguments:
parameters:
- name: os-list
value: |
[
{ "image": "debian", "tag": "9.1", "policy": {
"Version": "2012-10-17",
"Statement": [
{
"Sid": "BucketAdmin",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:*",
"Resource": "*"
}
]
} },
{ "image": "ubuntu", "tag": "17.10", "policy": {
"Version": "2012-10-17",
"Statement": [
{
"Sid": "BucketAdmin",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:*",
"Resource": "*"
}
]
}
}
]
templates:
- name: loop-param-arg-example
inputs:
parameters:
- name: os-list
steps:
- - name: test-linux
template: cat-os-release
arguments:
parameters:
- name: image
value: "{{item.image}}"
- name: tag
value: "{{item.tag}}"
withParam: "{{inputs.parameters.os-list}}"
- name: cat-os-release
inputs:
parameters:
- name: image
- name: tag
container:
image: "{{inputs.parameters.image}}:{{inputs.parameters.tag}} and policy is {{inputs.parameters.policy}}"
command: [cat]
args: [/etc/os-release]
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/369955.html
上一篇:使用遞回函式和do-while回圈時得到不正確的總和
下一篇:(更新)處理檔案,檢查是否存在
