K8s结合Harbor镜像管理、Jenkins的简单使用

1,308 阅读4分钟

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.jpg

2、安装Kubernetes集群

登录Kuboard-Spray页面后,在【系统设置】【资源包管理】中导入你所需版本的资源包,随后在集群管理中填写集群名称、选择合适的资源包创建集群。

图3.jpg 集群创建完成后,在集群节点中添加好节点信息;在【可选组件】中,将Kuboard中的端口及名称填写一下,端口不填写默认是80端口,会与K8s容器端口冲突。

图4.jpg 信息填写完成后点击保存,点击安装集群开始安装任务。安装任务完成后可点击【访问集群】查看Kuboard地址并访问查看。

图5.jpg

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查看组件运行状况。在浏览器输入上面配置好的网址后,可看到如下页面

图6.jpg 登录后创建个新的项目,即可在项目中查看镜像的推送、拉取命令了,推送镜像后也可以在项目查看镜像信息。

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新建任务

图7.jpg

Genenal

在描述中填写任务描述,偏于分辨

图8.jpg

在参数化构建过程增加一个变量TAG,通过Gitlab中Tag标签获取源码打包

图9.jpg

源码管理

URL中填写项目地址,refs/tags/${TAG}为从gitlab标签拉取源码

图10.jpg

Optional filter

图11.jpg

Build

图12.jpg

Post Steps

图13.jpg

#!/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工作负载

基本信息

图14.jpg

容器信息

图15.jpg

存储挂载

图16.jpg

高级设置

图17.jpg

服务/应用路由

图18.jpg

图19.jpg

点击保存后会显示校验填写的信息是否正确,校验结束点击应用即可。

图20.jpg