docker - 读取和编辑 YAML 的最简单和优化的方法
问题描述
我有一些 YAML 文件,我想应用它们来创建自定义资源。但在应用它之前,我想更改 YAML 片段的规范和 ENV。那么最好的方法是什么?
我现在正在做的是:
假设这是 YAML
apiVersion: litmuschaos.io/v1alpha1
kind: ChaosEngine
metadata:
name: nginx-chaos
namespace: default
spec:
appinfo:
appns: 'default'
applabel: 'app=nginx'
appkind: 'deployment'
# It can be true/false
annotationCheck: 'false'
# It can be active/stop
engineState: 'active'
chaosServiceAccount: pod-delete-sa
monitoring: false
# It can be delete/retain
jobCleanUpPolicy: 'delete'
experiments:
- name: pod-delete
spec:
components:
env:
# set chaos duration (in sec) as desired
- name: TOTAL_CHAOS_DURATION
value: '30'
# set chaos interval (in sec) as desired
- name: CHAOS_INTERVAL
value: '10'
# pod failures without '--force' & default terminationGracePeriodSeconds
- name: FORCE
value: 'false'
- 我从原始链接下载此文件。(为此提供1个功能)
- 将字段替换
jobCleanUpPolicy: 'delete'
为jobCleanUpPolicy: 'retain'
(1 fn) - 找到匹配项时替换下一行,例如
value: 'false'
FORCEvalue: 'true'
ENV。(1 英尺) - 应用创建的最终清单!(1个功能)
这可以优化吗?
解决方案
如果您创建一个表示资源的结构(或者更好的是,可以导入定义 CRD 的包),您可以获取 yaml 字符串,将其编组到结构中,然后直接将字段编辑为结构的字段
推荐阅读
- c# - Clr2 Winform 可以托管 Clr4 WPF 或其他机制吗?
- c# - 2013 年的程序无法访问使用 access 2007 创建的数据库
- android - 如何在垂直视图寻呼机顶部添加页边距?
- python - 找到创建平衡值集的集合的子集
- python - 如果用户输入“”,如何创建默认值?
- acumatica - Acumatica:为什么有些用户在修改后会重复?
- ios - Phonegap iOS appstore 在 info.plist 文件中缺少目的字符串
- java - 如何将具有 int 和字符串值的对象添加到 Java 中的数组中
- c++ - Qt 中的 toBase64 编码不会产生可打印的 QString
- android - 哪个 SearchView 适合更高的 API?