CI/CD docker/k8s 简介

CI/CD docker/k8s 简介

  • 引言
  • CI/CD
  • Jenkins
  • docker
    • docker compose
    • docker swarm
  • Kubernetes

引言

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

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。

Kubernetes

目前所说的kubernetes,应该大部分是指google的kubernetes,这玩意依赖docker,和docker swarm的区别在于它可以感知到容器是否挂掉了,当你scale的期望数不达标的时候(比如自己挂掉了),它会自动运行起新的pod(pod中有一个或多个容器,你可以将容器理解为电脑中的进程,pod就是这个电脑),你还可以根据硬件使用程度来动态扩展(你可以想象成一个线程池,线程的最小数和最大数),你还可以写部署规则,比如节点的标签变化后是否创建pod?创建在哪个节点等等。kubernetes更偏向服务,功能也更强大。

你可能感兴趣的:(Java,Distributed)