【问题标题】:Run kubectl patch statefulset in Jenkins pipeline在 Jenkins 管道中运行 kubectl patch statefulset
【发布时间】:2021-05-21 18:52:04
【问题描述】:

我需要使用 Jenkins 更新 statefulset。更准确地说,更新 init 容器中的主题。 这是我在 Jenkins 中使用的代码(在终端中运行良好):

kubectl patch statefulset test-deploy -n test -p '{"spec": {"template": {"spec":{"initContainers":[{"name": "theme", "image": "xxxx.dkr.ecr.us-east-1.amazonaws.com/testrepo:latest"}]}}}}'

我得到的错误:期待“}”,在第 293 行第 192 列找到“-”。 年龄": "xxx.dkr.ecr.us-east-1.am

当我将双引号改为单引号时: kubectl patch statefulset keycloak-job-deploy -n ci-environment-dev -p '{'spec': {'template': {'spec':{'initContainers':[{'name': 'theme', 'image ':'837236160124.dkr.ecr.us-east-1.amazonaws.com/ci/keycloak-theme-thermo-fisher-develop:develop-0.0.1-3'}]}}}}'

我知道了:

来自服务器的错误 (BadRequest):无效字符 's' 正在寻找对象键字符串的开头

你能帮我弄清楚引号有什么问题以及我应该使用什么命令吗?

【问题讨论】:

  • 我发现使用kubectl apply 比使用patch 更容易

标签: jenkins patch kubectl kubernetes-statefulset


【解决方案1】:

我想通了。这与 Groovy 中的筛选有关。这是正确的版本:

kubectl patch statefulset test-deploy --namespace=${namespace} -p '{\"spec\": {\"template\": {\"spec\":{\"initContainers\":[{\"name\": \"theme\", \"image\": \"${theme}\"}]}}}}'

【讨论】:

    最近更新 更多