如何解决Kustomize特定类型的metadata.name:
我是Kustomize的新手,我想知道:
- 如何使用特定Yaml(如RedisInstance)“修补” metadata.name。
我试图将nameSuffix设置为特定的Yaml(种类:RedisInstance),但是没有用。
Kustomization.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
字段用于匹配应将补丁应用到的资源,因此:
- 您指定旧名称,资源会匹配,但名称不会更改
- 您指定新名称,但资源不匹配
好消息是,可以使用patchesJson6902:
Kustomization.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
目标的所有字段,即组,版本,种类和名称都是必填项
您可以在同一个补丁文件中指定多个操作
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。