如何绕过Jsonnet模板默认值?移除Deployment.spec.replicas字段
如何在Jsonnet生成的Kubernetes Deployment中移除默认的replicas字段
你遇到的问题是因为所用的deployment.new封装函数(常见于ksonnet或jsonnet-libs)会自动给Deployment的spec添加replicas: 1的默认值,哪怕你没主动传入这个参数。下面是两种解决办法:
方法一:用Jsonnet对象减法移除字段
直接在生成的deployment对象上减去spec.replicas字段即可,Jsonnet中通过指定键为null的对象做减法,就能删除对应字段:
'app-deployment': deployment.new( name=app, containers=[ container1, container2, ], ) - { spec: { replicas: null } }
方法二:手动构造Deployment对象
如果不想依赖封装函数的默认逻辑,可以完全手动构建Deployment结构,这样能精准控制所有字段,不会出现默认的replicas:
'app-deployment': { apiVersion: 'apps/v1', kind: 'Deployment', metadata: { name: app, namespace: 'ns', }, spec: { selector: { matchLabels: { app: app }, // 注意需要手动添加selector,这是Deployment必需的字段 }, template: { metadata: { labels: { app: app }, }, spec: { containers: [ container1, container2, ], }, }, }, }
第一种方法更简洁,适合继续使用封装函数的场景;第二种方法适合需要完全自定义Deployment结构的需求。
内容的提问来源于stack exchange,提问作者coco6732
相关产品推荐
相关产品推荐

