为特定类型定制metadata.name:

Can*_*nna 5 yaml kubernetes kustomize

我是 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
Run Code Online (Sandbox Code Playgroud)

这是我的补丁:

7-内存存储-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
Run Code Online (Sandbox Code Playgroud)

内存存储.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
Run Code Online (Sandbox Code Playgroud)

Maf*_*for 20

我认为您不能使用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
Run Code Online (Sandbox Code Playgroud)

redisInstanceNamePatch.yaml

- op: replace
  path: /metadata/name
  value: NewName
Run Code Online (Sandbox Code Playgroud)

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

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