我是使用https://blog.csdn.net/duyusean/article/details/80011540这位博主的安装方法。
因为我是内网环境,我采用的是离线安装的方式,都比较简单。
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运行依赖于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
然后上传到服务器解压即可。
修改harbor配置文件
进入到harbor下的conf目录,修改名称:
cp harbor.yml.tmpl harbor.yml
需要修改配置如下:
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
如图所示说明登录成功。
注意:jenkins服务器也需要安装docker。
我之前部署是参考这位博主的:
https://blog.csdn.net/pooasb/article/details/113769632
(1)准备一个demo将代码提交到gilab上,然后添加一个Dockerfile文件,内容如下:
# 基于哪个镜像
FROM openjdk:8-jdk-alpine
ENV LANG C.UTF-8
ENV 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"
# 配置容器启动后执行的命令
ENTRYPOINT java -jar ${JAVA_OPTS} emss-wocf-wordorderinfo-front-1.0.0.jar
(2)打开jenkins页面,新建一个maven项目
这里的名字我随便起的。
(2)gitlab配置任务。
(3)构建镜像并将镜像推到镜像仓库Harbor:
新增执行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
fi
cp $JAR_MAIN_PATH/Dockerfile $JAR_WORKE_PATH
cd $JAR_MAIN_PATH
echo "----------将jar包移动到指定的目录----------"
mv $JAR_PATH/$JAR_NAME $JAR_WORKE_PATH
rm -rf $JAR_MAIN_PATH
cd $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_ID
echo "---------------开始删除job---------------------"
rm -rf $JAR_JOB_MAIN_PATH
#rm -rf $JAR_WORKE_PATH/$JAR_NAME-$BUILD_ID.jar
#echo "---------------构建 success-------------------------------"
在测试过程中可能会遇到很多问题,我第一次测了三十多次,才测通,所以这个在调通过程中可能会遇到很多问题,一个一个解决吧!我也走了很多弯路。