helm-wrapper icon indicating copy to clipboard operation
helm-wrapper copied to clipboard

values 传yaml文本 invalid character 'x' after object key:value pair"

Open lic0914 opened this issue 3 years ago • 2 comments

版本最新的 传值的 values 如下 获取方式

values="`curl -s -X GET $url --header 'Content-Type: application/json' | jq ".data"`"
env:\n  ASPNETCORE_ENVIRONMENT: Staging\n  PayOrderAppSetting__RunEnvironment: Test\nglobal:\n  cattle:\n    clusterId: c-9lmh5\n    clusterName: k8s-online\n    rkePathPrefix: \"\"\n    rkeWindowsPathPrefix: \"\"\n    systemDefaultRegistry: \"\"\n    url: https://rancher.xxxx.com\n  systemDefaultRegistry: \"\"\nimage:\n  pullPolicy: Always\n  tag: final-0.0.2\ningress:\n  hosts:\n  - host: www.xxx.cn\n    paths:\n    - path: /gateway/xxx\n      pathType: ImplementationSpecific\nreplicaCount: 1\n

更新

res=`curl -s  -X PUT $url     --header 'Content-Type: application/json'     -d "{ \"set\": [\"image.tag=$version\"],  \"repo\": \"$Chart_Repo\",  \"values\": \"$values\"  }"`
echo "response : $res"
code=`echo $res | jq ".code"`
exit $code

在更新时会出现

{"code":1,"error":"invalid character 'e' after object key:value pair"}

在 Postman 中执行 正常

lic0914 avatar Jun 22 '22 09:06 lic0914

查看源码了解到 是 Gin 在 c.ShouldBindJSON抛出异常 最终原因确定是 values值 在 curl 中转义造成的 当前需要满足以下条件

  • values 是变量
  • 使用curl做请求

是否考虑使用 values 做base64编码在进行发送呢 谢谢!!!

lic0914 avatar Jun 23 '22 01:06 lic0914

@lic0914 base64 确实是个好办法

opskumu avatar Jun 23 '22 13:06 opskumu