更新 kubernetes-MD/CICD_Harbor_K8S实现微服务项目持续集成和发布.md

This commit is contained in:
wxin 2024-08-11 21:05:06 +08:00
parent 393d8ce6ec
commit 6b015eb06f
1 changed files with 384 additions and 387 deletions

View File

@ -1,387 +1,384 @@
<h1><center>CI/CD+Harbor+K8S实现微服务项目持续集成和发布</center></h1> <h1><center>CI/CD+Harbor+K8S实现微服务项目持续集成和发布</center></h1>
著作:行癫 <盗版必究>
## 一:项目描述
------
#### 1.环境介绍
## 一:项目描述
| 服务器 | IP | 角色 | 配置 |
#### 1.环境介绍 | :--------: | :------------: | :--------------------------------: | :-----: |
| jenkins | 192.168.18.210 | 持续构建项目并发布 | 1Cpu+3G |
| 服务器 | IP | 角色 | 配置 | | gitlab | 192.168.18.200 | https://www.xingdian.com版本库 | 2Cpu+8G |
| :--------: | :------------: | :--------------------------------: | :-----: | | harbor | 192.168.18.230 | 镜像仓库 | 1Cpu+3G |
| jenkins | 192.168.18.210 | 持续构建项目并发布 | 1Cpu+3G | | NFS | 192.168.18.230 | 给k8s提供持久化存储 | 1Cpu+3G |
| gitlab | 192.168.18.200 | https://www.xingdian.com版本库 | 2Cpu+8G | | k8s-master | 192.168.18.160 | k8s管理节点 | 2Cpu+4G |
| harbor | 192.168.18.230 | 镜像仓库 | 1Cpu+3G | | k8s-node-1 | 192.168.18.161 | k8s项目节点 | 1Cpu+3G |
| NFS | 192.168.18.230 | 给k8s提供持久化存储 | 1Cpu+3G | | k8s-node-2 | 192.168.18.162 | k8s项目节点 | 1Cpu+3G |
| k8s-master | 192.168.18.160 | k8s管理节点 | 2Cpu+4G | | k8s-node-3 | 192.168.18.163 | k8s项目节点 | 1Cpu+3G |
| k8s-node-1 | 192.168.18.161 | k8s项目节点 | 1Cpu+3G |
| k8s-node-2 | 192.168.18.162 | k8s项目节点 | 1Cpu+3G | #### 2.jenkins部署
| k8s-node-3 | 192.168.18.163 | k8s项目节点 | 1Cpu+3G |
```shell
#### 2.jenkins部署 1.上传jdk
[root@jenkins ~]# tar xzf jdk-8u191-linux-x64.tar.gz -C /usr/local/
```shell [root@jenkins ~]# cd /usr/local/
1.上传jdk [root@jenkins local]# mv jdk1.8.0_191/ java
[root@jenkins ~]# tar xzf jdk-8u191-linux-x64.tar.gz -C /usr/local/ 2.安装tomcat
[root@jenkins ~]# cd /usr/local/ [root@jenkins ~]# wget http://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-8/v8.5.42/bin/apache-tomcat-8.5.42.tar.gz
[root@jenkins local]# mv jdk1.8.0_191/ java [root@jenkins ~]# tar xzf apache-tomcat-8.5.42.tar.gz -C /usr/local/
2.安装tomcat [root@jenkins ~]# cd /usr/local/
[root@jenkins ~]# wget http://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-8/v8.5.42/bin/apache-tomcat-8.5.42.tar.gz [root@jenkins local]# mv apache-tomcat-8.5.42/ tomcat
[root@jenkins ~]# tar xzf apache-tomcat-8.5.42.tar.gz -C /usr/local/ 3.安装maven
[root@jenkins ~]# cd /usr/local/ [root@jenkins ~]# wget http://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.5.4/binaries/apache-maven-3.5.4-bin.tar.gz
[root@jenkins local]# mv apache-tomcat-8.5.42/ tomcat [root@jenkins ~]# tar xzf apache-maven-3.5.4-bin.tar.gz -C /usr/local/java
3.安装maven [root@jenkins ~]# cd /usr/local/java
[root@jenkins ~]# wget http://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.5.4/binaries/apache-maven-3.5.4-bin.tar.gz [root@jenkins java]# mv apache-maven-3.5.4/ maven
[root@jenkins ~]# tar xzf apache-maven-3.5.4-bin.tar.gz -C /usr/local/java 设置变量:
[root@jenkins ~]# cd /usr/local/java [root@jenkins-server ~]# vim /etc/profile
[root@jenkins java]# mv apache-maven-3.5.4/ maven JAVA_HOME=/usr/local/java
设置变量: MAVEN_HOME=/usr/local/java/maven
[root@jenkins-server ~]# vim /etc/profile PATH=$PATH:$JAVA_HOME/bin:$MAVEN_HOME/bin
JAVA_HOME=/usr/local/java export PATH JAVA_HOME MAVEN_HOME
MAVEN_HOME=/usr/local/java/maven [root@jenkins-server ~]# source /etc/profile
PATH=$PATH:$JAVA_HOME/bin:$MAVEN_HOME/bin 验证:
export PATH JAVA_HOME MAVEN_HOME [root@jenkins-server ~]# java -version
[root@jenkins-server ~]# source /etc/profile java version "1.8.0_191"
验证: Java(TM) SE Runtime Environment (build 1.8.0_191-b12)
[root@jenkins-server ~]# java -version Java HotSpot(TM) 64-Bit Server VM (build 25.191-b12, mixed mode)
java version "1.8.0_191" [root@jenkins-server ~]# mvn -v
Java(TM) SE Runtime Environment (build 1.8.0_191-b12) Apache Maven 3.5.4 (1edded0938998edf8bf061f1ceb3cfdeccf443fe; 2018-06-18T02:33:14+08:00)
Java HotSpot(TM) 64-Bit Server VM (build 25.191-b12, mixed mode) Maven home: /usr/local/java/maven
[root@jenkins-server ~]# mvn -v Java version: 1.8.0_191, vendor: Oracle Corporation, runtime: /usr/local/java/jre
Apache Maven 3.5.4 (1edded0938998edf8bf061f1ceb3cfdeccf443fe; 2018-06-18T02:33:14+08:00) Default locale: en_US, platform encoding: UTF-8
Maven home: /usr/local/java/maven OS name: "linux", version: "3.10.0-693.el7.x86_64", arch: "amd64", family: "unix"
Java version: 1.8.0_191, vendor: Oracle Corporation, runtime: /usr/local/java/jre 下载jenkins的安装包:
Default locale: en_US, platform encoding: UTF-8 安装jenkins:2.332.3 ----通过官网直接下载war包。
OS name: "linux", version: "3.10.0-693.el7.x86_64", arch: "amd64", family: "unix" 官网:http://updates.jenkins-ci.org/download/war/
下载jenkins的安装包: [root@jenkins-server ~]# wget https://get.jenkins.io/war-stable/2.332.3/jenkins.war
安装jenkins:2.332.3 ----通过官网直接下载war包。 部署jenkins
官网:http://updates.jenkins-ci.org/download/war/ [root@jenkins-server ~]# cd /usr/local/tomcat/webapps/
[root@jenkins-server ~]# wget https://get.jenkins.io/war-stable/2.332.3/jenkins.war [root@jenkins-server webapps]# rm -rf *
部署jenkins [root@jenkins-server webapps]# cp /root/jenkins.war .
[root@jenkins-server ~]# cd /usr/local/tomcat/webapps/ [root@jenkins-server webapps]# ./bin/startup.sh
[root@jenkins-server webapps]# rm -rf * Using CATALINA_BASE: /usr/local/tomcat
[root@jenkins-server webapps]# cp /root/jenkins.war . Using CATALINA_HOME: /usr/local/tomcat
[root@jenkins-server webapps]# ./bin/startup.sh Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using CATALINA_BASE: /usr/local/tomcat Using JRE_HOME: /usr/local/java
Using CATALINA_HOME: /usr/local/tomcat Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Using CATALINA_TMPDIR: /usr/local/tomcat/temp Tomcat started.
Using JRE_HOME: /usr/local/java ```
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started. ![](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220612205950281.png)
```
#### 3.gitlab部署
![](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220612205950281.png)
部署文件地址: https://docs.qq.com/doc/DQ0hScnRCbVN6QW1F
#### 3.gitlab部署
![](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220612205933958.png)
部署文件地址: https://docs.qq.com/doc/DQ0hScnRCbVN6QW1F
#### 4.harbor部署
![](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220612205933958.png)
部署链接地址https://docs.qq.com/doc/DQ0l1bUtFdFNQSmdR
#### 4.harbor部署
![image-20220612210023644](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220612210023644.png)
部署链接地址https://docs.qq.com/doc/DQ0l1bUtFdFNQSmdR
## 二:项目使用
![image-20220612210023644](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220612210023644.png)
在实现部署之前在各个服务至上进行配置,以下是各个配置详情。
## 二:项目使用
#### 1.jenkins配置
在实现部署之前在各个服务至上进行配置,以下是各个配置详情。
插件安装:
#### 1.jenkins配置
Maven Integration
插件安装:
Generic Webhook Trigger
Maven Integration
Deploy to container
Generic Webhook Trigger
Git
Deploy to container
Publish Over SSH
Git
![image-20220612210702847](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220612210702847.png)
Publish Over SSH
配置JDK+MAVEN+GIT环境
![image-20220612210702847](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220612210702847.png)
Dashboard--->Global Tool Configuration
配置JDK+MAVEN+GIT环境
![image-20220612210956961](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220612210956961.png)
Dashboard--->Global Tool Configuration
注意需要在服务器上安装git
![image-20220612210956961](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220612210956961.png)
```shell
注意需要在服务器上安装git [root@jenkins ~]# yum -y install git
[root@jenkins ~]# git config --global user.email "xingdianvip@gmail.com"
```shell [root@jenkins ~]# git config --global user.name "xingdian"
[root@jenkins ~]# yum -y install git [root@jenkins ~]# git config --global http.sslVerify "false"
[root@jenkins ~]# git config --global user.email "xingdianvip@gmail.com" ```
[root@jenkins ~]# git config --global user.name "xingdian"
[root@jenkins ~]# git config --global http.sslVerify "false" 例如:
```
![image-20220612211207274](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220612211207274.png)
例如:
jenkisn节点安装docker因为需要构建镜像到harbor
![image-20220612211207274](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220612211207274.png)
```shell
jenkisn节点安装docker因为需要构建镜像到harbor [root@jenkins ~]# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
[root@jenkins ~]# yum -y install docker-ce
```shell [root@jenkins ~]# systemctl start docker && docker enable docker
[root@jenkins ~]# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo ```
[root@jenkins ~]# yum -y install docker-ce
[root@jenkins ~]# systemctl start docker && docker enable docker 配置http访问创建daemon.json指定harbor地址
```
```shell
配置http访问创建daemon.json指定harbor地址 [root@jenkins ~]# cat /etc/docker/daemon.json
{
```shell "insecure-registries":["192.168.18.230:80"]
[root@jenkins ~]# cat /etc/docker/daemon.json }
{ [root@jenkins ~]# systemctl daemon-reload && systemctl restart docker
"insecure-registries":["192.168.18.230:80"] ```
}
[root@jenkins ~]# systemctl daemon-reload && systemctl restart docker 注意另外一种修改docker.service文件添加--insecure-registry在这里不生效
```
额外配置,在企业中每个微服务项目都是独立的,但是此项目源码具有关联性,故需要执行一下操作
注意另外一种修改docker.service文件添加--insecure-registry在这里不生效
将所有的项目源码上传到jenkis服务器在项目目录下执行以下命令此过程需要耐心等待
额外配置,在企业中每个微服务项目都是独立的,但是此项目源码具有关联性,故需要执行一下操作
如果想加快速度百度搜索mvn的国内仓库地址
将所有的项目源码上传到jenkis服务器在项目目录下执行以下命令此过程需要耐心等待
```shell
如果想加快速度百度搜索mvn的国内仓库地址 [root@jenkins tensquare_parent]# mvn install
```
```shell
[root@jenkins tensquare_parent]# mvn install 创建maven项目
```
![image-20220612213835015](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220612213835015.png)
创建maven项目
注意地址来自下面的gitlab部署
![image-20220612213835015](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220612213835015.png)
创建凭据 再此添加kubernetes 集群master节点
注意地址来自下面的gitlab部署
![image-20220612214908915](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220612214908915.png)
创建凭据 再此添加kubernetes 集群master节点
![image-20220612214940777](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220612214940777.png)
![image-20220612214908915](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220612214908915.png)
![image-20220612215011081](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220612215011081.png)
![image-20220612214940777](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220612214940777.png)
![image-20220612215054577](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220612215054577.png)
![image-20220612215011081](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220612215011081.png)
配置ssh remote hosts
![image-20220612215054577](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220612215054577.png)
![image-20220612215202282](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220612215202282.png)
配置ssh remote hosts
取消gitlab配置
![image-20220612215202282](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220612215202282.png)
![image-20220612215240632](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220612215240632.png)
取消gitlab配置
配置webhook
![image-20220612215240632](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220612215240632.png)
![image-20220612213909544](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220612213909544.png)
配置webhook
![image-20220612213933315](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220612213933315.png)
![image-20220612213909544](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220612213909544.png)
脚本如下:
![image-20220612213933315](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220612213933315.png)
```shell
脚本如下: # Jenkins机器编译完成后build生成一个新版本的镜像push到远程docker仓库
```shell # Variables
# Jenkins机器编译完成后build生成一个新版本的镜像push到远程docker仓库 # 注意下面路径里的maven-docker就是jenkins项目的名称必须一致
JENKINS_WAR_HOME='/root/.jenkins/workspace/eureka/target'
# Variables DOCKERFILE='/root/.jenkins/workspace/eureka/'
# 注意下面路径里的maven-docker就是jenkins项目的名称必须一致 # 自己创建下面目录,主要镜像构建
JENKINS_WAR_HOME='/root/.jenkins/workspace/eureka/target' DOCKERFILE_HOME='/root/jenkins/docker-file/eureka_jar'
DOCKERFILE='/root/.jenkins/workspace/eureka/' HARBOR_IP='192.168.18.230'
# 自己创建下面目录,主要镜像构建 REPOSITORIES='xingdian/eureka'
DOCKERFILE_HOME='/root/jenkins/docker-file/eureka_jar' HARBOR_USER='admin'
HARBOR_IP='192.168.18.230' HARBOR_USER_PASSWD='Harbor12345'
REPOSITORIES='xingdian/eureka' HARBOR_USER_EMAIL='xingdianvip@gmail.com'
HARBOR_USER='admin'
HARBOR_USER_PASSWD='Harbor12345' # Copy the newest war to docker-file directory.
HARBOR_USER_EMAIL='xingdianvip@gmail.com' if [ -f /root/jenkins/docker-file/eureka_jar/eureka.jar ];then
rm -rf eureka.jar
# Copy the newest war to docker-file directory. \cp -f ${JENKINS_WAR_HOME}/tensquare_eureka_server-1.0-SNAPSHOT.jar ${DOCKERFILE_HOME}/eureka.jar
if [ -f /root/jenkins/docker-file/eureka_jar/eureka.jar ];then else
rm -rf eureka.jar \cp -f ${JENKINS_WAR_HOME}/tensquare_eureka_server-1.0-SNAPSHOT.jar ${DOCKERFILE_HOME}/eureka.jar
\cp -f ${JENKINS_WAR_HOME}/tensquare_eureka_server-1.0-SNAPSHOT.jar ${DOCKERFILE_HOME}/eureka.jar fi
else # Delete image early version.
\cp -f ${JENKINS_WAR_HOME}/tensquare_eureka_server-1.0-SNAPSHOT.jar ${DOCKERFILE_HOME}/eureka.jar docker login ${HARBOR_IP}:80 -u ${HARBOR_USER} -p ${HARBOR_USER_PASSWD}
fi IMAGE_ID=`sudo docker images | grep ${REPOSITORIES} | awk '{print $3}'`
# Delete image early version. if [ -n "${IMAGE_ID}" ];then
docker login ${HARBOR_IP}:80 -u ${HARBOR_USER} -p ${HARBOR_USER_PASSWD} sudo docker rmi ${IMAGE_ID}
IMAGE_ID=`sudo docker images | grep ${REPOSITORIES} | awk '{print $3}'` fi
if [ -n "${IMAGE_ID}" ];then
sudo docker rmi ${IMAGE_ID} # Build image.
fi cd ${DOCKERFILE_HOME}
if [ -f jdk-8u211-linux-x64.tar.gz ];then
# Build image. echo "jdk ok!!!!!"
cd ${DOCKERFILE_HOME} else
if [ -f jdk-8u211-linux-x64.tar.gz ];then # 此地址需要自己准备
echo "jdk ok!!!!!" wget ftp://192.168.18.234/share/jdk-8u211-linux-x64.tar.gz
else fi
# 此地址需要自己准备 if [ -f Dockerfile ];then
wget ftp://192.168.18.234/share/jdk-8u211-linux-x64.tar.gz rm -rf Dockerfile
fi cp -f ${DOCKERFILE}Dockerfile ${DOCKERFILE_HOME}
if [ -f Dockerfile ];then echo "Dockerfile is ok!!"
rm -rf Dockerfile else
cp -f ${DOCKERFILE}Dockerfile ${DOCKERFILE_HOME} cp -f ${DOCKERFILE}Dockerfile ${DOCKERFILE_HOME}
echo "Dockerfile is ok!!" fi
else
cp -f ${DOCKERFILE}Dockerfile ${DOCKERFILE_HOME} TAG=`date +%Y%m%d-%H%M%S`
fi sudo docker build -t ${HARBOR_IP}:80/${REPOSITORIES}:${TAG} .
TAG=`date +%Y%m%d-%H%M%S` # Push to the harbor registry.
sudo docker build -t ${HARBOR_IP}:80/${REPOSITORIES}:${TAG} . sudo docker push ${HARBOR_IP}:80/${REPOSITORIES}:${TAG}
```
# Push to the harbor registry.
sudo docker push ${HARBOR_IP}:80/${REPOSITORIES}:${TAG} #### 2.gitlab配置
```
创建Groups和Project (Menu --- > Groups Menu --- > Project )
#### 2.gitlab配置
![image-20220612212255399](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220612212255399.png)
创建Groups和Project (Menu --- > Groups Menu --- > Project )
![image-20220612212337337](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220612212337337.png)
![image-20220612212255399](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220612212255399.png)
取消main分支保护
![image-20220612212337337](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220612212337337.png)
![image-20220612212601128](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220612212601128.png)
取消main分支保护
添加本地公钥(实现项目推送)
![image-20220612212601128](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220612212601128.png)
![image-20220612212702850](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220612212702850.png)
添加本地公钥(实现项目推送)
将项目空仓库下载拷贝到本地空仓库目录下然后推送给gitlab
![image-20220612212702850](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220612212702850.png)
```shell
将项目空仓库下载拷贝到本地空仓库目录下然后推送给gitlab 上传项目的服务器需要安装以下内容:
[root@xingdian ~]# yum -y install git
```shell [root@xingdian ~]# git config --global user.email "xingdianvip@gmail.com"
上传项目的服务器需要安装以下内容: [root@xingdian ~]# git config --global user.name "xingdian"
[root@xingdian ~]# yum -y install git [root@xingdian ~]# git config --global http.sslVerify "false"
[root@xingdian ~]# git config --global user.email "xingdianvip@gmail.com"
[root@xingdian ~]# git config --global user.name "xingdian" [root@xingdian ~]# git clone https://www.xingdian.com/diandian/diandian.git
[root@xingdian ~]# git config --global http.sslVerify "false" [root@xingdian ~]# cd diandian
[root@xingdian diandian]# 将项目源码拷贝到此
[root@xingdian ~]# git clone https://www.xingdian.com/diandian/diandian.git [root@xingdian diandian]# git add .
[root@xingdian ~]# cd diandian [root@xingdian diandian]# git commit -m "diandian"
[root@xingdian diandian]# 将项目源码拷贝到此 [root@xingdian diandian]# git push -u origin main
[root@xingdian diandian]# git add . ```
[root@xingdian diandian]# git commit -m "diandian"
[root@xingdian diandian]# git push -u origin main 开启允许本地网络
```
![image-20220612213514193](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220612213514193.png)
开启允许本地网络
添加webhook
![image-20220612213514193](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220612213514193.png)
gitlab
添加webhook
![image-20220612213705137](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220612213705137.png)
gitlab
#### 3.harbor配置
![image-20220612213705137](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220612213705137.png)
可以先手动构建验证部署过程是否有问题然后再进行自动化构建自动化构建需要在gitlab上修改源代码提交后会自动触发
#### 3.harbor配置
基础镜像配置(完成基础镜像配置后再构建)
可以先手动构建验证部署过程是否有问题然后再进行自动化构建自动化构建需要在gitlab上修改源代码提交后会自动触发
```shell
基础镜像配置(完成基础镜像配置后再构建) [root@harbor centos]# cat Dockerfile
FROM daocloud.io/centos:7
```shell MAINTAINER "xingdian" <xingdianvip@gmail.com>
[root@harbor centos]# cat Dockerfile ENV container docker
FROM daocloud.io/centos:7 RUN yum -y swap -- remove fakesystemd -- install systemd systemd-libs
MAINTAINER "xingdian" <xingdianvip@gmail.com> RUN yum -y update; yum clean all; \
ENV container docker (cd /lib/systemd/system/sysinit.target.wants/; for i in *; do [ $i == systemd-tmpfiles-setup.service ] || rm -f $i; done); \
RUN yum -y swap -- remove fakesystemd -- install systemd systemd-libs rm -f /lib/systemd/system/multi-user.target.wants/*;\
RUN yum -y update; yum clean all; \ rm -f /etc/systemd/system/*.wants/*;\
(cd /lib/systemd/system/sysinit.target.wants/; for i in *; do [ $i == systemd-tmpfiles-setup.service ] || rm -f $i; done); \ rm -f /lib/systemd/system/local-fs.target.wants/*; \
rm -f /lib/systemd/system/multi-user.target.wants/*;\ rm -f /lib/systemd/system/sockets.target.wants/*udev*; \
rm -f /etc/systemd/system/*.wants/*;\ rm -f /lib/systemd/system/sockets.target.wants/*initctl*; \
rm -f /lib/systemd/system/local-fs.target.wants/*; \ rm -f /lib/systemd/system/basic.target.wants/*;\
rm -f /lib/systemd/system/sockets.target.wants/*udev*; \ rm -f /lib/systemd/system/anaconda.target.wants/*;
rm -f /lib/systemd/system/sockets.target.wants/*initctl*; \ VOLUME [ "/sys/fs/cgroup" ]
rm -f /lib/systemd/system/basic.target.wants/*;\ CMD ["/usr/sbin/init"]
rm -f /lib/systemd/system/anaconda.target.wants/*;
VOLUME [ "/sys/fs/cgroup" ] [root@harbor centos]# docker build -t xingdian:latest .
CMD ["/usr/sbin/init"]
[root@harbor centos]# docker tag xingdian 192.168.18.230/xingdian/centos:latest
[root@harbor centos]# docker build -t xingdian:latest .
[root@harbor ~]# cat /etc/docker/daemon.json
[root@harbor centos]# docker tag xingdian 192.168.18.230/xingdian/centos:latest {
"insecure-registries":["192.168.18.230:80"]
[root@harbor ~]# cat /etc/docker/daemon.json }
{ [root@harbor ~]# systemctl daemon-reload && systemctl restart docker
"insecure-registries":["192.168.18.230:80"]
} [root@harbor centos]# docker login 192.168.18.230
[root@harbor ~]# systemctl daemon-reload && systemctl restart docker
[root@harbor centos]# docker push 192.168.18.230/xingdian/centos:latest
[root@harbor centos]# docker login 192.168.18.230 ```
[root@harbor centos]# docker push 192.168.18.230/xingdian/centos:latest 可以手动构建或者自动化构建,查看构建最终的镜像
```
![image-20220612214752493](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220612214752493.png)
可以手动构建或者自动化构建,查看构建最终的镜像
#### 4.发布到kubernetes集群
![image-20220612214752493](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220612214752493.png)
在master节点创建持续发布脚本
#### 4.发布到kubernetes集群
```
在master节点创建持续发布脚本 [root@master ~]# cat eureka.sh
#!/bin/bash
``` HARBOR_IP='192.168.18.230'
[root@master ~]# cat eureka.sh HARBOR_USER='admin'
#!/bin/bash HARBOR_USER_PASSWD='Harbor12345'
HARBOR_IP='192.168.18.230' /usr/bin/yum -y install git
HARBOR_USER='admin' if [ -d eureka-yaml ];then
HARBOR_USER_PASSWD='Harbor12345' rm -rf eureka-yaml
/usr/bin/yum -y install git /usr/bin/git clone https://www.xingdian.com/xingdian/eureka-yaml.git
if [ -d eureka-yaml ];then else
rm -rf eureka-yaml /usr/bin/git clone https://www.xingdian.com/xingdian/eureka-yaml.git
/usr/bin/git clone https://www.xingdian.com/xingdian/eureka-yaml.git fi
else cd eureka-yaml
/usr/bin/git clone https://www.xingdian.com/xingdian/eureka-yaml.git docker login ${HARBOR_IP}:80 -u ${HARBOR_USER} -p ${HARBOR_USER_PASSWD}
fi tags=`curl -X GET "http://192.168.18.230/api/v2.0/projects/xingdian/repositories/eureka/artifacts?page=1&page_size=10&with_tag=true&with_label=false&with_scan_overview=false&with_signature=false&with_immutable_status=false" -H "accept: application/json" | jq | grep name `
cd eureka-yaml tagss=`echo $tags | awk -F "\"" '{print $4}'`
docker login ${HARBOR_IP}:80 -u ${HARBOR_USER} -p ${HARBOR_USER_PASSWD} sed -i "s#eureka_image#192.168.18.230:80/xingdian/eureka:${tagss}#" eureka.yaml
tags=`curl -X GET "http://192.168.18.230/api/v2.0/projects/xingdian/repositories/eureka/artifacts?page=1&page_size=10&with_tag=true&with_label=false&with_scan_overview=false&with_signature=false&with_immutable_status=false" -H "accept: application/json" | jq | grep name ` kubectl get pod | grep eureka
tagss=`echo $tags | awk -F "\"" '{print $4}'` if [ $? -eq 0 ];then
sed -i "s#eureka_image#192.168.18.230:80/xingdian/eureka:${tagss}#" eureka.yaml kubectl delete -f eureka.yaml
kubectl get pod | grep eureka kubectl create -f eureka.yaml
if [ $? -eq 0 ];then else
kubectl delete -f eureka.yaml kubectl create -f eureka.yaml
kubectl create -f eureka.yaml fi
else ```
kubectl create -f eureka.yaml
fi ![image-20220612233953314](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220612233953314.png)
```
所有节点docker修改http方式
![image-20220612233953314](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220612233953314.png)
```shell
所有节点docker修改http方式 [root@harbor ~]# cat /etc/docker/daemon.json
{
```shell "insecure-registries":["192.168.18.230:80"]
[root@harbor ~]# cat /etc/docker/daemon.json }
{ [root@harbor ~]# systemctl daemon-reload && systemctl restart docker
"insecure-registries":["192.168.18.230:80"] ```
}
[root@harbor ~]# systemctl daemon-reload && systemctl restart docker jenkins构建发布
```
![image-20220613002321701](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220613002321701.png)
jenkins构建发布
gitlab修改代码提交自动触发jenkins构建
![image-20220613002321701](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220613002321701.png)
![image-20220613002244405](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220613002244405.png)
gitlab修改代码提交自动触发jenkins构建
浏览器访问构建的项目
![image-20220613002244405](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220613002244405.png)
![image-20220613002408320](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220613002408320.png)
浏览器访问构建的项目
同理其余jar包部署最终结果
![image-20220613002408320](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220613002408320.png)
![image-20220622130840731](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220622130840731.png)
同理其余jar包部署最终结果
![image-20220622130840731](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220622130840731.png)