CI/CD docker/k8s 简介

引言

最近搬家,电脑还没装,好几天没写博客了,手机写起来真是难搞。本文简单介绍一下标题内得东西,我们用人话来讲讲这几个名词的意思。

CI/CD

  • CI (Continuous Integration)
  • CD (Continuous Deployment)

持续集成和持续部署,有很多文章是为了粉丝或流量会拿一些奇奇怪怪的蛇皮名词出来唬人,事实上根本唬不到人,在很久之前python的部分开发者就开始往自动化运维和自动化部署方向跑。

  • 什么是持续集成?
    我们所用的开发工具一般叫IDE,直译就是集成开发环境,持续集成的意思说人话就是当你提交代码后,你不需要自己进行重新编译,打包。
    Gitlab有个功能叫WebHook,作用就是当你上传代码后它会通过WebHook指定的url通知代码更新了,其实这个功能自己写也很简单,当push新代码后通知你更新,你拉取新代码,编译和打包,这并不难。
    除了使用WEBHOOK,其实Gitlab自带的CI/CD也很方便,你需要装一个GitRunner。
    还有轮询扫描方式也是可以实现的。
  • 什么是持续部署?
    当你有多个服务器,你打包后的代码要一个一个上传到服务器中,然后重新运行服务,这是很浪费人力和时间的事,持续部署的目的就是想解放双手。

Jenkins

Jenkins是开源CI&CD软件领导者, 提供超过1000个插件来支持构建、部署、自动化, 满足任何项目的需要。
这玩意就是用来帮你做CICD的,还有很多插件可以使用,无论你是通过tomcat部署,还是ssh运行jar包,或者是php项目,它都能实现,事实上如果让你自己写一个其实也可以实现,但是既然有东西用就不要自己写了。

docker

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器或Windows 机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。

我的个人见解是docker本身是以容器为出发点的,它本身就是为了不像虚拟机那样消耗不必要的资源,并且方便在多平台进行迁移,省去了运行环境不同所造成的困扰,所以出现了容器这个概念。

docker compose

php中有个php composer,如果熟悉php的同学应该就很容易清楚docker compose到底是干嘛的。如果你有好几个镜像要运行,写了好几个dockerfile,你需要一个一个通过docker build创建镜像,然后一个一个docker run 运行。
docker compose的作用是你只需要写好dockerfile,然后写一个compose yml,一条命令它就可以直接创建镜像+运行,省了一大堆事,在compose里更能体现服务的概念。

docker swarm

docker 集群,你拥有好几台服务器,同时安装了docker,这时你就会用到docker swarm了,它的作用就是统一管理这几台服务器的docker,在使用swarm集群后,事实上就已经开始偏向服务这个概念了。

Kubernetes

目前所说的kubernetes,应该大部分是指google的kubernetes,这玩意最早依赖docker,现在可以使用CRI(容器运行接口containerd),和docker swarm的来比K8S更为复杂,它分为好几个组件和不同的kind,daemonset 可以对应docker swarm里的global作用域,Service可以理解为对应docker swarm中overlay网络作用VIP的一种新的解决方案,Depolyment是Pod或RS更推荐使用的方式。
总的来说k8s比docker更偏向于服务。


版权声明:本文为slslslyxz原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。