11 自由风格发布项目到k8s
一 背景说明
新版的jenkins由于一些k8s插件发现没了,没法使用之前的方法发布了,这次不使用任何插件,直接使用自由风格发布。jenkins是使用docker启动的,k8s环境是基于 1.23版本
二 docker运行jenkins
2.1 安装docker和docker-compase
2.1.1 安装docker环境-ubuntu系统
安装方法
https://www.runoob.com/docker/ubuntu-docker-install.html
自动安装
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
手动安装
安装 apt 依赖包,用于通过HTTPS来获取仓库:
sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg-agent \
software-properties-common
添加 Docker 的官方 GPG 密钥:
curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
sudo apt-get install docker-ce docker-ce-cli containerd.io
2.1.2 安装docker环境-centos系统
安装方式
https://www.runoob.com/docker/centos-docker-install.html
#手动安装
安装所需的软件包。yum-utils 提供了 yum-config-manager ,并且 device mapper 存储驱动程序需要 device-mapper-persistent-data 和 lvm2
yum install -y yum-utils device-mapper-persistent-data lvm2
#设置指定仓库
yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
#阿里云仓库
sudo yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
#安装docker
yum install docker-ce -y
2.1.3 安装docker-compase
#1 安装docker-compose
官方下载安装https://github.com/docker/compose/releases/tag/v2.12.2
chmod +x docker-compose-linux-x86_64
mv docker-compose-linux-x86_64 /usr/bin/docker-compose
#2 设置jenkins使用宿主机的docker,jdk,maven
把jdk和maven安装在宿主机的/data/目录即可。
chmod -R root:root /run/docker.sock
chown -R root:root /run/docker.sock
chmod o+rw /run/docker.sock
2.2 设置jenkins的docker-compose.yml 的文件
[root@k8s-node2 jenkins_docker]# cat docker-compose.yml
version: "3.1"
services:
jenkins:
image: jenkins/jenkins:lts
container_name: jenkins1
ports:
- 8080:8080
- 50000:50000
volumes:
- /data/:/var/jenkins_home
- /run/docker.sock:/var/run/docker.sock #挂载宿主机docker目录
- /opt/kube/bin/docker:/usr/bin/docker
- /etc/docker/daemon.json:/etc/docker/daemon.json
2.3 启动jenkins
docker-compose up -d
2.4 设置jdk和maven
jdk
maven路径
/var/jenkins_home/mvn
三 发布实例
前提:
设置jenkins可以免密码登录到k8s的master节点
# 172.31.7.112 master节点ip
docker exec -it cd94e24f318f bash
ssh-keygen
ssh-copy-id -i id_rsa.pub root@172.31.7.112
3.1 发布war包到k8s
https://gitee.com/huningfei/java.git #项目地址
jenkins设置,需要提前添加gitlab的用户名和密码到凭据
默认分支为master
执行具体的命令
具体代码如下:
## hub仓库地址
registry="registry.cn-hangzhou.aliyuncs.com/huningfei/welcome"
image_name="$registry:$BUILD_NUMBER"
echo "这是image_name"+$image_name
##dockhub密码
dockerhub_username="82558@qq.com"
dockerhub_passwd="password"
##k8s_master
master_ip=172.31.7.112
## 编译
cd $WORKSPACE && /var/jenkins_home/mvn/bin/mvn clean package -Dmaven.test.skip=true
##打包镜像
echo '
FROM lizhenliang/tomcat
RUN rm -rf /usr/local/tomcat/webapps/*
ADD target/*.war /usr/local/tomcat/webapps/ROOT.war
' > $WORKSPACE/Dockerfile
docker build -t ${image_name} .
docker login -u${dockerhub_username} registry.cn-hangzhou.aliyuncs.com -p${dockerhub_passwd}
docker push ${image_name}
## k8s部署
sed -i "s#address#${image_name}#g" $WORKSPACE/deploy.yml
scp -r $WORKSPACE/deploy.yml root@$master_ip:/root
ssh root@$master_ip "kubectl apply -f /root/deploy.yml"
最后点击保存,构建
网页访问项目
3.2 发布jar包到k8s
https://gitee.com/huningfei/demo-test.git #项目地址
具体执行脚本
## hub仓库地址
registry="registry.cn-hangzhou.aliyuncs.com/huningfei/welcome"
##项目名字
#project="welcome"
image_name="$registry:$BUILD_NUMBER"
echo "这是image_name"+$image_name
##dockhub密码
dockerhub_username="82558@qq.com"
dockerhub_passwd="password"
##k8s_master
master_ip=172.31.7.112
## 编译
cd $WORKSPACE && /var/jenkins_home/mvn/bin/mvn clean package -Dmaven.test.skip=true
##打包镜像
echo '
FROM openjdk:8
WORKDIR /home/tomcat/.jenkins/workspace/k8s-demo-test
COPY target/demo-0.0.1-SNAPSHOT.jar /demo-0.0.1-SNAPSHOT.jar
CMD java -jar /demo-0.0.1-SNAPSHOT.jar
' > $WORKSPACE/Dockerfile
docker build -t ${image_name} .
docker login -u${dockerhub_username} registry.cn-hangzhou.aliyuncs.com -p${dockerhub_passwd}
docker push ${image_name}
## k8s部署
sed -i "s#address#${image_name}#g" $WORKSPACE/deploy.yml
scp -r $WORKSPACE/deploy.yml root@$master_ip:/root/demo-test
ssh root@$master_ip "kubectl apply -f /root/demo-test/deploy.yml"
deploy.yml文件内容具体见:
https://gitee.com/huningfei/demo-test/blob/master/deploy.yml
最后保存构建。
查看pod和svc
网页访问