更新时出现 helm 错误:升级失败:补丁列表中的顺序

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

我在 helm 部署方面遇到问题。这是在我向部署添加新的环境变量后发生的。

当我执行时:

helm upgrade [RELEASE] [CHART]

我收到以下错误:

Error: The order in patch list:
[
    map[name:APP_ENV value:prod]
    map[name:MAILER_URL value:...] 
    map[name:APP_VERSION value:v0-0-3] 
    map[name:APP_COMMIT_SHA value:...]
]
 doesn't match $setElementOrder list:
[
    map[name:APP_ENV] 
    map[name:COMPOSER_HOME] 
    map[name:PHP_XDEBUG_ENABLED] 
    map[name:DATABASE_DRIVER] 
    map[name:DATABASE_HOST] 
    map[name:DATABASE_NAME] 
    map[name:DATABASE_USER] 
    map[name:SECRET] 
    map[name:INDEX_HOSTS]
    map[name:MAILER_FROM_ADDRESS] 
    map[name:MAILER_FROM_NAME] 
    map[name:UPLOAD_DIR] 
    map[name:ARCHIVE_DIR] 
    map[name:CATALOG_STORAGE_DIR] 
    map[name:ASSET_STORAGE_DIR] 
    map[name:TMP_STORAGE_DIR] 
    map[name:UPLOAD_TMP_DIR] 
    map[name:APP_VERSION] 
    map[name:APP_COMMIT_SHA] 
    map[name:APP_CRON] 
    map[name:DATABASE_PASSWORD] 
    map[name:MAILER_URL]
    ...
]

但是,如果我使用标志

--dry-run
执行相同的命令,我不会收到任何错误 (
helm upgrade [RELEASE] [CHART] --dry-run
)

我不知道这个问题的原因或如何解决

kubernetes kubernetes-helm
5个回答
45
投票

我发现这个问题的原因是我有一些重复的envVar。在我的部署中,我有:

...
spec:
  template:
    spec:
      container:
        env:
        - name:  ENV_VAR_NAME
          value: "test"
        - name:  ENV_VAR_NAME
          value: "test"
...

删除重复变量后:

...
spec:
  template:
    spec:
      container:
        env:
        - name:  ENV_VAR_NAME
          value: "test"
...

helm upgrade [RELEASE] [CHART]
工作得很好


2
投票

我有同样的错误,但没有重复的变量。按字母顺序重新排序环境变量对我有用:-(


0
投票

我有同样的错误,但没有重复的环境变量。我通过执行以下操作强制更新:

helm upgrade [RELEASE] [CHART] --force

0
投票

我通过删除重复的变量修复了相同的错误。


0
投票

我知道这是一篇旧帖子,有一个已接受的答案,但我想回答那些看到这篇文章但没有找到重复变量的人,就像我一样。

如果您传递

 --reuse-values
值标志,您也可能会发现这个问题,因为 helm 会重用以前的值,并且当变量更改时,helm 可能会将变量追加到列表中,而不是替换,最终导致重复变量并最终抛出相同的错误。

解决方法是简单地在没有标志的情况下运行。

© www.soinside.com 2019 - 2024. All rights reserved.