我在 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
)
我不知道这个问题的原因或如何解决
我发现这个问题的原因是我有一些重复的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]
工作得很好
我有同样的错误,但没有重复的变量。按字母顺序重新排序环境变量对我有用:-(
我有同样的错误,但没有重复的环境变量。我通过执行以下操作强制更新:
helm upgrade [RELEASE] [CHART] --force
我通过删除重复的变量修复了相同的错误。
我知道这是一篇旧帖子,有一个已接受的答案,但我想回答那些看到这篇文章但没有找到重复变量的人,就像我一样。
如果您传递
--reuse-values
值标志,您也可能会发现这个问题,因为 helm 会重用以前的值,并且当变量更改时,helm 可能会将变量追加到列表中,而不是替换,最终导致重复变量并最终抛出相同的错误。
解决方法是简单地在没有标志的情况下运行。