【问题标题】:Workflow in CI/CD Pipeline - Jenkins, Kubernetes and SVN/GitHub Code RepositoryCI/CD 管道中的工作流程 - Jenkins、Kubernetes 和 SVN/GitHub 代码库
【发布时间】:2018-10-10 05:52:14
【问题描述】:

我正在尝试使用 Jenkins、Kubernetes 和我的 SVN 存储库来实现 CI/CD 管道以部署我的 Spring Boot 微服务。在探索的过程中,我发现在 Jenkins+Kubernetes 部署中,Docker 镜像是从镜像注册表中拉取的。当我探索示例实现时,我发现了在 Jenkins 中自动构建图像的选项以及用于定义代码存储库(如 GitHub/SVN)的选项。

关于 Jenkins 的工作流程,我有过疑惑,在这里补充一下,

1. 如果 Docker 镜像是从一些镜像注册表中提取以使用 Jenkins 和 Kubernetes 进行部署,那么为什么我们要在 Jenkins 中再次定义代码存储库源链接(GitHub/SVN)?

怀疑的原因- 我在想,Kubernetes 和 Jenkins 仅依赖于镜像仓库通过镜像拉取进行部署。所以我怀疑为什么我们在 Jenkins 中定义我们的 GitHub 存储库链接。这只是这个怀疑的原因。如果我想错了方向,请纠正我。

2. 当我探索时,我发现使用一些脚本在 Jenkins 中自动构建 Docker 映像选项(我不知道正确的工作原理,我在你的视频中找到了)。因此,如果我们从镜像注册表中提取镜像,那么为什么我们再次在 Jenkins 中使用自动 Docker 镜像构建呢?如果这是一个替代选项,那么 Jenkins 中的图像拉取和自动图像构建有什么区别?这些都符合我们的要求吗?或者这背后还有什么其他的概念?

【问题讨论】:

    标签: jenkins kubernetes


    【解决方案1】:

    很抱歉,我没有完全理解您的问题。我试图解释我们的 CI/CD 工作流程。也许这会有所帮助。

    1. 开发人员将代码提交到 GIT。
    2. Jenkins 自动
      • 签出回购
      • 构建 Spring Boot 微服务(测试、代码覆盖等)
      • 构建 docker 镜像
      • 将 docker 镜像提交到注册表

    使用不同的开关/构建参数,开发人员可以决定构建仅部署到特定快照注册表的 SNAPSHOT 构建,仅供开发人员使用,或者构建真正的版本。

    开发人员还可以决定之后将 Docker 映像部署到 int 或 prod 系统。在这种情况下,Kubernetes 从注册表(Jenkins 之前在那里部署)中拉取镜像。

    【讨论】:

    • 感谢您的回复。我想在这里,詹金斯直接从镜像注册表中提取镜像并进行部署。我之前的假设是镜像在本地机器中构建并推送到镜像注册表。从那里詹金斯拉。所以我觉得jenkins中repository link的作用是什么。现在我明白了詹金斯从 repo 和构建图像并提交到注册表中进行检查。这是我的困惑。我希望这是我的困惑。
    • 在我的想法中,我认为在不使用存储库的情况下,Jenkins 从本地推送的注册表中提取图像。这就是为什么我问第一个困惑。你明白我的意思了吗?
    • 我认为本地构建的镜像不应该被推送到远程注册表,但 Jenkins 应该构建并将它们推送到注册表。
    • 是的..我明白这一点。但是当我探索时,我发现很少有文档直接推送到像 dockerhub 这样的远程注册表中。这就是为什么我对此感到怀疑。而且直接推送到 AWS ECR 也是可能的。这样我就走错了方向。我希望你能理解我在这里的困惑。
    【解决方案2】:

    我们正在开发一个名为 Jenkins X 的开源项目,这是 Jenkins 基金会提出的一个子项目,旨在使用 Jenkins 和 GitOps 在 Kubernetes 上自动化 CI/CD 以进行推广。

    当您将更改合并到 master 分支时,Jenkins X 会为您的应用创建一个新的语义版本化发行版(pom.xml、jar、docker image、helm chart)。然后,管道会自动生成拉取请求,以通过 GitOps 在所有环境中推广您的应用程序。

    这里是 a demo of how to automate CI/CD with multiple environments on Kubernetes using GitOps,用于在 Pull Requests 上的环境和预览环境之间进行推广 - 使用 Spring Boot 和 nodejs 应用程序(但我们支持多种语言 + 框架)。

    请注意,Jenkins X 目前只支持 git。

    【讨论】:

      猜你喜欢
      • 2019-01-06
      • 1970-01-01
      • 2019-11-24
      • 2021-11-14
      • 1970-01-01
      • 2019-12-31
      • 2010-12-18
      • 1970-01-01
      • 2018-10-17
      相关资源
      最近更新 更多