当前位置: 首页 > 知识库问答 >
问题:

如何使用带Helm的库伯内特斯CI/CD中的Azure Devops发布管道变量?

皇甫心思
2023-03-14

我目前正致力于为我的客户机的新Kubernetes群集建立一个CI/CD管道,这些群集使用Helm和Azure DevOps服务器托管在Harbor上,我对如何以一种简化的方式处理应用程序变量(在.NET Core中的appsettings)感到有点困惑。目前,这些变量作为发布变量存储在DevOps中,一些Prod变量由另一个组织管理。

我的想法是,我想要单独的构建和部署管道,由构建负责恢复、构建、触发单元测试,并最终将Docker映像推送到on prem注册表。然后,使用多个部署管道来表示可能希望使用Docker映像的各种环境(开发、测试、阶段、产品)和应用程序,利用它们自己的配置

但是,我还没有找到一种方法,允许我将发布管道中的变量注入到发布步骤上的Docker应用程序中,因为那时我拥有的不是我的原始应用程序,而是它的Docker映像。我以前使用过ConfigMaps来解决这个问题,但是由于我无法在本地拥有文件来表示Prod环境,因此我需要某种方法来覆盖变量,或者从Azure Devops的发布变量生成ConfigMap。

我觉得这一定是一个常见的场景,但我发现的大多数解决方案要么与在应用程序的repo中维护面向环境的confightml" target="_blank">maps或values文件有关,要么与使用Azure Cloud似乎独有的功能有关。

一种解决方案是将docker构建/推送步骤移动到发布管道中,并在docker化之前将变量注入应用程序。然而,这感觉就像一个黑客,只会导致同一应用程序的无数Docker映像,但需要调整应用程序设置文件,这将不得不在多个环境中进行版本控制。

共有1个答案

闻人思聪
2023-03-14

你可以尝试通过库伯内特斯清单任务来处理这个问题。

在构建或发布管道中使用Kubernetes清单任务来烘焙清单并将其部署到Kubernetes集群。

如果您的构建和部署都在Azure管道中运行,那么您确实有一个上一层,在将清单应用到集群之前,我们可以在其中执行这些替换。

可以在多个范围级别上定义变量,其中更直接的级别将覆盖最远的级别。

它还能够将相同的清单应用于两个环境(暂存和生产),但设置不同

您还可以查看以下博客:

  • 如何使用Azure管道在Kubernetes清单中注入变量
 类似资料:
  • 我正在尝试学习使用Jenkins和Kubernetes为我的SpringBoot微服务部署实现CI/CD管道。 我点击以下链接以供参考, https://dzone.com/articles/easily-automate-your-cicd-pipeline-with-jenkins-he https://medium.com/jfrogplatform/easily-automate-your

  • 我打算有一个带有Jenkins的光盘管道,它接受我的应用程序,将码头工人映像发布到我的私人码头工人存储库。我想我知道怎么做。 我不确定的是库伯内特斯部分。我想把那个图像部署到我的私人库伯内特斯集群(目前是1个主集群) 问:安装了 kubectl 和 docker 的詹金斯从站是否需要成为 Kubernetes 集群的一部分才能触发部署?如何触发该部署?

  • 我怎样才能使用入口呢?我尝试使用NodePort和--Target etPort=1001,我在servicePort中添加了80在。 kubectl公开部署测试--Target-port=1001--type=NodePort 我得到了错误 找不到后端-404 我使用的是正确的方法还是需要遵循其他方法?

  • 我假设没有愚蠢的问题,所以这里有一个我找不到直接答案的问题。 现在的情况 我目前有一个运行1.15的Kubernetes集群。AKS上的x,通过Terraform部署和管理。AKS最近宣布Azure将在AKS上停用Kubernetes的1.15版本,我需要将集群升级到1.16或更高版本。现在,据我所知,直接在Azure中升级集群不会对集群的内容产生任何影响,即节点、豆荚、秘密和当前在那里的所有其他

  • 我是Kubernetes的新手,开始阅读文档。通常使用“endpoint”一词,但文档中缺乏明确的定义。 Kubernetes的“终点”是什么?它位于哪里? 我可以想象“endpoint”是单个“节点”的某种接入点,但这只是猜测。