kustomize修补特定容器,而不是按阵列/ containers / 0

问题描述

我试图查看是否有一种方法,除了使用数组索引之外,还可以将kustomize patchTransformer应用于pod中的特定容器。例如,如果我在一个容器中有3个容器,分别是(0,1,2),并且想修补容器“ 1”,则通常会执行以下操作:

patch: |-
  - op: add
    path: /spec/containers/1/command
    value:  ["sh","-c","tail -f /dev/null"]

这在很大程度上取决于保持静态的容器顺序。如果出于任何原因删除了容器“ 1”,则会重新排列阵列,并且容器“ 2”突然变为容器“ 1”,这使我的补丁不再适用。

是否可以通过名称打补丁,定位标签/注释或其他某种机制?

path: /spec/containers/${NAME_OF_CONTAINER}/command

任何见识都会受到赞赏。

解决方法

这更像是https://www.geeksforgeeks.org/storage-for-strings-in-c/补丁程序的限制,以及这样的事实,即容器在K8s吊舱中被定义为一个数组,而不是一个哈希,而哈希在这种情况下会起作用:

path: /spec/containers/${NAME_OF_CONTAINER}/command

您可以尝试使用Json6902。实际上是kubectl apply的作用。

cat <<EOF > deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-app
spec:
  selector:
    matchLabels:
      run: my-app
  replicas: 2
  template:
    metadata:
      labels:
        run: my-app
    spec:
      containers:
      - name: my-container
        image: myimage
        ports:
        - containerPort: 80
EOF
cat <<EOF > set_command.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-nginx
spec:
  template:
    spec:
      containers:
      - name: my-app
        command: ["sh","-c","tail -f /dev/null"]
EOF
cat <<EOF >./kustomization.yaml
resources:
- deployment.yaml
patchesStrategicMerge:
- set_command.yaml
EOF

✌️

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...