我有一个在覆盖中导入的基础资源,它在覆盖中也使来自相同基础的其他资源具有不同的后缀。在叠加中,需要在不影响其他新创建资源的情况下对基础资源进行修补。然而,这三个都被改变了。我怎么修改我要修改的?
下面是一个这样的例子。基本资源是具有1个副本的Deployment。在覆盖层中,基地被添加为资源,但我试图修补它并将副本设置为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
下面应该可以工作。我冒昧地重新组织了一下目录结构,使它更清晰。由于您只更新副本计数,因此我还切换到副本转换器而不是补丁:
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