我懂了test.yaml:
volumes:
- name: var-log
hostPath:
path: /var/log
- name: dev-log
hostPath:
path: /dev/log
Run Code Online (Sandbox Code Playgroud)
并希望使用 Go 实现以下目标yq- https://github.com/mikefarah/yq/
volumes:
- name: var-log
hostPath:
path: /var/log
- name: dev-log
hostPath:
path: /dev/log
- name: sys
mountPath: /sys
Run Code Online (Sandbox Code Playgroud)
我真的无法理解它 - 与:
yq eval '.volumes |= (. + {"name":{"name":"sys"}})' test.yaml我几乎明白了,但是缺少第三个字段名称(应该是,name: sys但它只是name:)
volumes:
- name: var-log
hostPath:
path: /var/log
- name: dev-log
hostPath:
path: /dev/log
- name:
mountPath: /sys
Run Code Online (Sandbox Code Playgroud)
我现在摆弄了一段时间,但无法让它工作。
您可以使name和mountPath出现在同一级别:
yq '.volumes += [{"name": "sys", "mountPath": "/sys"}]' test.yaml
Run Code Online (Sandbox Code Playgroud)
volumes:
- name: var-log
hostPath:
path: /var/log
- name: dev-log
hostPath:
path: /dev/log
- name: sys
mountPath: /sys
Run Code Online (Sandbox Code Playgroud)
或者您可以使它们嵌套,缺少“连接”值:
yq '.volumes += [{"name": {"mountPath": "/sys"}}]' test.yaml
Run Code Online (Sandbox Code Playgroud)
volumes:
- name: var-log
hostPath:
path: /var/log
- name: dev-log
hostPath:
path: /dev/log
- name:
mountPath: /sys
Run Code Online (Sandbox Code Playgroud)