繁体   English   中英

如何替换或找到 kustomize 的正确路径

[英]how to replace or find correct path for kustomize

我有部署,我想替换 liveness probe 部分中的“路径”值。 kustomize 中的正确路径是什么?

- patch: |-
    - op: replace
      path: ??????????
      value:
        https://xyz.staging.something.eu/ping

    apiVersion: v1
    kind: Pod
    metadata:
      labels:
        test: liveness
      name: liveness-http
    spec:
      containers:
      - name: liveness
        image: k8s.gcr.io/liveness
        args:
        - /server
        livenessProbe:
          httpGet:
            path: /healthz
            port: 8080
          initialDelaySeconds: 3
          periodSeconds: 3

它是 yaml 路径。 您可以按照从父节点到要指定的叶节点的节点。

由于您想要httpGetlivenessProbe上的path节点,它将以livenessProbe.httpGet.path结尾。

livenessProbe 的父节点有点棘手,注意它是列表containers的一个元素。 您可以通过索引或属性(EG name )来指定它。 所以无论是containers[0]还是containers[name=liveness]

现在我们有了containers[0].livenessProbe.httpGet.path 缺少的根节点是spec ,所以spec.containers[0].livenessProbe.httpGet.path会这样做。

还有很多其他的方式可以表达这一点。 https://github.com/wwkimball/yamlpath#illustration似乎是一个很好的更深入的解释。

我正在尝试语法containers[name=xx]并在containers/0工作时失败。 我不确定我是否遗漏了什么或者这不受支持,找不到关于 Kustomize 语法的更多示例。

下面的细节

检查了 kustomize 版本:

  • v4.5.4
  • v4.5.2

测试.yaml:

---
apiVersion: v1
kind: Pod
metadata:
  name: test-pod
spec:
  containers:
    - name: test-container
      env:
      - name: environment
        value: stage
      - name: api_port
        value: "8080"
      image: docker.io/bitname/posgresql:latest
      ...
      ...

kustomization.yaml

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

...
...

patchesJson6902:
- target:
    version: v1
    kind: Pod
    name: test-pod
  path: replace.yaml

替换.yaml

- op: replace
  path: "/spec/containers[name=test-container]/env/0/value"
  value: "dev"
# doesn't work: `Error: replace operation does not apply: doc is missing path" /spec/containers[name=test-container]/env/0/value: missing value
 

- op: replace
  path: "/spec/containers/0/env/0/value"
  value: "dev"
# works as expected

谢谢!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM