在gitlab中使用json对象时出现无效字符

问题描述 投票:0回答:1

这是我在 gitlab bash 中使用的代码:

kubectl --kubeconfig=$KUBECONFIG -n $NAMESPACE_NAME patch service $CI_PROJECT_NAME -p '{"spec": {"selector": {"app.kubernetes.io/instance": "${HELM_NAME}-blue"}}}' 

但是部署时出现如下错误: 来自服务器的错误(BadRequest):寻找对象键字符串开头的无效字符's'

我想使用

kubectl patch <resource>
更新对象。

代码问题出在哪里?我哪里做错了? 我认为错误与 json 对象中的单引号和双引号有关。但我找不到正确的语法。

json kubernetes gitlab-ci kubectl jsonobjectrequest
1个回答
0
投票

解决方案:

kubectl --kubeconfig=$KUBECONFIG -n $NAMESPACE_NAME patch service $CI_PROJECT_NAME -p "{\"spec\": {\"selector\": {\"app.kubernetes.io/instance\": \"${HELM_NAME}-blue\"}}}"

为什么?

这是 Bash 的事情,以及

"
'
之间的区别。

"
- 字符串中引用的环境变量被扩展

$ export HELM_NAME=release123
$ echo "${HELM_NAME}"
release123

'
- 环境变量未扩展

$ export HELM_NAME=release123
$ echo '${HELM_NAME}'
${HELM_NAME}
© www.soinside.com 2019 - 2024. All rights reserved.