KubeSphere 内网环境实践Maven项目流水线
kubesphere官方给出的流水线都是在公网环境下,并对接github、dockerhub等环境。本文在内网实践部署,代码库使用内网部署的gitlab,镜像仓库使用harbor。
1. 环境准备
1.1 部署kubesphere环境
参考官方文档完成:
本文使用到的版本如下:
-
KubeSphere 版本 : v3.4.1
-
kubernetes 版本: v1.23.15
-
操作系统版本:Ubuntu 20.04.2 LTS
1.2 部署kubesphere devops环境
devops作为kubesphere的扩展组件使用,需要在扩容组件中安装kubesphere。
1.3 devops用户指南完成基本的项目和人员创建
并创建对应的项目和人员账号。本文记录流水线配置的关键点,配置步骤主题参考kubesphere官方文档:
- Devops用户指南:https://www.kubesphere.io/zh/docs/v4.1/11-use-extensions/01-devops/
- 构建和部署 Maven 项目:https://www.kubesphere.io/zh/docs/v3.3/devops-user-guide/examples/a-maven-project/
2. 代码导入私有仓库并修改
官方给出的maven示例项目代码库地址:https://github.com/kubesphere/devops-maven-sample.git,这里将代码库导入到本地部署的gitlab环境,可以离线下载然后导入(通过git操作),或者通过gitlab导入项目的功能完成(gitlab需要联网)。
导入完成后对于代码库内容进行必要的修改。
2.1 dockerfile修改
修改代码仓库根路径下的Dockerfile-online文件,主要修改构建的基础镜像,此处指向内网的harbor仓库,需要提前在harbor仓库中上传java镜像:
# FROM java:8u92-jre-alpine
FROM 10.210.10.236:30002/java/java:8u92-jre-alpine
WORKDIR /home
COPY target/*.jar /home
ENTRYPOINT java -jar *.jar
使用jre镜像作为应用的基础镜像,将编译构建的jar包打包后作为应用部署的镜像。
2.2 部署YAML修改
官方demo中,部署使用的是dockerhub镜像仓库,这里改为内部的harbor仓库。修改deploy/all-in-one/
文件夹下面的devops-sample.yaml
文件,主要修改image 路径:
# image: $REGISTRY/$DOCKERHUB_NAMESPACE/$APP_NAME:SNAPSHOT-$BRANCH_NAME-$BUILD_NUMBER
image: $REGISTRY/$HARBOR_NAMESPACE/$APP_NAME:SNAPSHOT-$BRANCH_NAME-$BUILD_NUMBER
说明
image url采用环境变量的方式传递,上述环境变量名称需要与下文中jenkinsfile中定义的环境变量保持一致。
2.3 流水线对接内部的nexus仓库
Nexus 是存储、组织和分发制品的存储管理器。
参考文档:https://www.kubesphere.io/zh/docs/v3.3/devops-user-guide/examples/use-nexus-in-pipelines/
在 GitHub 仓库修改 pom.xml
修改代码仓库根目录下的文件 pom.xml
,修改 <distributionManagement>
代码片段。设置 <id>
并使用内网Nexus 仓库的 URL。
这里按需进行修改,本文使用的代码示例devops-maven