【发布时间】:2020-11-14 10:37:44
【问题描述】:
我有一个带有一个容器的 deployment.yml 文件,如下所示:
apiVersion: apps/v1
kind: Deployment
[...]
spec:
containers:
- name: my-app
image: acr/my-app:1.0 #-> should be completly overridden!
还有一个 Azure DevOps 作业,它会构建/推送并部署我的应用程序:
variables:
imageRepository: 'my-app'
containerRegistry: 'acr'
dockerfilePath: '$(Build.SourcesDirectory)/myapp/Dockerfile'
tag: '$(Build.BuildId)'
[...]
- task: KubernetesManifest@0
displayName: Deploy on kubernetes cluster
inputs:
action: 'deploy'
kubernetesServiceConnection: '...'
namespace: 'default'
manifests: '$(Build.SourcesDirectory)/deployment.yml'
containers: |
$(containerRegistry)/$(imageRepository):$(tag)
我想覆盖 deployment.yml 中的完整图像参考值。但我不知道如何编写一个工作占位符。我尝试了很多不同的东西,从 $(VALUE) 到 VALUE 到 ``{{ VALUE }} ,例如:
image: ${{ variables.containerRegistry }} / ${{ variables.imageRepository }} : ${{ variables.tag}}。但是占位符根本没有被替换,并且 pod 失败并显示无效的图像引用。
Azure DevOps 可以做到这一点,还是我需要通过 bash 任务或类似的方式覆盖图像值?
更新
澄清我的要求:
我想覆盖完整的字符串,因为我想在多个阶段重用文件,其中只有注册表标签是困难的。例如:acr1/my-app:tag1 和 acr2/my-app:tag2
【问题讨论】:
标签: azure kubernetes azure-devops azure-aks