# patches | Kustomize
Patch resources

patches | Kustomize

# patches

Patch resources

Patches 在资源上添加或覆盖字段，Kustomization 使用 `patches` 字段来提供该功能。

`patches` 字段包含要按指定顺序应用的 patch 列表。

patch 可以:

- 是一个 strategic merge patch，或者是一个 JSON patch。
- 也可以是 patch 文件或 inline string
- 针对单个资源或多个资源

目标选择器可以通过 group、version、kind、name、namespace、标签选择器和注释选择器来选择资源，选择一个或多个匹配所有指定字段的资源来应用 patch。

    apiVersion: kustomize.config.k8s.io/v1beta1
    kind: Kustomization

    patches:
    - path: patch.yaml
      target:
        group: apps
        version: v1
        kind: Deployment
        name: deploy.*
        labelSelector: "env=dev"
        annotationSelector: "zone=west"
    - patch: |-
        - op: replace
          path: /some/existing/path
          value: new value
      target:
        kind: MyKind
        labelSelector: "env=dev"

patch 目标选择器的 `name` 和 `namespace` 字段是自动锚定的正则表达式。这意味着 `myapp` 的值相当于 `^myapp$`。

示例 1 和示例 2 都将使用以下 `deployment.yaml`：

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: the-deployment
    spec:
      replicas: 5
      template:
        containers:
          - name: the-container
            image: registry/conatiner:latest

## 示例1

### 目的

将容器镜像指向特定版本，代替 latest 版本。

### 文件输入

    # kustomization.yaml
    resources:
    - deployment.yaml

    patches:
    - path: patch.yaml

    # patch.yaml
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: the-deployment
    spec:
      template:
        containers:
          - name: the-container
            image: registry/conatiner:1.0.0

### 构建输出

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: the-deployment
    spec:
      replicas: 5
      template:
        containers:
        - image: registry/conatiner:1.0.0
          name: the-container

## 示例2

### 目的

同上。

### 文件输入

    # kustomization.yaml
    resources:
    - deployment.yaml

    patches:
    - target:
        kind: Deployment
        name: the-deployment
      path: patch.json

    # patch.json
    [
       {"op": "replace", "path": "/spec/template/containers/0/image", "value": "registry/conatiner:1.0.0"}
    ]

### 构建输出

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: the-deployment
    spec:
      replicas: 5
      template:
        containers:
        - image: registry/conatiner:1.0.0
          name: the-container

最后修改 2020年08月31日: update zh doc patches (d4503dfd)