在Azure管道中,我下载kubernetes部署文件。yml属性文件,其中包含以下内容。
spec:
imagePullSecrets:
- name: some-secret
containers:
- name: container-name
image: pathtoimage/data-processor:$(releaseVersion)
imagePullPolicy: Always
ports:
- containerPort: 8088
env:
我的意图是从管道变量$(releaseVersion)
中获取值。但是似乎kubernetes
任务不允许从管道变量访问此值。
我尝试使用内联配置类型,并且可以使用。这意味着,如果将与内联内容相同的配置复制到kubernetes
任务配置中,则可以使用。
无论如何,我可以通过文件使它适用于配置吗?
答案 0 :(得分:1)
您应该将其作为管道的一部分,以替换部署模板中的环境变量
类似的东西:
- sed -i "s/$(releaseVersion)/${RELEASE_VERSION_IN_BUILD_RUNNER}/" deployment.yml
- kubectl apply -f deployment.yml
您可以在管道中设置变量。 https://docs.microsoft.com/en-us/azure/devops/pipelines/process/variables?view=azure-devops&tabs=yaml%2Cbatch
答案 1 :(得分:1)
据我了解,您可能希望在执行构建时替换Deployment.yml文件内容的变量。
您可以使用一个名为 Replace Tokens task 的任务(注意:此任务名称下的令牌与PAToken不同)。设置VSTS Build / Release流程时,该任务支持使用环境变量替换项目中文件的值。
首先从市场上安装替换令牌,然后将替换令牌任务添加到管道中。
在Root目录中配置.yml文件路径。对我来说,我的目标文件位于本地文件的Drop文件夹下。然后,指出要操作和替换的文件。
有关配置的更多参数,您可以查看我曾经参考过的以下文档:https://github.com/qetza/vsts-replacetokens-task#readme
注意:请先执行此任务,然后再将其部署到Kubernetes任务,以便将更改应用于Kubernetes集群。
这里还有另外一个sample blog供您参考。