1、前言
本篇文章主要分享个人在使用kuboard-spray安装K8s集群,及Jenkins打包上传镜像到harbor,K8s下载镜像部署应用程序。
1.1、准备工作
四台centOs7服务器(其中三台不能是CentOs7.7,kuboard-spary中资源包不支持此环境,原因不明)。一台安装kuboard-spary,三台安装Kubernetes机群。
1.2、安装kuboard-spary
# 卸载旧版docker
yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine
# 安装docker
yum install -y docker
# 启动并设置开机自启
systemctl start docker
systemctl enable docker
# 查看是否安装成功,如果有输出版本号等信息的话,就是安装成功
docker version
# 通过docker镜像
docker run -d --privileged --restart=unless-stopped --name=kuboard-spray -p 80:80/tcp -v /var/run/docker.sock:/var/run/docker.sock -v ~/kuboard-spray-data:/data eipwork/kuboard-spray:latest-amd64
# 如果抓不到这个镜像,可以尝试一下这个备用地址:
# swr.cn-east-2.myhuaweicloud.com/kuboard/kuboard-spray:latest-amd6
KuboardSpray 的信息保存在容器的 /data 路径,请将其映射到一个您认为安全的地方,上面的命令中,将其映射到了 ~/kuboard-spray-data 路径;只要此路径的内容不受损坏,重启、升级、重新安装 Kuboard-Spray,或者将数据及 Kuboard-Spray 迁移到另外一台机器上,您都可以找回到原来的信息。 在浏览器这台机器的IP,初始密码是admin,密码 Kuboard123;登陆成功后如图所示:
2、安装Kubernetes集群
登录Kuboard-Spray页面后,在【系统设置】【资源包管理】中导入你所需版本的资源包,随后在集群管理中填写集群名称、选择合适的资源包创建集群。
集群创建完成后,在集群节点中添加好节点信息;在【可选组件】中,将Kuboard中的端口及名称填写一下,端口不填写默认是80端口,会与K8s容器端口冲突。
信息填写完成后点击保存,点击安装集群开始安装任务。安装任务完成后可点击【访问集群】查看Kuboard地址并访问查看。
3、安装Harbor
Harbor 是由 VMware 开源的一款云原生制品仓库,Harbor 的核心功能是存储和管理 Artifact。Harbor 允许用户用命令行工具对容器镜像及其他 Artifact 进行推送和拉取,并提供了图形管理界面帮助用户查看和管理这些 Artifact。
# 下载解压安装包
wget https://github.com/goharbor/harbor/releases/download/v2.3.1/harbor-offline-installer-v2.3.1.tgz
tar -xzvf harbor-offline-installer-v2.3.1.tgz
# 修改配置文件
cd harbor
cp harbor.yml.tmpl harbor.yml
# 修改yml内容,
# 其中hostname为对外访问的地址,如配置有域名可直接写域名,没有写ip,port端口改为你理想的端口即可
# harbor_admin_password是admin账户的密码,不修改默认是Harbor12345
配置文件修改完成后,执行./install.sh 部署Harbor。完成可执行docker ps查看组件运行状况。在浏览器输入上面配置好的网址后,可看到如下页面
登录后创建个新的项目,即可在项目中查看镜像的推送、拉取命令了,推送镜像后也可以在项目查看镜像信息。
4、Jenkins推送镜像,K8s下载部署应用程序
4.1、创建Dockerfile
在工程根目录中新建一个Dockerfile文件,用于Docker打包使用
# FORM是定制的镜像都是基于 FROM 的镜像,这里的 openjdk:8u181 就是定制需要的基础镜像。后续的操作都是基于JDK
FROM openjdk:8u181
# 执行作者信息
MAINTAINER author
# 将文件、目录或远程URL复制到镜像中。
ADD target/【工程名】-0.0.1-SNAPSHOT.jar 【工程名】.jar
# RUN 后面接可执行的命令行命令,有两种格式,此处为shell可是
RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
# 先删除时区文件,里面默认有个UTC时区配置,会影响程序获取当前时区
RUN rm -rf /etc/timezone
# 写入指定时区(可选)
RUN echo "Asia/shanghai" >> /etc/timezone
# 字体配置 宋体 (可选)
COPY simsun.ttf /usr/share/fonts/simsun.ttf
# 工程启动命令,类似于 CMD 指令,但其不会被 docker run 的命令行参数指定的指令所覆盖
ENTRYPOINT ["java", "-jar", "【工程名】.jar", "--spring.profiles.active=prod"]
4.2、Jenkins新建任务
Genenal
在描述中填写任务描述,偏于分辨
在参数化构建过程增加一个变量TAG,通过Gitlab中Tag标签获取源码打包
源码管理
URL中填写项目地址,refs/tags/${TAG}为从gitlab标签拉取源码
Optional filter
Build
Post Steps
#!/bin/bash
tag_name=$TAG
echo '【工程名称】 tag name: '$tag_name
image_name="【工程名称】:${tag_name}"
image_tag="【harbor push 地址】/${image_name}"
cd ./【工程名称】
# 执行项目下Dockerfile
docker build -t $image_name .
# 在项目中标记镜像
docker tag $image_name $image_tag
# 上传镜像
docker push $image_tag
构建设置
如果需要构建通知的话,可以在此设置通知。
到此Jenkins打包上传Harbor就结束了,可以执行任务后查看镜像是否上传成功~
5、新增K8s工作负载
基本信息
容器信息
存储挂载
高级设置
服务/应用路由
点击保存后会显示校验填写的信息是否正确,校验结束点击应用即可。