能否用Kustomize在单个Overlay中生成基础YAML的多个版本?
用Kustomization批量生成共享结构的Service
完全可以用Kustomization实现这个需求,无需重复编写三份高度相似的Service配置,通过Kustomize的**列表生成器(ListGenerator)**就能批量生成符合要求的资源。
具体实现步骤
1. 创建服务生成器配置
新建services-generator.yaml文件,定义要生成的三个服务的标识(名称和对应标签),同时嵌入通用的Service模板,把需要动态替换的部分用模板变量占位:
apiVersion: kustomize.config.k8s.io/v1alpha1 kind: ListGenerator metadata: name: services-list # 定义要生成的三个服务的参数 elements: - name: service-a app: service-a - name: service-b app: service-b - name: service-c app: service-c # 通用的Service模板,变量会自动替换 template: apiVersion: v1 kind: Service metadata: name: '{{.name}}' spec: selector: app: '{{.app}}' ports: - name: 8080-tcp protocol: TCP port: 8080 targetPort: 8080
2. 编写Kustomization主配置
新建kustomization.yaml文件,引用上面的生成器,告诉Kustomize要基于这个配置生成资源:
apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization generators: - services-generator.yaml
3. 生成最终的Service配置
在当前目录下运行以下命令,即可得到三个完整的Service定义:
kustomize build .
生成的结果会包含三个独立的Service资源,每个资源的metadata.name和spec.selector.app分别对应service-a、service-b、service-c,其余结构和你提供的dummy Service完全一致。
内容的提问来源于stack exchange,提问作者René Jahn
相关产品推荐
相关产品推荐

