【问题标题】:Defining Kubernetes Replica Set/Deployment and services in Jenkins在 Jenkins 中定义 Kubernetes 副本集/部署和服务
【发布时间】:2018-05-05 05:07:51
【问题描述】:

我正在尝试使用 Kubernetes 和 Jenkins 实现 CI/CD 管道。现在我正在探索使用 Jenkins 文件、带有 Docker Hub 的 SVN 存储库的 CI 部分。将 Docker 映像推送到注册表 docker hub 后,我需要将其部署到具有 3 个集群主机和 15 个工作机/节点的 Kubernetes 集群中。

当我阅读部署到 Kubernetes 集群时,我有几个疑问:

Jenkins 中的每个部署定义都是使用 shell 脚本编写的。如果我需要为这些部署创建部署和服务,如何在 Jenkins 中定义?我可以在哪里为 ReplicaSet、部署和服务创建 YAML/YML 文件?我需要为此使用 shell 脚本吗?还是用其他方法?

【问题讨论】:

  • 通常你会使用 Jenkins 来拉取源代码。然后,您的代码库将包含用于部署的适当配置 yaml。然后在 Execute Shell 下的 Build 部分中,您可以添加适当的 kubectl 命令来部署您的集群并相应地对其进行扩展。
  • 好的,我明白了。但是我们只提到了该部署的更新。图像拉动是如何发生的?会自动拉?或者我们是否需要在 Jenkins 的那个 shell 部分手动添加任何东西?我不明白它的工作流程。

标签: jenkins kubernetes


【解决方案1】:

您可以使用 Kubernetes Helm 在称为 Helm 图表的可参数化模块中定义您想要启动的内容。许多图表可用于 nginx 和 postgresql 等常用软件。这允许“基础架构即代码”的工作方式 - 以声明方式指定您想要的内容,而不是使用脚本手动将集群从当前所处的状态变为所需的状态,只需依靠 Helm 为您执行此操作!这是 Helm 的一个很好的用例。

【讨论】:

  • 好的。谢谢你。目前我仅基于 shell 脚本进行搜索。这对我来说是新信息。让我检查一下您建议的 Helm。但是你能给出在部署时从 docker hub 拉取镜像的想法吗? .如何提取图像以及如何在 jenkins 中定义部署/复制?这是我的困惑。
  • Kubernetes 为你拉取镜像。不需要单独的步骤。
【解决方案2】:

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

如果您想了解如何在 Kubernetes 上使用 helm 进行包管理、使用 GitOps 在环境之间进行升级以及在 Pull Requests 上预览环境来自动化 CI/CD 的多个环境,您可能想查看my recent talk on Jenkins X at DevOxx UK,我在那里进行了现场演示这在 GKE 上。虽然 Jenkins X 在 AWS, AKS and GKE and other kubernetes clusters too 上工作。

【讨论】:

    猜你喜欢
    • 2022-01-23
    • 2019-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-30
    • 1970-01-01
    • 1970-01-01
    • 2019-11-25
    相关资源
    最近更新 更多