如何在从Azure DevOps部署到AKS时传递环境变量

3

我想部署一个自定义的 SQL Server 镜像,需要通过以下管道定义将 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 /初始用户配置,我该怎么做?


不确定你想在哪里传递这些变量。能详细说明一下吗? - undefined
那是一个很好的问题。我也想知道。Azure DevOps正在生成清单文件。在那里,你通常会指定这些变量。然而,我没有看到在这里注入这些变量的方法。 - undefined
2个回答

1

https://learn.microsoft.com/en-us/azure/devops/pipelines/tasks/deploy/kubernetes-manifest?view=azure-devops#deploy-action

kubernetes-manifest 部署操作没有添加额外环境变量的选项。请随意在https://github.com/microsoft/azure-pipelines-tasks/issues上提出功能请求。

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

-1

对于Tummala的评论,我认为如果您可以控制Docker镜像的构建方式,建议从那里添加环境变量。因此,如果您有一个在提交到develop分支时触发的Docker构建过程,您可以将该环境变量传递给该Docker镜像。

我有一篇专门讨论Azure DevOps中CI/CD的文章,如果您感兴趣,可以查看:使用Azure DevOps和GitFlow构建Kubernetes的CI/CD流水线


2
如果你在Docker中嵌入变量,就无法将相同的镜像部署到不同的环境中。 - undefined
在12因素应用程序原则中,将变量设置为运行时而不是构建时是更好的选择。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接