kubernetes - Kustomize metadata.name 为特定种类:
问题描述
我是 Kustomize 的新手,我想知道:
- 如何在特定的 yaml 中“修补”metadata.name,例如:RedisInstance。
我尝试将 nameSuffix 设置为特定的 yaml(种类:RedisInstance),但没有成功。
自定义.yaml
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
namespace: community-organization-uat-product
bases:
- ../../../../common/base/custom/gcp
- ../../../../common/base/custom/gcp/organization
commonAnnotations:
cnrm.cloud.google.com/managed: "true"
cnrm.cloud.google.com/project-id: community-organization-uat-product
patchesStrategicMerge:
- 1-cXXXXX-patch.yaml
- 3-mXXXXX-patch.yaml
- 4-mXXXXX-patch.yaml
- 5-cXXXXX-patch.yaml
- 6-mXXXXX-patch.yaml
- 7-memorystore-patch.yaml
这是我的补丁:
7-memorystore-patch.yaml
apiVersion: redis.cnrm.cloud.google.com/v1beta1
kind: RedisInstance
metadata:
name: memorystore-redis
spec:
displayName: memorystore-redis-organization-community-uat
memorySizeGb: 2
redisVersion: REDIS_5_0
reservedIpRange: 10.1XXXXX/29
memorystore.yaml
apiVersion: redis.cnrm.cloud.google.com/v1beta1
kind: RedisInstance
metadata:
name: memorystore-redis
spec:
displayName: Value defined by Kustomize
region: XXXX
connectMode: PRIVATE_SERVICE_ACCESS
locationId: usXXXX
memorySizeGb: Value defined by Kustomize
redisVersion: REDIS_5_0
reservedIpRange: Value defined by Kustomize
tier: BASIC
解决方案
我不认为你可以用patchesStrategicMerge
:name
字段来匹配应该应用补丁的资源,所以要么:
- 您指定旧名称,资源会匹配但名称不会更改
- 您指定了新名称,但资源不匹配
好消息是它可以通过patchJson6902来完成:
自定义化.yaml
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
# ...
patchesJson6902:
- target:
group: redis.cnrm.cloud.google.com
version: v1beta1
kind: RedisInstance
name: memorystore-redis
path: redisInstanceNamePatch.yaml
redisInstanceNamePatch.yaml
- op: replace
path: /metadata/name
value: NewName
目标的所有字段,即组、版本、种类和名称都是必填项
您可以在同一个补丁文件中指定多个操作
推荐阅读
- java - 如何验证 iframe 标签下的文本
- javascript - 使用单选按钮复制文本区域的内容
- python - 如何在迭代 Pandas 数据框的嵌套循环中优化性能
- node.js - 找不到模块:错误:无法解析“../moment”
- c# - 遍历异构容器?
- javascript - 如何通过 CDN 导入 Dojo 工具包?(Dojo 未定义和解析错误)
- terminal - 在 RDS 2019 中发布在其他服务器上运行的应用程序
- opencv - 测量图像中对象之间的真实世界距离
- clion - 在 clion 中避免从idevim中的插入模式进入正常模式
- git - 如何防止重复构建 pull_request 并推送 Travis