[英]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 路径。 您可以按照从父节点到要指定的叶节点的节点。
由于您想要httpGet
的livenessProbe
上的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 版本:
测试.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.