写在前面:《Kubernetes Tutorials》 系列文章旨在帮助您从入门到高阶逐步了解并掌握kubernetes技术栈的实操、理论和最佳实践。主题将包括 Docker 基础与实操、Kubernetes 基础与实操、基于 Kubernetes 的应用部署(工作负载版与集群版)、基于 Kubernetes 的 CI/CD、Kubernetes 集群与应用监控、Kubernetes 运维与最佳生产实践等,因为平时工作比较忙碌,尽量确保每周 1~3 篇相关文章,主题可能会比较随机,待全系列完成后再系统整理,尽情期待~ 天才都会三个神操作
Watching
&Star
&Fork
介绍
本文主要讲述使用 Rancher 构建好 Kubernetes 集群后,如何在 Kebernetes 集群中快速构全自动的 CI/CD 流水, 包括自动签出代码、执行代码、构建 Docker 镜像、将 Docker 镜像发布到仓库、从 Docker 仓库拉取镜像并部署到集群等。
为完成构建流水线本文还会用到以下组件:
- Jenkins:管道的构建引擎。
- Docker Registry:开箱即用,构建发布步骤的默认目标是内部 Docker 仓库。但是,您可以进行配置以推送到远程仓库。内部 Docker Registry 只能从群集节点访问,用户无法直接访问。镜像不会在管道的生命周期之后持久存在,并且只应在管道运行中使用。如果您需要在管道运行之外访问您的镜像,请推送到外部仓库。
- Minio:Minio 存储用于存储管道执行的日志。
托管的 Jenkins 实例无状态地工作,因此不要担心其数据持久性。默认情况下,Docker Registry 和 Minio 实例使用临时卷,这对大多数用例来说都很好。如果要确保管道日志可以在节点故障中继续存在,则可以为它们配置持久卷。
目标
使用 Kubernetes 容器集群构建 CI/CD 自动流水线,包括自动签出代码、执行代码、构建镜像、发布到仓库、将应用部署到集群等。
本文中容器集群包含以下资源:
- 1 个 Rancher Server 节点:用于部署 Rancher Server,通过该节点可以实现可视化多集群、跨云管理 Kubernetes 集群
- 2 个 Etcd 节点:存储主控制节点和工作节点之间的任务调度等数据信息
- 2 个控制 ( Controller ) 节点:部署 Kunbernetes 集群主控制节点,用于管理和监控 Kubernetes 其它的工作节点和存在状态信息。
- 2 个工作 ( Worker ) 节点:部署 Kubernetes 集群的工作节点,用于运行容器化的应用。
注意:Etcd、Controller 和 Worker 节点均选择至少两台是为了模拟高可用控制节点和工作节点。配置推荐至少 2 核 CPU、4GB 内存、40GB 存储、2M 带宽,系统均为 Ubuntu 16.04 LTS。为达到更好的效果,本文创建的 5 台云服务器配置均为 4 核 CPU、8GB 内存、200GB 存储、5M 带宽,系统选择 Ubuntu 16.04 LTS。
为完成 CI/CD 流水间自动构建与部署的操作,您还需要一个示例代码库和用于存放 Docker 镜像的仓库:
- 本文提供了简单的基于 Go 语言的示例代码库,您可以直接 Fork 使用: CI/CD 示例代码
- 本文的 Docker 镜像仓库使用的是滴滴云的镜像仓库,相关地址如下: 滴滴云容器镜像服务
您也可以使用 Docker 官方仓库 、 Quay 或自建的私有仓库,
第一步:搭建 Kubernetes 集群
开始之前请确保已按上述目标中的资源要求准备好了服务器资源,可以是物理机、