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
image

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
image
执行具体的命令
image
具体代码如下:

## 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"

最后点击保存,构建
网页访问项目
image

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
image

网页访问
image

posted @ 2023-02-21 10:31  huningfei  阅读(83)  评论(0编辑  收藏  举报
levels of contents