我有一张头盔图部署到三个环境(开发,阶段和生产)。我正在像这样运行此命令:
helm upgrade --install --namespace=$DEPLOYMENT_ENV ingress-external-api -f ./ingress-external-api/values-$DEPLOYMENT_ENV.yaml ./ingress-external-api --atomic
$DEVELOPMENT_ENV
是dev
,stage
或prod
的地方。
这里重要的事实是只有values-prod.yaml
具有正确的yaml定义。其他所有values-dev.yaml
和stage
都相同,因此将不会部署任何发行版。
导致以下掌舵错误:
+ helm upgrade --install --namespace=$DEPLOYMENT_ENV ingress-external-api -f ./ingress-external-api/values-$DEPLOYMENT_ENV.yaml ./ingress-external-api --atomic
Release "ingress-external-api" does not exist. Installing it now.
INSTALL FAILED
PURGING CHART
Error: release ingress-external-api failed: no objects visited
Successfully purged a chart!
Error: release ingress-external-api failed: no objects visited
进一步导致我的位桶管道停止并失败。
但是您也看到那没有帮助。
所以,我的问题是,如果找不到任何可替代其模板的内容,我该如何告诉舵手根本不抛出错误?
我不确定这是否应由舵手负责。为什么要用缺少的值更新dev / stage?似乎有点奇怪。
如果您不打算在那里更新任何内容,只需在生产环境中运行一次即可。
[如果您坚持那样做,那么也有可能在Bash中“撒谎”您返回的代码并在流水线级别实现它。
如果您真的不想部署任何东西,可以使用空的values.yaml文件,然后将if和loops添加到模板文件中。基本上,您必须用一个空结构填充values.yaml,例如:]
my-release:
value:
other-value:
然后您可以执行以下操作:
{{ if .Values.my-release.value }}