基于k8s搭建的一套CI/CD系统,其目的是方便k8s和服务端相关技术的实践,在搭建过程中会涉及docker、dockerhub、k8s、github、jenkins、kubesphere
一台Mac物理机+3台Centos虚拟机
Docker是这个教程的基石,对Docker一点都不了解的同学,建议去B站看一下我发布的 Docker小白快速入门+实战 ,课程比较简洁,主要帮助不了解Docker的同学快速掌握并应用
安装命令如下
k8s是一个容器编排工具,可以轻松实现应用的扩/缩容、集群等,具体安装方式参考文档我的 k8s集群安装
这是k8s的一个web管理界面,用于简化k8s的操作。
在k8s继续的所有节点上都需要安装nfs-utils、rpcbind,搭建步骤参考我的 Centos7搭建NFS服务端
kubesphere明确说明基于k8s安装需要配置DefaultStorageclass,创建步骤参考我的 k8s基于NFS创建Storageclass
安装时间会有一点长,安装步骤参考我的 k8s集群安装Kubersphere
jenkins在这里是作为一个纽带的作用,因为jenkins在构建项目时可以执行shell脚本,因此通过shell脚本轻松的将github、docker注册服务器、k8s集群三者关联起来,从而简化jenkins的使用(就是一个偏运维的工具而已)
这里之所以使用Docker安装Jenkins,是因为我不想在物理机上安装jenkins(毕竟只是一个工具),而虚拟机已经启动了三台,再创建就会影响我的物理机性能,所以这里直接使用物理机的Docker跑Jenkins,用完就删了。
安装步骤参考我的 基于Docker安装Jenkins
免密访问k8s集群的master服务器
参考我的 Linux配置免密登录 ,这里需要进入jenkins容器内部进行操作
配置github的ssh key访问
在jenkins创建一个自由风格的软件->填写仓库地址->编写如下脚本
一个简单的CI/CD系统就搭建完成了,后面可以把更多的重心放在k8s资源文件的编写上,理解yaml中各节点的含义也是一项不小的工作量,搞清楚k8s的各个模块,对服务端的架构设计是有益的。
在CI/CD流程中,自动打分支和tag分支是一个非常重要的步骤。以下是一些基本的步骤:
1 创建新的分支:在代码仓库中创建一个新的分支,例如“dev”或“staging”。
2 自动化构建:使用CI/CD工具(如Jenkins、Travis CI等)来自动构建你的应用程序。
3 运行测试:在构建完成后,运行自动化测试套件以确保代码质量。
4 部署到目标环境:如果所有测试都通过了,则将应用程序部署到目标环境(如开发、预发布或生产环境)。
5 打Tag并合并回主干:当你准备好发布版本时,在该版本上打一个Git Tag,并将该分支合并回主干。这可以帮助你跟踪每个版本,并且可以轻松地恢复到旧版本。
以上是一些基本步骤,但实际操作可能会因为不同团队和项目而有所不同。需要根据具体情况进行调整和优化。
维基百科: CI/CD
其他资料: 什么是 CI/CD?一文带你理解CI持续集成和CD持续交付/部署 - 红帽
在 软件工程 中, CI/CD 或 CICD 通常指的是 持续集成 和 持续交付 或 持续部署 的组合实践。CI/CD通过在应用程序的构建、测试和部署中实施自动化,在开发和运营团队之间架起了桥梁。
官方文档: GitLab CI/CD | GitLab
GitLab CI/CD 是一个内置于 GitLab 的工具,用于通过 连续方法 进行软件开发:
参考文档: >
上帝借由各种途径使人变得孤独,好让我们可以走向自己。 ——赫尔曼·黑塞《德米安》
CI即为 持续集成(Continue Integration,简称CI) ,用通俗的话讲,就是 持续的整合版本库代码编译后制作应用镜像 。建立有效的持续集成环境可以减少开发过程中一些不必要的问题、 提高代码质量、快速迭代 等,
Jenkins :基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。
Bamboo : 是一个企业级商用软件,可以部署在大规模生产环境中。
CD即持续交付Continuous Delivery和持续部署Continuous Deployment,用通俗的话说,即可以持续的部署到生产环境给客户使用,这里分为两个阶段,持续交付我理解为满足上线条件的过程,但是没有上线,持续部署,即为上线应用的过程
关于 CD环境 ,我们使用以前搭建好的 K8s集群 ,K8s集群可以实现应用的 健康 检测,动态扩容,滚动更新 等优点,关于K8s集群的搭建,小伙伴可以看看我的其他文章
拉取镜像,启动并设置开机自启
配置docker加速器
GitLab 不多介绍。一个基于Git的版本控制平台,,提供了Git仓库管理、代码审查、问题跟踪、活动反馈和wiki,当然同时也提供了
切记:这里的端口要设置成80,要不push项目会提示没有报错,如果宿主机端口被占用,需要把这个端口腾出来
external_url '> 以上就是关于基于K8s的CI/CD系统全部的内容,包括:基于K8s的CI/CD系统、cicd怎么自动打分支tag分支、Gitlab CI/CD配置-并发送消息到飞书等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!