Kubectl补丁:是否可以在一次补丁执行中将多个值添加到数组中 [英] kubectl patch: Is it possible to add multiple values to an array within a sinlge patch execution

查看:0
本文介绍了Kubectl补丁:是否可以在一次补丁执行中将多个值添加到数组中的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我尝试使用kubectl patch将另外两个值添加到Kubernetes部署的参数列表中。我已经检查了官方记录的(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数组的情况下,通过一个补丁命令向数组添加多个值的方法?感谢您的帮助。

推荐答案

下面使用单个补丁,但不太干:

kubectl patch deployment <deployment-name> -n <namespace> --type "json" -p '[
{"op":"add","path":"/spec/template/spec/containers/0/args/-","value":"arg-1"},
{"op":"add","path":"/spec/template/spec/containers/0/args/-","value":"arg-2"},
{"op":"add","path":"/spec/template/spec/containers/0/args/-","value":"arg-3"}]'

我一直在为cert-manager执行类似的操作,以实现全自动TLS:

kubectl patch deployment cert-manager -n cert-manager --type "json" -p '[
{"op":"add","path":"/spec/template/spec/containers/0/args/-","value":"--default-issuer-name=letsencrypt-prod"},
{"op":"add","path":"/spec/template/spec/containers/0/args/-","value":"--default-issuer-kind=ClusterIssuer"},
{"op":"add","path":"/spec/template/spec/containers/0/args/-","value":"--default-issuer-group=cert-manager.io"}]'

这篇关于Kubectl补丁:是否可以在一次补丁执行中将多个值添加到数组中的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆