Kubernetes

六、Kubernetes CICD之旅

2020-04-20  本文已影响0人  Suny____

1、概述

​ 在前面的章节中我们已经演示了不少案例与各种组件的介绍与使用,我们也实战搭建了项目。通过K8S的帮助,我们可以很方便的部署项目,但还不是很完美。如果我们部署的是自己的项目,而我们的项目又是要经常改动的,这就意味着我们需要经常进行 打包、上传、重启、测试等,这些都是重复性的工作,一次两次还好,次数多了也烦人。所以下面要讲的 CI/CD 就是来帮我们解放双手,摆脱这些重复性的工作!

1.1、CI/CD是什么?

1.2、 CI 和 CD 有什么区别?

更多概念可以到 红帽 看官方介绍: https://www.redhat.com/zh/topics/devops/what-is-ci-cd

下面这张图就相对完整的介绍了本章节要进行的工作:

image.png

2、环境准备

2.1、环境搭建

2.2、准备项目

image.png

2.3、搭建 Jenkins

image.png

2.3.1、配置 Jenkins

等待安装即可,需要的时间比较久

也可以先点推荐安装,然后刷新页面选择跳过安装,之后手动下载插件安装,这样会更快

如果跳过,先截图保存一下推荐插件的列表,后面手动安装要去搜索的

2.3.2、镜像仓库与Kubernetes集群

3、Pipeline任务

我们一个步骤一个步骤的演示,从最开始的拉取代码,慢慢延伸到最终的CICD!

3.1 拉取项目代码

Jenkins要实现自动拉取代码,需要安装Git相关插件,以及要到Git仓库去进行一些配置,插件之前都已经安装了,接下来就演示一下Jenkins的配置。

image.png
node {
   // Pull
   stage('Pull') { //stage表示一个任务
      //这里是任务的内容
      //因为我们的机器已经生成了秘钥且与Gieee进行了绑定,所以无需输入账号密码就可以进行拉取代码
      git 'https://gitee.com/suny95/springboot-demo-k8s.git'
   }
}

配置完成后点击保存

构建完成后会显示绿色,构建失败是红色,可以去查看错误信息

image.png

这里是Jenkins工作目录:/root/.jenkins/workspace目录

代码是拉取到这个目录下的

# Jenkins工作目录
[root@worker01-kubeadm-k8s workspace]# pwd
/root/.jenkins/workspace
[root@worker01-kubeadm-k8s workspace]# ll
total 0
drwxr-xr-x. 4 root root 62 Apr 18 14:37 springboot-k8s-task

# 新建的任务目录
[root@worker01-kubeadm-k8s workspace]# cd springboot-k8s-task/
[root@worker01-kubeadm-k8s springboot-k8s-task]# ll
total 4
-rw-r--r--. 1 root root 1277 Apr 18 14:37 pom.xml
drwxr-xr-x. 3 root root   18 Apr 18 14:37 src

3.2 Maven自动编译

修改之前编写好的流水线任务,增加一个Stage用来做Maven自动编译

image.png
# 再次查看目录,发现已经成功编译出 target 目录了
[root@worker01-kubeadm-k8s springboot-k8s-task]# ll
total 4
-rw-r--r--. 1 root root 1277 Apr 18 14:37 pom.xml
drwxr-xr-x. 3 root root   18 Apr 18 14:37 src
drwxr-xr-x. 6 root root  181 Apr 18 14:56 target

到这里为止,手动构建的方式已经完成, 下面将要开始配置自动构建

3.3 Git Push 触发 Jenkins 自动构建

当用户进行git push提交代码到 GitHub / Git EE 时,能够通知 jenkins 自动构建

注意: Jenkins 的 ip 一定要是 Git EE 能够访问到的地址

我这里由于是本地搭建的虚拟机,就不做演示了,百度搜一下有很多的教程可以参考

3.4 build 与 push 镜像

经过前面的演示,现在已经可以获取到代码,并且用maven进行构建了,最终拿到一个target/xxx.jar

现在我们要演示Docker的镜像构建与Push镜像到镜像仓库!

build 镜像与 push 镜像至镜像仓库 都已成功!!!

3.1.5 Kubernetes 拉取镜像运行

这个过程需要提前准备的也就是image镜像和ingress,image刚才我们都已经上传到阿里云镜像仓库了,ingress我们在之前也准备过了,如果没有ingress环境的,可以去看前面的 kubernetes 网络模型 ,里面有安装ingress的流程!

发现出现异常了,这个问题其实是因为我们选择的机器在 K8S 集群中不是 Master 节点,它没有执行kubectl 命令的权限,我们需要配置一下!

```ruby
[root@worker01-kubeadm-k8s ~]# mkdir .kube
[root@worker01-kubeadm-k8s ~]# cd .kube/

# 将 Master 节点中config文件内容复制进去即可
[root@worker01-kubeadm-k8s .kube]# vi config
[root@worker01-kubeadm-k8s .kube]# ll
total 8
-rw-r--r--. 1 root root 5454 Apr 19 09:45 config
```
image.png

由于机器问题,我没办法演示 Git Push 就触发自动构建的任务,大家如果有公网的机器的话,可以去尝试弄一下!

上一篇下一篇

猜你喜欢

热点阅读