K8S自动化部署Java项目的实现流程(Gitlab推送镜像到Harbor,K8S拉取Harbor中的镜像进行部署)

天行健,君子以自强不息;地势坤,君子以厚德载物。


每个人都有惰性,但不断学习是好好生活的根本,共勉!


文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。

文章目录

  • [1. 流程对比](#1. 流程对比)
    • [1.1 最基础的k8s部署java项目的流程](#1.1 最基础的k8s部署java项目的流程)
    • [1.2 现在使用自动化的流程](#1.2 现在使用自动化的流程)
  • [2. java项目代码](#2. java项目代码)
  • [3. k8s部署gitlab](#3. k8s部署gitlab)
  • [4. k8s部署habor](#4. k8s部署habor)
  • [5. Dockerfile和.gitlab-ci.yml文件配置](#5. Dockerfile和.gitlab-ci.yml文件配置)
  • [6. Java项目推送到gitlab](#6. Java项目推送到gitlab)
  • [7. 配置部署所需的yaml文件](#7. 配置部署所需的yaml文件)
  • [8. 部署项目](#8. 部署项目)

更为详细的k8s部署java项目流程说明请参考文章链接:K8S部署Java项目(Gitlab CI/CD自动化部署终极版)

1. 流程对比

1.1 最基础的k8s部署java项目的流程

  • 将java代码打包成jar包
  • 然后将jar包上传到服务器中
  • 在安装docker的系统中通过Dockerfile文件将jar包创建成镜像
  • 然后根据镜像在k8s中使用deployment的yaml文件配置方式运行成服务

1.2 现在使用自动化的流程

  • 将java代码上传到gitlab上
  • 然后通过gitlab打jar包、打镜像
  • 上传到habor仓库
  • 再到k8s中使用deployment的yaml方式配置(拉取镜像)运行成服务

2. java项目代码

可通过如下链接获取我的项目demo:K8S中部署Java SpringBoot项目源码

当然也可以自己创建一个简单的springboot项目,包含一个请求的函数即可,以便后续访问服务的该接口测试服务的可用性
SpringBoot的搭建(两种方式)

3. k8s部署gitlab

如未部署gitlab可参考链接部署gitlab:K8S部署GitLab(详细完整版)

4. k8s部署habor

如未部署harbor镜像仓库可参考链接部署harbor:K8S部署Harbor镜像仓库(含离线安装包harbor-offline-installer国内下载链接)

注意,这里需要提前在harbor仓库中创建项目文件夹用于存储后续构建的镜像,且需要再构建镜像的命令中指定此镜像仓库项目文件夹地址,具体请到下一步的脚本文件中参考命令进行修改

5. Dockerfile和.gitlab-ci.yml文件配置

这两个文件需要放在项目的根目录下,也就是与pom所在的位置一致

参考文章配置:Dockerfile和.gitlab-ci.yml文件模板

6. Java项目推送到gitlab

参考文章使用git命令将项目推送到gitlab仓库中:通过GIT将本地项目上传到gitee

推送后会自动触发执行.gitlab-ci.yml脚本中的命令,最后可在harbor镜像仓库中看到推送上来的镜像

7. 配置部署所需的yaml文件

根据自己的项目参考文章进行编辑yaml文件内容:K8S部署Java项目的yaml配置文件模板

8. 部署项目

参考文章部署yaml文件:K8S中部署yaml文件(如Java项目)


感谢阅读,祝君暴富!

相关推荐
何以解忧,唯有..7 分钟前
Redis 过期事件监听:原理与实战
java
风中的小熊生气19 分钟前
Spring Boot 面试知识(二):分层、IoC、异常、配置与 Redis
java·springboot
泡茶喝茶写代码19 分钟前
量化数据开发实战系列(第 25 篇):基金基础接口实战:基金列表、ETF-LOF 分类、基金概况、净值数据
java·数据库·人工智能·python·mysql
shehuiyuelaiyuehao1 小时前
算法46,分治快排,排序数组
java·算法·排序算法·排序
野生技术架构师1 小时前
1200 道 JAVA 面试题(各大企业常见面试题及答案)
java·开发语言
careathers1 小时前
【数据结构】栈
java·数据结构
邪修king2 小时前
Re:Linux系统篇(二十六):文件系统(二):Ext 文件系统底层详解:从 inode、块组到软硬链接,结合 Windows 讲透文件管理本质
android·java·linux
Yyyyyy~2 小时前
【java】类和对象
java·开发语言
Allen_LVyingbo2 小时前
医疗人工智能项目全生命周期管理系统:监管知识建模、工程实现与实证评估(下)
大数据·数据库·人工智能·python·自然语言处理·自动化
志栋智能2 小时前
超自动化巡检如何生成“有灵魂”的运维报告?
大数据·运维·人工智能·架构·自动化