【发布时间】:2020-06-25 15:21:48
【问题描述】:
我尝试使用kubectl patch 将另外两个值添加到 kubernetes 部署的 args 列表中。我已经查看了官方记录的 (https://kubernetes.io/docs/tasks/manage-kubernetes-objects/update-api-object-kubectl-patch/) 变体,但没有设法一次附加多个值。
假设这个简单的部署:
apiVersion: apps/v1
kind: Deployment
metadata:
name: test
spec:
replicas: 1
selector:
matchLabels:
name: test
template:
metadata:
labels:
name: test
name: test
spec:
containers:
- image: alpine
name: test
command:
- echo
args:
- my
- text
我现在想将其他值附加到 args 部分。这一次只适用于一个值:
添加一个附加值
kubectl patch deployments.apps test --type=json -p='[{"op": "add", "path": "/spec/t
emplate/spec/containers/0/args/-", "value": "additional" }]'
这行得通,给我留下了以下内容:
...
args:
- my
- text
- additional
但是使用一组值运行补丁会给我一个错误:
# running:
k patch deployments.apps test --type=json -p='[{"op": "add", "path": "/spec/template/spec/containers/0/args/-", "value": ["additional","text"] }]'
# results in:
The request is invalid: patch: Invalid value: "...": v1.Deployment.Spec: v1.DeploymentSpec.Template: v1.PodTemplateSpec.Spec: v1.PodSpec.Containers: []v1.Container: v1.Container.Args: []string: ReadString: expects " or n, but found [, error found in #10 byte of ...|itional",["additiona|..., bigger context ...|{"containers":[{"args":["my","text","additional",["additional","text"]],"command":["echo"],"image":"|...
有谁知道在单个补丁命令中将多个值添加到数组而不覆盖整个 args 数组的方法?感谢您的帮助。
【问题讨论】:
-
jsonpatch 不支持向数组添加多个值。可以在补丁数组中使用多个“add”语句来添加多个值。
-
根据github.com/kubernetes/kubernetes/issues/…,可能可以在单个补丁中添加多个值,但是,在修补争论的情况下,我不太确定如何实现。
标签: json kubernetes patch