kubernetes 部署jenkins
项目迁移到k8s平台是怎么样的流程?
基础镜像(一个空白的镜像)--------运行环境镜像(py/php/go/java)------项目镜像(项目打包)
jar包和war包区别
jar
jar包就是java的类进行编译生成的class文件就行打包的压缩包。里面是一些class文件。当我们自己使用maven写一些java程序,进行打包生成jar包。同时在可以在其他的工程下使用,但是我们在这个工程依赖的jar包,在其他工程使用该jar包也要导入。
war
war包其实就是一个web程序进行打包便于部署的压缩包,里面包含我们web程序需要的一些东西,其中包括web.xml的配置文件,前端的页面文件,以及依赖的jar。文件数量对于jar包,这样便于我们部署工程,直接放到tomcat的webapps目录下,直接启动tomcat即可。同时可以使用WinRAR查看war包,直接将后缀.war改成.rar
使用dockerfile部署jenkins
目录结构
[root@master ~]# tree /java/
/java/
├── dockerfile
└── files
├── apache-tomcat-9.0.35.tar.gz
├── index.jsp
├── install.sh
├── jenkins-2.319.war
└── jenkins-2.326.war
构建tomcat镜像
创建一个工作目录并将最好环境准备
[root@master ~]# mkdir -p /java/files
[root@master ~]# touch dockerfile
[root@master ~]# ls /java/
dockerfile files
[root@master ~]# ls /java/files/
apache-tomcat-9.0.35.tar.gz index.jsp install.sh jenkins-2.319.war jenkins-2.326.war
编写一个tomcat的部署脚本
[root@master ~]# cat /java/files/install.sh
#!/bin/bash
rm -rf /etc/yum.repos.d/*
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-$(awk -F '"' 'NR==5{print $2}' /etc/os-release).repo
sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/CentOS-Base.repo
yum install -y java-1.8.0-openjdk
ln -s /usr/local/apache-tomcat-${version}/ /usr/local/tomcat
cp /opt/jenkins-2.319.war /usr/local/tomcat/webapps/
编写一个java测试文件
[root@master files]# pwd
/java/files
cat > index.jsp <<EOF
<html>
<head>
<title>test page</title>
</head>
<body>
<%
out.println("Hello World");
%>
</body>
</html>
EOF
编写dockerfile
[root@master ~]# vi /java/dockerfile
FROM centos
MAINTAINER JRE "xxxx@dsa.com"
ENV version 9.0.35
ENV PATH $PATH:/usr/local/tomcat/bin
ADD files/apache-tomcat-${version}.tar.gz /usr/local/
COPY files/jenkins-2.319.war /opt
COPY files/index.jsp /opt
COPY files/install.sh /tmp
RUN /tmp/install.sh
WORKDIR /usr/local/tomcat/bin
EXPOSE 8080
CMD ["/usr/local/tomcat/bin/catalina.sh", "run"]
生成镜像
[root@master java]# docker build -t xm17671855780/tomcat:v2.0 .
Sending build context to Docker daemon 157.2MB
Step 1/12 : FROM centos
---> 5d0da3dc9764
Step 2/12 : MAINTAINER JRE "xxxx@dsa.com"
---> Using cache
---> ed908e34c66c
Step 3/12 : ENV version 9.0.35
---> Using cache
---> 78770ae2aebc
Step 4/12 : ENV PATH $PATH:/usr/local/tomcat/bin
---> Using cache
---> 830cc1d69ff7
Step 5/12 : ADD files/apache-tomcat-${version}.tar.gz /usr/local/
---> Using cache
---> 9807829a6ead
Step 6/12 : COPY files/jenkins-2.319.war /opt
---> Using cache
---> b309567d5045
Step 7/12 : COPY files/index.jsp /opt
---> Using cache
---> 3550e9891309
Step 8/12 : COPY files/install.sh /tmp
---> Using cache
---> a35142f8f9da
Step 9/12 : RUN /tmp/install.sh
---> Using cache
---> 380aeee274c7
Step 10/12 : WORKDIR /usr/local/tomcat/bin
---> Using cache
---> 0dee4b7fd730
Step 11/12 : EXPOSE 8080
---> Using cache
---> 365e5624149e
Step 12/12 : CMD ["/usr/local/tomcat/bin/catalina.sh", "run"]
---> Using cache
---> ddc629c835d1
Successfully built ddc629c835d1
Successfully tagged xm17671855780/tomcat:v2.0
运行镜像然后进入镜像,将jenkins包放入ROOT目录进行解压
[root@master java]# docker run -dit --name test -p 8080:8080 xm17671855780/tomcat:v2.0
36d515ea8b5780d1d2cba39b72ef61710fe7b348083daac77bb6c9a8dfac38d3
[root@master java]# docker exec -it test /bin/bash
[root@36d515ea8b57 bin]# cd ../webapps/ROOT
[root@36d515ea8b57 ROOT]# ls
RELEASE-NOTES.txt asf-logo-wide.svg bg-middle.png bg-upper.png index.jsp tomcat.css tomcat.png
[root@36d515ea8b57 ROOT]# rm -rf *
[root@36d515ea8b57 ROOT]# cp ../jenkins-2.319.war .
[root@36d515ea8b57 ROOT]# ls
jenkins-2.319.war
[root@36d515ea8b57 ROOT]# yum -y install unzip
[root@36d515ea8b57 ROOT]# unzip jenkins-2.319.war
[root@36d515ea8b57 ROOT]# ls
bootstrap containerd favicon.ico jenkins-2.319.war LogFileOutputStream$1.class MainDialog.class robots.txt winstone.jar
cni css help JNLPMain.class LogFileOutputStream.class Main$FileAndDescription.class scripts
ColorFormatter.class executable images jsbundles Main.class META-INF WEB-INF
重启容器
[root@master java]# docker restart test
test
网页访问
进入到容器中获取并复制密码,将密码粘贴至密码框中
[root@36d515ea8b57 bin]# cat /root/.jenkins/secrets/initialAdminPassword
5684584f63824c2f99f05f2471ade984
选择安装默认插件
等待插件安装完毕
选择以admin用户继续
绑定httpd//:ip:port(资源地址)
完成
上传镜像至docekr 仓库中
[root@master ~]# docker login
Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one.
Username: xm17671855780
Password:
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store
[root@master ~]# docker push xm17671855780/tomcat:v2.0
The push refers to repository [docker.io/xm17671855780/tomcat]
779784db29de: Pushed
98fcebc8c219: Pushed
6b35e72b6571: Pushed
bc1ffb57f0af: Pushed
139a083dd428: Pushed
74ddd0ec08fa: Mounted from library/centos
v2.0: digest: sha256:6705d75a01d83f8083cce8817407d341bf00cbfc5b8c0cc55fece33e438cfc04 size: 1579
使用kubernetres 部署jenkins
目录结构
[root@master ~]# tree /main/
/main/
└── deploy.yaml
编写kubernete资源定义文件
[root@master ~]# vi /main/deploy.yaml
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: jenkins
spec:
replicas: 1
selector:
matchLabels:
app: jenkins
template:
metadata:
labels:
app: jenkins
spec:
containers:
- name: jenkins
image: xm17671855780/tomcat:v2.0
imagePullPolicy: IfNotPresent
---
apiVersion: v1
kind: Service
metadata:
name: jenkins
spec:
selector:
app: jenkins
type: NodePort
ports:
- port: 8080
targetPort: 8080
nodePort: 30020