【问题标题】:Patch specific resource in kustomize在 kustomize 中修补特定资源
【发布时间】:2021-05-22 01:41:46
【问题描述】:

我有一个基础资源,它在叠加层中导入,在叠加层中,它还生成来自相同基础但后缀不同的其他资源。在叠加层中,需要对基础资源进行修补,而不会影响其他新创建的资源。然而,这三个人都变了。我怎样才能只修改我打算修改的那个?

下面是一个例子。基本资源是具有 1 个副本的部署。在叠加层中,基础作为资源添加,但我尝试对其进行修补并将副本设置为 0。不幸的是,所有部署的所有副本都设置为 0。

基础

EX_HOME=$(mktemp -d)
BASE=$EX_HOME/base
mkdir $BASE

cat <<EOF >$BASE/deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: example
  labels:
    app: example
spec:
  replicas: 1
  selector:
    matchLabels:
      app: example
  template:
    metadata:
      labels:
        app: example
    spec:
      containers:
        - name: example
          image: alpine:latest
          command: ["sh","-c", "sleep 1h"]
EOF

cat <<EOF>$BASE/kustomization.yaml
resources:
- deployment.yaml
EOF

叠加

OVERLAYS=$EX_HOME/overlays
mkdir -p $OVERLAYS/srv0
mkdir -p $OVERLAYS/srv1

cat <<EOF>$OVERLAYS/kustomization.yaml
resources:
  - svr0
  - svr1
  - ../base

patches:
  - patch: |-
      - op: replace
        path: /spec/replicas
        value: 0
    target:
      kind: Deployment
      group: apps
      version: v1
      name: example
EOF

cat <<EOF>$OVERLAYS/svr0/kustomization.yaml
resources:
  - ../../base
nameSuffix: -svr0
EOF

cat <<EOF>$OVERLAYS/svr0/kustomize.yaml
resources:
  - ../../base
nameSuffix: -svr1
EOF

【问题讨论】:

    标签: kubernetes kustomize


    【解决方案1】:

    以下应该有效。我冒昧地重新组织了一下目录结构以使其更清晰。由于您只更新副本数,因此我也切换到 replicas 转换器而不是补丁:

    base/kustomization.yaml:

    resources:
      - deployment.yaml
    

    overlays/svr0/kustomization.yaml:

    resources:
      - ../../base
    
    nameSuffix: -svr0
    

    overlays/svr1/kustomization.yaml:

    resources:
      - ../../base
    
    nameSuffix: -svr1
    
    `overlays/all/kustomization.yaml`:
    ```yaml
    resources:
      - ../../base
      - ../svr0
      - ../svr1
    
    replicas:
      - name: example-svr0
        count: 0
      - name: example-svr1
        count: 0
    

    附带说明:有两种方法可以解决。在这里,我在顶部添加了replicas 变压器。您也可以在overlays/svr0/kustomization.yaml 中添加一次,然后在verlays/svr1/kustomization.yaml 中添加一次。如果这样做,变压器将变为:

    replicas:
      - name: example
        count: 0
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-03
      • 1970-01-01
      • 2021-10-23
      • 1970-01-01
      • 1970-01-01
      • 2021-03-21
      • 1970-01-01
      • 2016-06-17
      相关资源
      最近更新 更多