发布springboot-demo到私有HARBOR并使用k8s部署

jenkins+kubernetes(k8s)发布Springboot项目 jenkins+kubernetes(k8s)发布Java项目准备工作机器列表创建一个java项目创建jenkins镜像Jenkins服务配置启动jenkins访问jenkins系统配置和权限配置发布Java服务查看java服务运行状态 记录一下学习k8s+jenkins发布项目的过程,期间遇到很多坑。希望能让刚接触的童鞋少走弯路。 准备工作 本篇只介绍发布的过程,在这之前有很多必要的工作要做: ... 阅读详情

HARBOR新版本安装

https://segmentfault.com/a/1190000022812745

tar  -xvf harbor-offline-installer-v2.5.0.tgz
cd harbor
cp harbor.yml.tmpl  harbor.yml

#修改配置信息,这里不使用https
vim harbor.yml:
hostname: 172.16.12.200 #如果要用https需要添加证书,这里直接使用IP 
http:
    port: 80 #curl测试用
#https:
#  port: 443 #自动监听443端口,不通过Nginx
#  certificate: /opt/certs/client.pem
#  private_key: /opt/certs/client-key.pem

database:
    password: root123 #默认
harbor_admin_password: Harbor12345 #默认
log:
    location: /data/harbor/logs
data_volume: /data/harbor/

#

./prepare
./install.sh

http://172.16.12.200/默认用户名和密码如下: user:admin password:Harbor12345

新建project名称为demo
一般工作环境project分为dev,test,prod,uat等,用来隔离各个环境的镜像

提交测试镜像

配置docker信任(使用http时)

如果采用http登录,需要修改docker配置,k8s所有节点的docke都需要配置,否则无法拉取镜像

vim /etc/docker/daemon.json

{
  "registry-mirrors": ["https://ehbu9xsm.mirror.aliyuncs.com"],
  "insecure-registries":["172.16.12.200"]
}

systemctl daemon-reload
 systemctl restart docker

创建镜像

springboot-demo项目的Dockerfile.yaml

FROM openjdk:8-jdk-alpine
MAINTAINER bamoo
ADD springboot-demo.jar springboot-demo.jar
RUN echo "Asia/Shanghai" >/etc/timezone
RUN sh -c 'touch /springboot-demo.jar'
ENV JAVA_OPTS=""
CMD exec java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /springboot-demo.jar
EXPOSE 8000

构建镜像

docker build . -t springboot-demo:v1 -f Dockerfile

## 运行镜像容器可以在docer环境测试下,这一步非必要可以跳过
 docker run -d -p 8000:8000  --name demo-test springboot-demo:v1
 curl localhost:8000

修改镜像tag前

docker images
REPOSITORY                                                        TAG                 IMAGE ID            CREATED             SIZE
springboot-demo                                                   v1                  3ed4b8bc215f        26 minutes ago      140MB

修改镜像tag:镜像名称要加上域名(这里是ip)/project名称/镜像名称:版本号

docker tag springboot-demo:v1 172.16.12.200/demo/springboot-demo:v1

#修改镜像tag后
docker images
REPOSITORY                                                        TAG                 IMAGE ID            CREATED             SIZE
172.16.12.200/demo/springboot-demo                                v1                  3ed4b8bc215f        28 minutes ago      140MB

发布镜像到harbor仓库中

docker push 172.16.12.200/demo/springboot-demo:v1
The push refers to repository [172.16.12.200/demo/springboot-demo]
bee8556929fc: Pushed
83d6eb80e314: Pushed
1ad5d9220ec2: Pushed
32229f31d413: Pushed
ceaf9e1ebef5: Pushed
9b9b7f3d56a0: Pushed
f1b5933fe4b5: Pushed
v1: digest: sha256:567b056ce9d54521c50ff888adcabaa8180ce50ccad01c5db0214bfa5ecbb30f size: 1786

如果不使用默认项目名library,则需要使用admin用户提前登录Harbor的Web界面,手动创建新项目后再进行Push操作
给镜像打上相应的标签, 注意标签格式: ip/{project-name}/{image-name}[:tag]
项目library只有admin有写的权限
docker tag centos:latest 192.168.1.130/library/centos:1.0

将本地镜像Push到Harbor
docker push 192.168.1.130/library/centos:1.0


Docker搭建私有仓库管理系统Harbor
https://blog.51cto.com/wutengfei/2480749
https://blog.youkuaiyun.com/m0_37063785/article/details/101303898

dockerfile样版

FROM java:8u211
ENV JAVA_OPTS "\
-Xmx4096m \
-XX:MetaspaceSize=256m \
-XX:MaxMetaspaceSize=256m"
ENV JAVA_HOME /usr/local/java
ENV PATH ${PATH}:${JAVA_HOME}/bin

COPY target/myweb.jar myweb.jar

RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
RUN echo 'Asia/Shanghai' >/etc/timezone

EXPOSE 8080
CMD java ${JAVA_OPTS} -jar myweb.jar

k8s使用私有仓库镜像发布服务

参考https://blog.youkuaiyun.com/wangsofa/article/details/108114593

1.要有自己的私有仓库
2.要有账号密码
登录Harbor

docker login -u admin -p Harbor12345 192.168.81.84

3.查看登录的秘钥数据:
登录成功后会在当前用户下生成 .docker/config.json 文件

cat ~/.docker/config.json

4.再对上面的 config.json 进行base64加密

cat ~/.docker/config.json |base64 -w 0

5.在K8S中创建 secret.yaml 文件:

apiVersion: v1
kind: Secret
metadata:
  name: login
type: kubernetes.io/dockerconfigjson
data:
  .dockerconfigjson: ewoJImF1dGhzIjogewoJCSIxNzIuMTYuMTIuMjAwIjogewoJCQkiYXV0aCI6ICJZV1J0YVc0NlNHRnlZbTl5TVRJek5EVT0iCgkJfQoJfSwKCSJIdHRwSGVhZGVycyI6IHsKCQkiVXNlci1BZ2VudCI6ICJEb2NrZXItQ2xpZW50LzE4LjA2LjMtY2UgKGxpbnV4KSIKCX0KfQ==

6.创建secret对象

kubectl create -f harbo-secret.yaml

7.springboot-demo的k8s服务配置信息,这里拉取私有镜像需要密码,因此需要配置imagePullSecrets这里选择第5步创建的sercet名称为login的密码

apiVersion: v1
kind: Service
metadata:
  name: springboot-demo
  namespace: dev
spec:
  #clusterIP: 10.109.179.231 #固定svc的内网ip,不配置则随机每次创建都不同IP
  ports:
  - port: 8000
    protocol: TCP
    targetPort: 8000
  selector:
    run: springboot-demo
  #type: ClusterIP

--- 

apiVersion: apps/v1
kind: Deployment
metadata:
  name: springboot-demo
  namespace: dev
spec:
  replicas: 2
  selector:
    matchLabels:
      run: springboot-demo
  template:
    metadata:
      labels:
        run: springboot-demo
    spec:
      containers:
      - image: 172.16.12.200/demo/springboot-demo:v1.1
        name: springboot-demo
        ports:
        - containerPort: 8000
          protocol: TCP
      imagePullSecrets:
      - name: login

8.执行创建服务

 kubectl create -f springboot-demo-k8s.yaml

在这里插入图片描述

K8S中Service的type类型

上面创建的Service的type类型为ClusterIP,这个ip地址只用集群内部可访问

 kubectl get svc  -n dev
NAME              TYPE        CLUSTER-IP    EXTERNAL-IP   PORT(S)    AGE
springboot-demo   ClusterIP   10.1.13.185   <none>        8000/TCP   10d


 curl http://10.1.13.185:8000

如果需要创建外部也可以访问的Service,需要修改type为NodePort

 kubectl get svc  -n dev
NAME              TYPE        CLUSTER-IP    EXTERNAL-IP   PORT(S)          AGE
springboot-demo   NodePort    10.1.13.185   <none>        8000:32502/TCP   10d

curl http://k8s-master:8000

但是我们在正式服务中基本使用type为ClusterIP,因为所有的服务都禁止直接外网访问的,只有通过专有域名服务器才能访问内部服务

K8S中使用helm部署项目——HelloWorld为例 K8S中使用helm部署项目——HelloWorld为例;涉及到docker镜像的构建及部署 阅读详情

相关推荐

K8S如何以http方式拉取私有镜像仓库Harbor部署SpringBoot服务

核心步骤: (1)强行使用http拉取镜像。进入K8S内部,配置Docker --insecure-registry; (2)K8S添加Secret:拉取镜像时的认证信息; (3)Deployment添加imagePullSecrets进行认证; (4)Service是使用NodePort方式,测试服务需要在K8S的机器上进行。......

天然玩家的博客 3340

springBoot整合harbor

【代码】springBoot整合harbor。

qq_41551345的博客 708

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

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

感谢阅读 2024

K8S+harbor镜像拉取实战

因为我们要在k8s集群的master上面新建由私库拉取下来的镜像生成的pod,而登陆私库需要认证,所以需要获得秘钥认证才可以,这时可以直接用2个节点的秘钥,并生成可用的二进制秘钥,-w 0 表示生成秘钥不转行,默认转行不是正确的格式会出错。陆到harbor,有一个属于自己的认证秘钥,在家目录下的.docker/config.json里面。通过私有仓库下的镜像创建一个pod验证一下。一,先部署镜像仓库harbor服务。没成功下载一次,下载数累加1。harbor镜像上传和下载。安装harbor镜像服务。

qq_40657367的博客 2344

SpringBoot打包上传到Harbor仓库

SpringBoot打包上传到Harbor仓库,实例工程

SPI模式下的SD卡读写,为什么你的数据总出错?详解时序与状态机避坑指南

本文深入探讨SPI模式下SD卡读写数据出错的根本原因,提供时序优化与状态机设计的实战指南。针对时钟周期计数、状态机跳转和忙检测等核心问题,详解命令时序细节、状态机同步策略及高级避坑技巧,帮助开发者提升SD卡在SPI模式下的稳定性和性能。

weixin_30514745的博客 261

在 Kubernetes 上拉取 Harbor 私有仓库镜像并部署服务

今天来讲解下怎么让k8s直接拉取Harbor 私有仓库上面的镜像。

你是我的天晴 2551

海康威视 2DC 系列球机手机直连实用教程

海康威视2DC系列球机手机直连教程:首先确认设备支持直连功能并下载官方"海康互联"App;通过网线连接球机与路由器,使用SADP软件调整IP至同一网段;在App中添加设备并激活,完成调试即可远程查看监控画面。常见问题包括部分型号需远程解锁、网络连接异常等,可通过检查网络环境、联系客服等方式解决。本教程提供从准备到连接的完整指引,助您轻松实现手机监控管理。

海康威视技术支持 5400

k8s部署springboot的demo项目

文章目录1 准备jar包2 构建docker镜像2.1 编写Dockerfile2.2 开始构建2.2 查看镜像3 部署 k8s3.1 编写deployment和service的yaml3.2 构建yaml3.3 测试设置的端口是否能访问3.4 删除构建4 推送镜像到harbor4.1 新建自己的项目4.2 在项目中标记镜像4.3 安装证书4.3.1 下载证书4.3.2 放在 /etc/pki/tls/certs/ 目录下4.4 推送镜像到当前项目4.4.1 登录harbor4.4.2 推送5 排雷5.1

weixin_42555971的博客 1357

【STM32Cube HAL】输入捕获(六)——PWM测量

实验内容:使用通用定时器输入捕获测量信号的脉宽(检测按键按下的时间)。 一、原理图 二、 CubeMX配置 Step1.打开 STM32CubeMX,点击“New Project”,选择芯片型号,STM32F103VETx。 Step2.选择时钟源,并配置时钟树。选择Crystal/Ceramic Resonator,并配置系统时钟为72M。 Step3.配置SYS,我们这里选择的是Serial Wire。(正常情况配置不配置不影响,debug可以使用。但是你不可以把这...

HAHAHA 1万+

计算机组成原理实验logisim(四)之运算器实验

注意,上半张图中所有连入32位宽多路选择器的器件和的“数据位宽”都是32,而中间部分连入1位多路选择器的器件的“数据位宽”皆为1(除了连向“32位加法器”的那一个非门,是32位)。第二到第五个实验的测试,具体怎么测试好吧我也不太清楚,听室友说就是让你分析各种亮灯的原理,比如你点这个,那个为什么颜色要变等等,我就不粘图了,恩大家加油。连图如下,需要在连线之前格外注意“异或门”和“与门”的位宽,将16改为1,不然数据无法通行。关于学术问题,为何这样连什么的,就别问我了,我也没有搞的那么透彻。

qq_54422132的博客 2万+

K8S--部署SpringBoot项目实战

本文介绍K8S如何部署SpringBoot项目。

IT利刃出鞘的博客 3968

2025华为杯第二十二届中国研究生数学建模竞赛A题:通用神经网络处理器下的核内调度问题 - 完整解题分析+完整MATLAB源码!

🎓 本文收录于 《滚雪球学数学建模》专栏,本专栏专注于从零基础出发,带你循序渐进掌握数学建模的核心方法与思维路径。通过“滚雪球式”学习法,从最简单的生活化案例到经典建模工具,再到省赛、国赛真题实战演练,逐步积累知识与技能,帮助你搭建完整的建模体系。无论你是刚接触建模的新生,还是希望提升科研与竞赛能力的学者与工程师,本专栏都将为你提供一条清晰、高效、可实操的建模成长路线,助力你快速进阶,突破难点,迈向数学建模竞赛与实际应用的更高峰 🚀!

**My Coding Family** 2049

KubeSphere CI/CD+GitLab+Harbor将Spring Boot项目部署至Kubernetes

上一篇文章分享了如何在 KubeSphere 对公共的代码仓库 GitHub 和镜像仓库 DockerHub 创建流水线,本文将继续使用 KubeSphere,基于 Harbor 和 GitLab 创建流水线,将 Spring Boot 项目发布至 Kubernetes。 KubeSphere 集成了 Harbor 和 GitLab,内置的 Harbor 和 GitLab 作为可选安装项...

1991

【实战篇导读】四足机器人运动控制导读

认知有限,望大家多多包涵,有什么问题也希望能够与大家多交流,共同成长!本文先对四足机器人运动运动控制系统及相关算法做个简单的介绍,具体内容后续再更,其他模块可以参考去我其他文章主要介绍了波士顿spot机器人的发展历史、四足机器人的硬件系统及电机执行器组成包括硬件系统、关节电机执行器,机载传感器机处理器及电气连接等。概述了四足机器人规划控制、感知、定位及局部地图的相关算法方向。

qq_35635374的博客 678

【部署优化篇三】《DeepSeek边缘计算实战:把目标检测模型塞进树莓派,让AI在巴掌大的设备上“开天眼“》

谁说只有超级计算机才能跑AI?今天咱们就要在树莓派上玩转DeepSeek目标检测,让这个巴掌大的小盒子变成会‘看’世界的智能终端!本文手把手教你从零开始,把最潮的目标检测模型塞进树莓派。全程高能预警,建议准备好你的树莓派4B/5和散热风扇,咱们这就开启边缘计算的魔法之旅!

商务合作|问题讨论|交流学习 请联系作者微信,加微信请务必注明来意,博客主页有联系方式 1305

k8s 最简单的一主二从本地集群部署 并部署镜像(4、k8s部署springboot项目)

k8s 最简单的一主二从本地集群部署 并部署镜像(4、k8s部署springboot项目)准备镜像打包部署 准备 首先准备一个最简单的一个demo,一个rest接口。我们的目的是将这个demo部署到k8s集群中,并访问到。这里暴露的端口是9090 镜像打包 先将jar包上传至master上的一个文件夹内 编写Dockerfile #创建文件 vim Dockerfile ##内容 FROM java:8 VOLUME /tmp ADD demo.jar /demo.jar E

weixin_43885494的博客 1392

基于阿里云物联网平台设计的实时图传系统_采用MQTT协议传输图像

当前基于MQTT协议设计了一个实时图传系统,通过这个项目来演示,两个MQTT设备如何互相订阅,进行消息流转。 在阿里云服务器上创建2个设备,分为为设备A和设备B;设备A负责采集本地摄像头画面上传,设备B负责接收设备A上传的数据然后解析显示出来。在阿里云服务器上需要配置云产品流转,让设备A的数据上传后自动发送给设备B。这样就完成了视频画面数据的流转。不过因为阿里云的最大数据限制,每次最大发送10240字节的数据。

1万+

KubeSphere CI/CD GitLab Harbor将Spring Boot项目部署至Kubernetes

上一篇文章分享了如何在 KubeSphere 对公共的代码仓库 GitHub 和镜像仓库 DockerHub 创建流水线,本文将继续使用 KubeSphere,基于 Harbor 和 GitLab 创建流水线,将 Spring Boot 项目发布至 Kubernetes。 KubeSphere 集成了 Harbor 和 GitLab,内置的 Harbor 和 GitLab 作为可选安装项,需在安装...

KubeSphere 1491

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

在k8s上部署Springboot

文章目录前言创建ReplicationController(RC)创建RC yaml文件使用kubectl根据yaml创建RC创建Service用户访问创建SVC yaml文件使用kubectl根据yaml创建Service访问Springboot项目的接口 前言 在教程开始前,大家需要先搭建好k8s集群、Harbor私有仓库和构建自己的Springboot镜像,可以参考以下文章: 使用kubea...

programer_bei的博客 1886

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Docker+K8s 部署Spring Boot项目

Docker+K8s 部署Spring Boot项目

www_498639971的博客 2842

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

基于k8s快速搭建docker镜像服务的demo

使用docker构建镜像,然后推送到镜像仓库harbor上,再通过k8s创建工作负载,构建服务运行。

weixin_43986850的博客 1257

Mac M1 Parallels CentOS7.9 Rancher + K8S + Gitlab + Jenkins +Harbor CICD

还不行,去掉Jenkins系统设置里的 Enable authentication for ‘/project’ end-point。解决:Settings → Network → Outbound requests。参考2.4~2.6配置即可,最终验证钩子返回200 OK。添加用户Jenkins。问题:控制台输出报错。

如无必要勿增实体 1600

采用jenkins pipeline实现自动构建并部署至k8s

前言 在日常开发中,经常会有发布的需求,而且经常会碰到各种环境,比如:开发环境、测试环境、生产环境。虽然可以使用手动构建、上传服务器部署的方式,但在微服务架构下一个项目经常包含多个微服务的部署,如果用手动方式就会非常繁琐而且容易出错。使用jenkins结合SCM可以实现代码的整个自动化构建部署过程。 本文中自动构建部署过程大致完成了以下步骤: 提交spring boot项目代码并打上git ...

曹洪双 7080

坐井观天说Devops--3--开发CICD之k8s部署springboot分布式持续集成持续交付

本篇博客主要实现了,因为gitlab和jenkins做了关联,登录jenkins网站,可以选择项目的任意一个版本,进行部署或回退或终止操作,能够实现自动将代码拉取到jenkins子节点容器,实现自动打包,自动部署到k8s集群中去。搭建的开发CICD持续交付的框架已经搭建完成了。框架主要主要使用了:开发语言:Java(一个非常简单的springboot项目)开发环境:Idea代码管理:gitlab镜像制作:dockerfile镜像管理:harbor应用打包方式:maven。

weixin_43501172的博客 1351

k8s的ci/cd实践之旅

尝试修改-Djava.awt.headless=true -Dhudson.security.csrf.GlobalCrumbIssuerConfiguration.DISABLE_CSRF_PROTECTION=true 后仍旧失败可能是这个版本的Jenkins没有关闭跨站点防护功能,主题流程基本走通,后续有时间在换个版本看看。进入/opt/software/habor/harbor目录下,修改文件 harbor.cfg,修改如下字段。结果如图并创建项目git,一个最简单的springboot项目。

焱童鞋 1899
上一篇: chrome修改黑色背景dark模式为Disable禁用
下一篇: Dockerfile RUN apk add 卡住问题解决
牧竹子
博客等级 码龄17年 572粉丝 233原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值