Настройте metadata.name для определенного типа:

Я новичок в Kustomize и хотел бы знать:

  • Как исправить metadata.name в конкретном виде yaml: RedisInstance.

Я попытался установить 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

person Canna    schedule 13.10.2020    source источник


Ответы (1)


Я не думаю, что вы можете сделать это с помощью 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

Все поля цели, т. Е. Группа, версия, вид и имя, являются обязательными.

Вы можете указать несколько операций в одном файле патча.

person Mafor    schedule 13.10.2020
comment
Большое спасибо! за ваш ответ и все подробности. (не могу проголосовать из-за моей низкой репутации) - person Canna; 14.10.2020