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

目标的所有字段,即组,版本,种类和名称都是必填项

您可以在同一个补丁文件中指定多个操作

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...