[英]Azure devops pipeline for AKS Kubectl task failing to deploying manifest into AKS
[英]How to pass in environment variables when deploying to AKS from Azure DevOps
我想部署一個自定義 SQL 服務器映像,它需要使用以下管道定義將 4 個環境變量傳遞給 AKS:
jobs:
- deployment: Deploy
condition: and(succeeded(), not(startsWith(variables['Build.SourceBranch'], 'refs/pull/')))
displayName: Deploy
pool:
vmImage: $(vmImageName)
environment: 'xxxx.default'
strategy:
runOnce:
deploy:
steps:
- task: KubernetesManifest@0
displayName: Create imagePullSecret
inputs:
action: createSecret
namespace: $(k8sNamespace)
secretName: $(imagePullSecret)
dockerRegistryEndpoint: $(dockerRegistryServiceConnection)
- task: KubernetesManifest@0
displayName: Deploy to Kubernetes cluster
inputs:
action: deploy
namespace: $(k8sNamespace)
manifests: |
$(Pipeline.Workspace)/manifests/deployment.yml
$(Pipeline.Workspace)/manifests/service.yml
imagePullSecrets: |
$(imagePullSecret)
containers: |
$(containerRegistry)/$(imageRepository):$(tag)
在這種情況下,清單文件是由 Azure DevOps 創建的,那么如果我想為這個容器注入 SA_Password / inistial 用戶配置,我該怎么做?
kubernetes-manifest 部署操作沒有添加額外環境變量的選項。 隨時在https://github.com/microsoft/azure-pipelines-tasks/issues打開功能請求
您可以執行兩個選項,使用 yq ( https://github.com/mikefarah/yq ) 編寫腳本以在部署前更新清單文件
或者使用 KubernetesManifest 補丁選項( https://docs.microsoft.com/en-us/azure/devops/pipelines/tasks/deploy/kubernetes-manifest?view=azure-devops#patch-action ),例如
steps:
- task: KubernetesManifest@0
displayName: Patch
inputs:
action: patch
kind: pod
name: demo-5fbc4d6cd9-pgxn4
mergeStrategy: strategic
patch: '{"spec":{"template":{"spec":{"containers":[{"env":[{"name":"SA_Password","value":"1234"}]}]}}}}'
kubernetesServiceConnection: someK8sSC
namespace: default
我對 Tummala 評論的貢獻是,如果您可以控制 docker 圖像的構建方式,我建議從那里添加 env 變量。 因此,如果您有一個在開發分支上提交時觸發的 docker 構建,您可以將該環境傳遞給該 docker 映像。
如果您對以下內容感興趣,我在 Azure DevOps 中有專門的帖子討論 CI/CD: 使用 Z3A580F142203677F1F0BC30898F63 為 Kubernetes 構建 CI/CD 管道。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.