我的 Azure 管道使用我的 kubernetes 配置執行 kubernetes@1 任務:
apiVersion: apps/v1
kind: Deployment
metadata:
name: tennant-service-deployment
labels:
app: tennant-service
spec:
replicas: 3
selector:
matchLabels:
app: tennant-service
template:
metadata:
labels:
app: tennant-service
spec:
containers:
- name: tennant-service
image: cronesharedwesteurope.azurecr.io/tennant-service:dev
ports:
- containerPort: 80
imagePullSecrets:
- name: registrysecret
您可以看到,目前我的影像已硬編碼在我的 yaml 檔案 (tennant-service:dev) 中。
我希望用戶用 azure devops 管道引數告訴我他想要哪個版本(例如,dev / 1.0 / latest)。但是因為 kubernetes 是一個 yaml 組態檔,我不能用引數更改它,可以嗎?有什么工具可以做到這一點嗎?
uj5u.com熱心網友回復:
@PassionateDeveloper 對于我的案例目標是 GKE,我們使用 Azure DevOps 進行 CI/CD。要求是使用 Build.BuildID 作為影像標簽,以唯一區分所有影像標簽。這是我用來滿足要求的東西。
trigger:
- none
pool:
name: {name of my self hosted agent pool}
variables:
imageTag: '$(Build.BuildId)'
我的 kubernetes 清單看起來像這樣。
apiVersion: apps/v1
kind: Deployment
metadata:
name: myapp
labels:
app: authenticator
spec:
replicas: 1
selector:
matchLabels:
app: myapp
template:
metadata:
labels:
app: myapp
spec:
nodeSelector:
kubernetes.io/os: linux
containers:
- name: myapp
image: gcr.io/myproject2/myapp:${imageTag} ---> imageTag to be replaced with replaceToken task
ports:
- containerPort: 80
我已經使用
uj5u.com熱心網友回復:
我希望用戶用 azure devops 管道引數告訴我他想要哪個版本(例如,dev / 1.0 / latest)。
為了滿足您的要求,您可以使用RegEx Match 
雅姆檔案:

您可以使用此站點來轉換正則運算式:Regex Generator
或者您也可以使用替換令牌任務。參考這張票:How to apply a variable in Azure Pipelines to a node app during build
uj5u.com熱心網友回復:
Microsoft 有一些關于為 Kubernetes 容器設定 Azure DevOps 管道的很好的檔案。該示例在管道中使用KubernetesManifest@0任務,允許使用管道變數或引數指定容器標簽。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/534615.html
上一篇:k8s容器初始化和負載均衡
