【问题标题】:Passing a json-string command arg in a YAML file在 YAML 文件中传递 json 字符串命令 arg
【发布时间】:2018-02-06 19:42:50
【问题描述】:

我正在尝试运行一个更改 kubernetes cronjob 映像值的命令,如 here 所述。 但是我没有在 cmd 中输入这个命令,而是尝试通过 Container Registry 的构建触发器来运行它。

我尝试将 ' 和 \ 作为转义字符。

  steps:
     - name: 'gcr.io/cloud-builders/kubectl'
      args: [
      "patch",
       "cronjob",
       "cron-history-orders",
       "--type=json",
      "-p=[{'"op'":'"replace'",'"path'":'"/spec/jobTemplate/spec/template/spec/containers/0/image'",'"value'":'"python:3.5'"}]"
       ]
      env:  ['CLOUDSDK_COMPUTE_ZONE=europe-west3-c','CLOUDSDK_CONTAINER_CLUSTER=xxx-prod']

或者当我尝试时

   "-p='[{\"op\":\"replace\", \"path\": \"/spec/jobTemplate/spec/template/spec/containers/0/image\", \"value\":\"python:3.5\"}]'"

  "-p='[{'op':'replace','path':'/spec/jobTemplate/spec/template/spec/containers/0/image','value':'python:3.5'}]'"

我收到error loading template: json: cannot unmarshal object into Go value of type []json.RawMessage

【问题讨论】:

  • 您所指的链接是关于使用新构建的映像更新部署,但是 Container Registry 构建触发器用于构建新映像。如果你能提供更多关于你想要做什么的信息,那将有助于提出一些解决方案。

标签: json yaml google-container-registry google-kubernetes-engine build-triggers


【解决方案1】:

您无疑意识到,这里的挑战是您正在处理转义层——您的 yaml 包含将在命令行上传递的 json。

我可以通过这个 yaml 传递这个命令:

steps:
- name: 'gcr.io/cloud-builders/kubectl'
  args: [ "patch", "cronjob", "cron-history-orders", "--type=json", "-p='[{\"op\":\"replace\", \"path\": \"/spec/jobTemplate/spec/template/spec/containers/0/image\", \"value\":\"python:3.5\"}]'" ]
  env:  ['CLOUDSDK_COMPUTE_ZONE=europe-west3-c','CLOUDSDK_CONTAINER_CLUSTER=xxx-prod']

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-12-30
    • 1970-01-01
    • 2018-08-23
    • 1970-01-01
    • 2021-09-10
    • 1970-01-01
    • 1970-01-01
    • 2018-10-18
    相关资源
    最近更新 更多