使用最小配置生成动态清单重复次数
nmanifest的Python项目详细描述
这是怎么回事?在
这是为了解决这样一个问题,即需要动态地改变/重复每个生成的清单的数量 在其他方面非常类似的开发、qa、登台、生产环境。在
环境通常是一组工作负载,例如微服务、防病毒、ocr和其他组件 能够横向扩展并服务于整个环境。 但是,如果我们在一个给定的环境中还想运行一组重复n次的“客户安装”集呢。在
例如,我们可能需要运行遗留应用程序服务器(HelmRelease)的N个实例,因此我们需要定义它 helmrelease只显示一次,然后只为每个需要的实例指定较小的配置差异。在
使用Kustomize解决这一问题并不容易,因为kustomization基于 使用特定(种类、名称空间、名称)坐标和用于定义 我们的N组“客户安装”我们必须改变名称部分的坐标为每一个。在
为fluxd管理gitrepo
回购结构用于初始空状态
└── releases
|—— .flux.yaml
└── environments
└── basetemplates
releases文件夹被配置为fluxcd--git path=releases参数 以及--manifest generation=true
environments目录将填充子目录,这些子目录定义了 工作量。每个子目录包含根模板文件夹的可编辑副本, 通过编辑这些模板,它将直接影响所有的生成器 基于这些模板。在
basetemplates文件夹用于基本模板,编辑这些模板只会影响新模板 实例,因为没有直接从基模板生成任何内容
填充基本模板
basetemplates是包含模板文件集的目录,例如kubernetes yaml manifest文件 用于jinja2模板处理
例如
^{pr2}$在“环境”文件夹中创建新的工作负载配置
环境实例在environments文件夹中表示为子文件夹,包含
- 基本模板的快照副本。E、 {cdg}
- 文件夹
generatorconfigs
,其中包含.yaml
文件和generatorconfig
清单
└── environments
└── NAME
└── templates
└── SET1
|── template1.yaml
|── template2.yaml
└── SET2
|── template1.yaml
|── template2.yaml
└── generatorconfigs
|── SET1-a-generatorconfig.yaml
|── SET2-b-generatorconfig.yaml
|── SET2-c-generatorconfig.yaml
|── SET2-d-generatorconfig.yaml
generatorconfig
格式
格式基本上只是属性,意味着纯粹的配置,没有太多的结构结构。在
generatorconfigversion: 1
templateset: SET2
id: set2-a
import_substitution_parameters:
- set1
substitution_parameters:
NAME1: VALUE
NAME2: VALUE
overrides:
- manifest:
kind: MFKIND
namespace: MFNAMESPACE
name: MFNAME
values:
PATH: OVERRIDE
有两个强制性部分:
- generatorconfigversion:必须为1
- templateset:指向环境模板集目录的指针,例如SET2
其余部分可选:
- id:是可选的,仅当其他generatorconfig需要引用此配置时才有用
- import_substitution_parameters:要从中导入替换参数的generatorconfig ID列表。 可以重写每个导入的参数
- 替换参数:模板的jinja2模板化参数
- 重写:使用它覆盖生成的清单中的任何内容。该部分是一个包含以下内容的列表:
- manifest:如果模板集中只有1个清单,则可选,否则manifest(kind、namespace、name)坐标
- 值:yaml重写jinja2生成的清单中的任何内容
- 项目
标签: