【问题标题】:kustomize patching a specific container other than by array (/containers/0)kustomize 修补特定容器而不是数组 (/containers/0)
【发布时间】:2020-09-16 21:06:15
【问题描述】:

我正在尝试查看是否有一种方法可以将 kustomize patchTransformer 应用于 pod 中的特定容器,而不是使用其数组索引。例如,如果我在一个 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

非常感谢任何见解。

【问题讨论】:

    标签: arrays kubernetes containers patch kustomize


    【解决方案1】:

    这更多是Json6902 补丁限制以及容器在 K8s pod 中定义为数组而不是像这样可以工作的哈希的事实:

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

    你可以试试StrategicMergePatch。这基本上就是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
    

    ✌️

    【讨论】:

      猜你喜欢
      • 2021-05-22
      • 2021-10-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-02-24
      相关资源
      最近更新 更多