有什么方法可以将Cloud Build变量转换为Helm值吗



我有一个cloudbuild文件,它使用helm package {service}命令在部署前打包一个图表文件。我的意图是将cloudbuild文件中的$COMMIT_SHA env值传递给Helm,这样我就可以将提交SHA添加到k8s部署的标签中。问题是,据我所知,$COMMIT_SHA仅在cloudbuild文件中可用。Helm只能访问values.yamlChart.yaml文件中的值。

我可能只是严重误解了什么,但我看不到任何前进的道路。我已经通读了helm和云构建文档。它们似乎暗示云构建可以使用环境变量来构建项目,但我不确定是否有任何方法可以将值从一个传递到另一个。

我认为您在这里的困惑是,您希望在helm installhelm upgrade命令上实现这一点,而不是在helm package上实现。

如果不查看cloudbuild.yaml文件,很难知道您的设置是什么样子的,但我想您有两个步骤,一个用于打包模板,另一个用于部署模板。

因此,在部署步骤中,您可以执行以下操作将$COMMIT_SHA传递到图表:

helm upgrade {chart-name} {folder} --install
--set kubernetes.deployment.label=$COMMIT_SHA
-f values.yaml

编辑:

在对cloudbuild步骤有了更多了解之后,在实际打包图表之前,似乎必须完成您想要实现的目标。

由于管道正在从中央存储库下载模板文件,您稍后将使用该存储库来生成包,因此您需要介于两者之间的步骤,将$COMMIT_SHA作为标签添加到部署中。

想象一下,您的deployment.yaml文件中有这样的内容:

apiVersion: apps/v1
kind: Deployment
metadata:
name: <name>
namespace: <namespace>
labels:
foo: placeholder

然后,您希望标签foo的值为$COMMIT_SHA,而不是占位符,在运行helm package之前,您必须运行以下内容:

sed -i 's/placeholder/$COMMIT_SHA/g' deployment.yaml

因此,使用这种方法,每次触发管道时,您都会通过添加$COMMIT_SHA来动态生成不同版本的图表,正如您最初提到的那样。

最新更新