gitlab|gitlab+Jenkins+harbor+kubernetes的DevOps连通构建


这里写自定义目录标题

    • gitlab+Jenkins+harbor+kubernetes的DevOps连通构建
    • 一、总览图解
    • 二、gitlab安装部署
    • 三、jenkins安装部署以及配置
    • 四、harbor安装部署以及配置
    • 五、k8s集群部署
    • 六、测试

gitlab+Jenkins+harbor+kubernetes的DevOps连通构建 一、总览图解 gitlab|gitlab+Jenkins+harbor+kubernetes的DevOps连通构建
文章图片

这里是以我个人的理解画的,如有不对,感谢指正。
二、gitlab安装部署 我是使用https://blog.csdn.net/duyusean/article/details/80011540这位博主的安装方法。
三、jenkins安装部署以及配置 因为我是内网环境,我采用的是离线安装的方式,都比较简单。
1.进入jinkens官网下载war包。
添加链接描述
2.nohup java -jar jenkins.war --httpPort=8080 >/dev/null 2>&1 & 端口根据自己主机可用端口自定义。
3.打开浏览器,输入ip+port 登录。初始密码 找到 initialAdminPassword文件,cat一下,命令 find / -name initialAdminPassword。我的在/root/.jenkins/sercret/下面。
4.插件下载。如果是内网的话,你需要一个一个的下载并且不停的去下载导入依赖的插件,以我自己的经验,就下载最新的版本就行。在jenkins的官网就可以下载。这里也给大家附上链接jenkins插件。
需要的插件如下:
gitlab的插件:Git 、Git client、GitLab Plugin。
docker插件:Docker API Plugin、 Docker Commons Plugin、Docker plugin、 docker-build-step。
k8s插件:Kubernetes、Kubernetes Client API Plugin、
Kubernetes Credentials Plugin。
maven插件:Maven Integration。
如果有依赖插件,你们在引入的时候回提示你,你根据提示,自己补充就好。
四、harbor安装部署以及配置 harbor运行依赖于docker,因此我们首先得部署docker,外网环境下直接下载docker就行了,离线的话,这里分享给大家一个清华大学开源镜像网站:
清华大学镜像网站:https://mirrors.tuna.tsinghua.edu.cn/ 。可以在上面下载docker的rpm包,然后,这里注意docker的版本必须是17.03+,最好下载新一点的版本。这里再强调一下,centos最好是7或者8的,centos6的,我是没装好。
(1)安装docker-ce:
rpm -ivh + docker.rpm包名。
查看docker 运行状态:
systemctl status docker
运行docker :
systemctl start docker 。
(2)安装harbor
安装包下载地址:https://github.com/goharbor/harbor/releases
gitlab|gitlab+Jenkins+harbor+kubernetes的DevOps连通构建
文章图片

然后上传到服务器解压即可。
修改harbor配置文件
进入到harbor下的conf目录,修改名称:
cp harbor.yml.tmpl harbor.yml
需要修改配置如下:
gitlab|gitlab+Jenkins+harbor+kubernetes的DevOps连通构建
文章图片

hostname最好使用域名而不是ip,因为在后面的构建镜像的脚本中需要使用。当然用ip也可以,但是看着不优雅。
(3)配置harbor的https访问。
①root目录下新建一个文件夹并进入该文件夹
mkdir cert_bak

②生成 CA 证书私钥。
openssl genrsa -out ca.key 4096

③生成 CA 证书。
openssl req -x509 -new -nodes -sha512 -days 3650 \ -subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=yourdomain.com" \ -key ca.key \ -out ca.crt

其中yourdomain使用刚才harbor配置文件中hostname的域名。
④生成私钥:
openssl genrsa -out yourdomain.com.key 4096

⑤生成证书签名请求 (CSR):
openssl req -sha512 -new \ -subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=yourdomain.com" \ -key yourdomain.com.key \ -out yourdomain.com.csr

⑥生成 x509 v3 扩展文件:
cat > v3.ext <<-EOF authorityKeyIdentifier=keyid,issuer basicConstraints=CA:FALSE keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment extendedKeyUsage = serverAuth subjectAltName = @alt_names[alt_names] DNS.1=yourdomain.com DNS.2=yourdomain DNS.3=hostname EOF

⑦使用该v3.ext文件为您的 Harbor 主机生成证书:
openssl x509 -req -sha512 -days 3650 \ -extfile v3.ext \ -CA ca.crt -CAkey ca.key -CAcreateserial \ -in yourdomain.com.csr \ -out yourdomain.com.crt

⑧向 Harbor 和 Docker 提供证书
转换yourdomain.com.crt为yourdomain.com.cert,供 Docker 使用:
openssl x509 -inform PEM -in yourdomain.com.crt -out yourdomain.com.cert

创建文件夹:
mkdir -p /etc/docker/certs.d/yourdomain.com/
⑩将服务器证书、密钥和 CA 文件复制到 Harbor 主机上的 Docker 证书文件夹中。
cp yourdomain.com.cert /etc/docker/certs.d/yourdomain.com/ cp yourdomain.com.key /etc/docker/certs.d/yourdomain.com/ cp ca.crt /etc/docker/certs.d/yourdomain.com/

然后重启docker引擎:systemctl restart docker
在harbor home目录下执行 sh prepare
然后启动harbor ./install.sh.
(4)配置jenkins 和 k8s 服务器上的hosts文件,
vi /etc/hosts

harbor服务器ip harbor的hostname
这个后面我们在构建镜像的时候会使用docker登录。
刚才的https登录也是因为需要docker登录。
(5)分别登录jenkins和k8s服务器
执行docker login harbor的hostname 输入用户名密码:admin 和 Harbor12345
gitlab|gitlab+Jenkins+harbor+kubernetes的DevOps连通构建
文章图片

如图所示说明登录成功。
注意:jenkins服务器也需要安装docker。
五、k8s集群部署 我之前部署是参考这位博主的:
https://blog.csdn.net/pooasb/article/details/113769632
六、测试 (1)准备一个demo将代码提交到gilab上,然后添加一个Dockerfile文件,内容如下:
# 基于哪个镜像 FROM openjdk:8-jdk-alpineENV LANG C.UTF-8ENV TZ=Asia/Shanghai#写一个标签 LABEL description="emss-wocf-wordorderinfo-front"#指定工作目录 WORKDIR /app#将jar包移动到指定的目录i ADD emss-bsp-data-1.0.0.jar /app/emss-wocf-wordorderinfo-front-1.0.0.jar#暴露端口 EXPOSE 40500#设置JVM参数 ENV JAVA_OPTS="\ -Xms256m \ -Xmx256m \ -Xss256K \ -XX:MaxPermSize=64M \ -Dspring.cloud.nacos.discovery.server-addr=nacos-0.nacos:8858 \ -Dspring.cloud.nacos.config.server-addr=nacos-0.nacos:8858 \ -Djava.security.egd=file:/dev/./urandom"# 配置容器启动后执行的命令 ENTRYPOINTjava -jar ${JAVA_OPTS} emss-wocf-wordorderinfo-front-1.0.0.jar

(2)打开jenkins页面,新建一个maven项目
gitlab|gitlab+Jenkins+harbor+kubernetes的DevOps连通构建
文章图片

这里的名字我随便起的。
(2)gitlab配置任务。
gitlab|gitlab+Jenkins+harbor+kubernetes的DevOps连通构建
文章图片

(3)构建镜像并将镜像推到镜像仓库Harbor:
gitlab|gitlab+Jenkins+harbor+kubernetes的DevOps连通构建
文章图片

新增执行shell
#!/bin/bash#jar包的名字 JAR_NAME=test-0.0.1-SNAPSHOT.jar#harbor服务地址 IMG_SERVER=reg.harbor.com#镜像名字 IMAG_NAME=test#项目主目录 JAR_MAIN_PATH=/var/lib/jenkins/workspace/test#项目job的位置 JAR_JOB_MAIN_PATH=/var/lib/jenkins/jobs/test/modules#target生成jar的目录 JAR_PATH=/var/lib/jenkins/workspace/test/target#jar包运行的位置 JAR_WORKE_PATH=/home/app/project/test/echo "----------进入主目录:$JAR_WORKE_PATH----------"if [ ! -d "$JAR_WORKE_PATH" ]; then mkdir -p $JAR_WORKE_PATH ficp $JAR_MAIN_PATH/Dockerfile $JAR_WORKE_PATHcd $JAR_MAIN_PATHecho "----------将jar包移动到指定的目录----------"mv$JAR_PATH/$JAR_NAME $JAR_WORKE_PATHrm -rf $JAR_MAIN_PATHcd $JAR_WORKE_PATH echo "----------执行构建镜像和上传镜像----------" docker login -u admin -p Harborpassword $IMG_SERVER docker build -t $IMG_SERVER/harbor_reg/$IMAG_NAME:v$BUILD_ID . docker push $IMG_SERVER/harbor_reg/$IMAG_NAME:v$BUILD_ID # docker rmi $IMG_SERVER/harbor_reg/$IMAG_NAME:v$BUILD_IDecho "---------------开始删除job---------------------"rm -rf $JAR_JOB_MAIN_PATH#rm -rf $JAR_WORKE_PATH/$JAR_NAME-$BUILD_ID.jar#echo "---------------构建 success-------------------------------"

【gitlab|gitlab+Jenkins+harbor+kubernetes的DevOps连通构建】在测试过程中可能会遇到很多问题,我第一次测了三十多次,才测通,所以这个在调通过程中可能会遇到很多问题,一个一个解决吧!我也走了很多弯路。

    推荐阅读