【问题标题】:Bamboo+Docker+Kubernetes deploymentBamboo+Docker+Kubernetes 部署
【发布时间】:2017-11-09 06:42:22
【问题描述】:

我们目前正在使用 kubernetes+docker。目前我想知道如何在开发和发布期间将竹子集成到我们的部署过程中。

我们现在的CI流程是这样的:

  • dev 签入代码更改为分支“develop”
  • bamboo 触发器构建过程:
    • 代码已从 git 签出
    • 运行构建代码 (java)
    • 运行单元+集成测试
    • 将工件部署到工件
    • 使用工件构建 docker 映像
    • 使用工件版本标记 docker 映像
    • 将图像推送到 docker hub

这是目前的工作流程。现在我想使用竹子部署功能将 docker 镜像部署到我们的 kubernetes 集群。

从技术角度来看应该很容易:

  • SSH 到主节点
  • 使用新映像从复制控制器开始滚动更新

我的问题是如何获取在我的部署任务中构建期间创建的 docker 映像的名称。我已经想到我可能会创建一个属性文件,其中包含我在构建过程中存储为工件的变量。 我可以在我的部署过程中读出这个属性文件...

不知何故,这感觉更像是一种解决方法。另一个想法是直接在构建任务中进行部署,根本不使用部署功能...

还有其他选择吗?还有其他选择/更好的主意吗? 想法/帮助会很好:)

【问题讨论】:

  • 我假设“SSH 到主节点”是指使用客户端(kubectl rolling-update)或将 JSON/HTTP 发送到主节点。不幸的是,我不知道您的主要问题的答案。也许它适合竹邮件列表?

标签: git docker continuous-integration bamboo kubernetes


【解决方案1】:

我不熟悉 Bamboo,但 Kubernetes 1.2 将支持 Deployment API,一旦您将 Deployment 规范更新为新的图像标签,它将代表您执行滚动更新。

或者,您可以尝试基于 Kubernetes 构建的 Openshift 3。它支持由图像推送触发的部署: https://github.com/openshift/origin/blob/master/docs/deployments.md#triggers

【讨论】:

    【解决方案2】:

    我在非常相似的构建/部署管道中遇到了类似的问题,我最终不得不从构建步骤输出一个属性文件并将其设为构建工件,然后由部署项目读取。

    您似乎只能从部署项目中访问一组有限的属性:https://confluence.atlassian.com/bamboo/variables-for-deployment-environments-342754180.html

    话虽如此,导出还是很容易的:

    在构建项目中,将您想要的属性导出到文件中,例如 project.properties 并将其标记为构建工件。

    然后在部署项目中,使用 Inject Bamboo variables 任务,这些值将提供给部署项目

    ${bamboo.inject.<property name>}
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-14
      • 2018-08-24
      • 1970-01-01
      • 2021-07-24
      • 1970-01-01
      相关资源
      最近更新 更多