当前位置: 首页 > news >正文

Jenkins集成Kubernetes 部署springboot项目

文章目录

    • 准备部署的yml文件
    • Harbor私服配置
    • 测试使用效果
    • Jenkins远程调用
    • 参考文章

准备部署的yml文件

apiVersion: apps/v1
kind: Deployment
metadata:namespace: testname: pipelinelabels:app: pipeline
spec:replicas: 2selector:matchLabels:app: pipelinetemplate:metadata:labels:app: pipelinespec:containers:- name: pipelineimage: 192.168.56.112:80/repository/pipeline-test:1.0.0imagePullPolicy: Alwaysports:- containerPort: 8080
---
apiVersion: v1
kind: Service
metadata:namespace: testlabels:app: pipelinename: pipeline
spec:selector:app: pipelineports:- port: 8081targetPort: 8080type: NodePort
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:namespace: testname: pipeline
spec:ingressClassName: ingressrules:- host: batman.pipeline.comhttp:paths:- path: /pathType: Prefixbackend:service:name: pipelineport:number: 8081

Harbor私服配置

在尝试用kubernetes的yml文件启动pipeline服务时,会出现Kubernetes无法拉取镜像的问题,这里需要在kubernetes所在的Linux中配置Harbor服务信息,并且保证Kubernetes可以拉取Harbor上的镜像

  • 设置Master和Worker的私服地址信息
{"registry-mirrors": ["https://dockerhub.azk8s.cn","https://docker.mirrors.ustc.edu.cn","https://registry.docker-cn.com"],"insecure-registries": ["192.168.56.112:80"]
}

在这里插入图片描述

  • 设置免密登陆k8s节点
k8s 111上执行mkdir /root/.ssh然后再 jenkins 112中执行如下操作1、采用dsa加密生成密钥,也可以采用rsa加密ssh-keygen -t dsa然后一路回车。上面将密钥生成在默认路径/root/.ssh下,然后将其内容输出到/root/.ssh/authorized_keys中cat /root/.ssh/id_dsa.pub >> /root/.ssh/authorized_keys然后将公钥复制到其他两个需要免密钥登录的k8s 111中scp /root/.ssh/authorized_keys  192.168.56.111:/root/.ssh/ssh 192.168.56.111
  • 解决拉取私有镜像的权限问题
kubectl create secret docker-registry myharbor \--docker-server=192.168.56.112:80 \--docker-username=admin \--docker-password=Harbor12345 \--docker-email=943104990@qq.com \-n test
  • pod spec 配置imagePullSecrets
spec:containers:- name: pipelineimage: 192.168.56.112:80/repository/pipeline-test:1.0.0imagePullPolicy: Alwaysports:- containerPort: 8080imagePullSecrets:- name: myharbor

测试使用效果

kubectl apply -f pipeline.yml

在这里插入图片描述

访问 http://192.168.56.111:30674/user/2

在这里插入图片描述

Jenkins远程调用

  • 将pipeline.yml配置到Gitlab中

  • 配置Jenkins的目标服务器,可以将yml文件传输到K8s的Master上

  • 设置执行kubectl的脚本到Jenkinsfile

apiVersion: apps/v1
kind: Deployment
metadata:namespace: testname: pipelinelabels:app: pipeline
spec:replicas: 2selector:matchLabels:app: pipelinetemplate:metadata:labels:app: pipelinespec:containers:- name: pipelineimage: 192.168.56.112:80/repository/pipeline-test:1.0.0imagePullPolicy: Alwaysports:- containerPort: 8080imagePullSecrets:- name: myharbor
---
apiVersion: v1
kind: Service
metadata:namespace: testlabels:app: pipelinename: pipeline
spec:selector:app: pipelineports:- port: 8081targetPort: 8080type: NodePort
pipeline {agent anyenvironment{harborHost = '192.168.56.112:80'harborRepo = 'repository'harborUser = 'admin'harborPasswd = 'Harbor12345'port = 8080host_port = 8888}stages {stage('拉取Git代码') {steps {checkout scmGit(branches: [[name: '${tag}']], extensions: [], userRemoteConfigs: [[credentialsId: 'gitee', url: 'https://gitee.com/qfxcoffee/shield.git']])}}stage('构建代码') {steps {sh 'cd arthas-study && /var/jenkins_home/maven/bin/mvn clean package -DskipTests'}}stage('制作自定义镜像并发布Harbor') {steps {sh '''cd arthas-study/dockermv ../target/arthas-study.jar ./arthas-study.jardocker build -t ${JOB_NAME}:${tag} ./'''sh '''docker login -u ${harborUser} -p ${harborPasswd} ${harborHost}docker tag ${JOB_NAME}:${tag} ${harborHost}/${harborRepo}/${JOB_NAME}:${tag}docker push ${harborHost}/${harborRepo}/${JOB_NAME}:${tag}'''}}//         stage('目标服务器拉取镜像并运行') {
//             steps {
//                 sshPublisher(publishers: [sshPublisherDesc(configName: 'testEnv', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: "/usr/bin/deploy.sh $harborHost $harborRepo $JOB_NAME $tag $port $host_port", execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '', remoteDirectorySDF: false, removePrefix: '', sourceFiles: '')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)])
//             }
//         }stage('将yml文件传到k8s-master上') {steps {sshPublisher(publishers: [sshPublisherDesc(configName: 'k8s', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: '', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '', remoteDirectorySDF: false, removePrefix: '', sourceFiles: 'arthas-study/pipeline.yml')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)])}}stage('远程执行k8s-master的kubectl命令'){steps {
//                 sh  'ssh root@192.168.56.111 kubectl apply -f /test/arthas-study/pipeline.yml'sshPublisher(publishers: [sshPublisherDesc(configName: 'k8s', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: "kubectl apply -f /test/arthas-study/pipeline.yml", execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '', remoteDirectorySDF: false, removePrefix: '', sourceFiles: '')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)])}}}
}
  • 查看效果

在这里插入图片描述

在这里插入图片描述

参考文章

微服务架构学习(二)之CentOS安装minikube

相关文章:

Jenkins集成Kubernetes 部署springboot项目

文章目录 准备部署的yml文件Harbor私服配置测试使用效果Jenkins远程调用参考文章 准备部署的yml文件 apiVersion: apps/v1 kind: Deployment metadata:namespace: testname: pipelinelabels:app: pipeline spec:replicas: 2selector:matchLabels:app: pipelinetemplate:metada…...

个股期权是什么期权?个股期权什么时候推出?

今天期权懂带你了解个股期权是什么期权?个股期权什么时候推出?期权也称选择权,是指期权的买方有权在约定的期限内,按照事先确定的价格,买入或卖出一定数量某种特定商品或金融指标的权利。 个股期权是什么期权&#xff…...

TCP UDP

传输层 端口号 tcp udp 网络层 IP地址 IP TCP,UDP 1,TCP是面向链接的协议,而UDP是无连接的协议; 2,TCP协议的传输是可靠的,而UDP协议的传输“尽力而为” 3,TCP可以实现流控,但UDP不行;…...

PCIE协议-1

1. PCIe结构拓扑 一个结构由点对点的链路组成,这些链路将一组组件互相连接 - 图1-2展示了一个结构拓扑示例。该图展示了一个称为层级结构的单一结构实例,由一个根复合体(Root Complex, RC)、多个端点(I/O设备&#xf…...

[C++][PCL]pcl安装包预编译包国内源下载地址

版本名称下载地址PCL-1.14.1-AllInOne-msvc2022-win64含pdb.zip点我下载PCL-1.14.0-AllInOne-msvc2022-win64含pdb.zip点我下载PCL-1.13.1-AllInOne-msvc2022-win64含pdb.zip点我下载PCL-1.13.0-AllInOne-msvc2022-win64含pdb.zip点我下载PCL-1.12.1-AllInOne-msvc2019-win64含…...

海洋行业工业气体检测传感器的重要性

海洋行业是一个广阔而复杂的领域,涉及多个分支和应用,包括浮式生产、储存和卸载(FPSO)装置、渡轮和潜艇等。这些船舶和设施在执行任务时,都可能遇到各种潜在的气体危害。因此,对于海洋行业来说,…...

免费在线录屏、无需注册、免费可用、无限制

免费在线工具 https://orcc.online/ 在线录屏 https://orcc.online/recorder pdf在线免费转word文档 https://orcc.online/pdf 时间戳转换 https://orcc.online/timestamp Base64 编码解码 https://orcc.online/base64 URL 编码解码 https://orcc.online/url Hash(MD5/SHA…...

5V升9V2A升压恒压WT3231

5V升9V2A升压恒压WT3231 WT3231,一款性能卓越的DC-DC转换器,采用了集成10A、26mΩ功率的MOSFET电源开关转换器。它能够输出高达12V的电压,稳定可靠。这款产品以固定的600KHz运行,因此可以使用小型的外部感应器和电容器&#xff0…...

Java中枚举类的使用详解

Java中枚举类的使用详解 在Java编程中,枚举(Enum)是一种特殊的类,用于表示固定数量的常量。与常量相比,枚举类型具有类型安全、可读性强和易于管理的优点。下面我们将详细讲解Java中枚举类的使用,并通过示…...

C++11 设计模式6. 建造者模式,也叫做生成器模式

一 什么是建造者模式? // 小木公司对于SQL有配置,因此要输入sql url,然后输入 sql username,然后是 sql ps //因此小木就想到了使用 SystemConfig这个类来完成上述的三个初始化 //5.1号小木公司加入了redis的缓存机制&#xff0…...

GPS与精致农业 无人机应用 农业遥感 农业类

全球定位系统是美国国防部主要为满足军事部门对海上、陆地和空中设施进行高精度导航和定位的要求而建立的。GPS系统最基本的特点是以“多星、高轨、高频、测量-测距”为体制,以高精度的原子钟为核心。GPS作为新一代卫星导航与定位系统,不仅具有全球性、全…...

Kotlin注解简介

Kotlin注解 注解(Annotations)在 Kotlin 中和在 Java 中有类似的地位,它们都是元数据的形式,为代码提供了额外的信息。注解不会直接影响代码的操作,但可以被编译器或者运行时环境用来生成额外的代码、进行类型检查、处…...

代码随想录训练营

Day45代码随想录 322.零钱兑换 1.题目描述 给你一个整数数组 coins ,表示不同面额的硬币;以及一个整数 amount ,表示总金额。 计算并返回可以凑成总金额所需的 最少的硬币个数 。如果没有任何一种硬币组合能组成总金额,返回 -…...

java中的变量、数据类型、人机交互

变量 变量要素 1、类型;每一个变量都需要定义类型(强类型)其它语言有弱类型(js) 2、变量名; 3、存储的值; 声明方式: 数据类型 变量名 变量值; public static vo…...

Python中的生成器是什么

生成器的工作原理 只要Python函数的主体中有yield关键字,该函数就是生成器函数。调用生成器函数,返回一个生成器对象。也就是说,生成器函数是生成器工厂。 下面以一个简单的函数说明生成器的行为: def gen123():yield 1yield 2yield 3print(gen123) # <function gen…...

【Camera2完整流程分析四】从log角度分析CameraService启动流程

下面直接带你通过log打印来一起读CameraService启动的过程。 1)Camera service对象构建,在启动的时候先创建CameraService 这里会打印: CameraService: CameraService started (pid=559)接着启动的时候会执行 –》onFirstRef() 进入这里面看,先输出打印: CameraService:…...

基于SSM SpringBoot vue教务排课系统

基于SSM SpringBoot vue教务排课系统 系统功能 登录 个人中心 学生信息管理 教师信息管理 课室信息管理 班级信息管理 系别信息管理 专业信息管理 课程信息管理 选课信息管理 课表信息管理 开发环境和技术 开发语言&#xff1a;Java 使用框架: SSM(Spring SpringMVC Myba…...

深入理解 LinkedList 及底层源码分析

LinkedList 是基于链表结构的一种 List&#xff0c;在分析 LinkedList 源码前我们先对对链表结构做一个简单的了解。 一、链表的概念 链表是由一系列非连续的节点组成的存储结构&#xff0c;简单分下类的话&#xff0c;链表又分为_单向链表和双向链表&#xff0c;而单向 / 双…...

美易官方:英伟达业绩将难以撑起股价?

美股市场似乎总是对各大公司的业绩表现抱有极大的期待&#xff0c;就像一个永远填不饱的“巨胃”。在这样的市场环境下&#xff0c;即使是业绩骄人的公司也可能难以支撑其股价。英伟达&#xff0c;这家在图形处理单元&#xff08;GPU&#xff09;领域享有盛誉的公司&#xff0c…...

超实用干货!FP独立站引流攻略

在当前的市场环境下&#xff0c;对于希望继续从事FP和黑五类产品销售的商家来说&#xff0c;搭建独立站绝对是一个明智的选择。没有了第三方平台的限制&#xff0c;拥有自己的独立站意味着你可以完全掌控自己的商业策略和操作。 但脱离了平台&#xff0c;独立站推广会更加困难。…...

EasyAnimateV5-7b-zh-InP一键部署教程:基于Linux系统的快速安装指南

EasyAnimateV5-7b-zh-InP一键部署教程&#xff1a;基于Linux系统的快速安装指南 1. 引言 想快速在Linux系统上部署一个强大的视频生成模型吗&#xff1f;EasyAnimateV5-7b-zh-InP是一个22GB的图生视频模型&#xff0c;支持多分辨率视频生成&#xff0c;还能用中英文双语进行预…...

BilibiliDown终极指南:如何快速掌握B站视频批量下载技巧

BilibiliDown终极指南&#xff1a;如何快速掌握B站视频批量下载技巧 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader &#x1f633; 项目地址: https://gitcode.com/gh_mirrors…...

求人不如求己!小初高电子教材全套自取,鸡娃路上不迷路!

家有神兽的家长们&#xff0c;是不是经常遇到这种情况&#xff1a;孩子把课本忘在学校&#xff0c;作业没法写&#xff1b;想提前预习下学期的内容&#xff0c;却不知道去哪里找教材&#xff1b;或者想给孩子找点课外拓展资料&#xff0c;又怕买错版本……别急&#xff01;我花…...

Pikachu靶场实战:File Inclusion漏洞利用与防御全解析

1. File Inclusion漏洞初探&#xff1a;从理论到靶场实战 文件包含&#xff08;File Inclusion&#xff09;漏洞是Web安全领域最常见的漏洞类型之一&#xff0c;它允许攻击者通过参数控制加载服务器上的任意文件。想象一下&#xff0c;你家的门锁如果设计不当&#xff0c;小偷只…...

融合多尺度特征与注意力机制的YOLOv5红外小目标检测优化方案

1. 红外小目标检测的技术挑战 红外遥感图像中的小目标检测一直是计算机视觉领域的难点问题。与可见光图像相比&#xff0c;红外图像具有低对比度、高噪声、目标尺寸小等特点&#xff0c;这使得传统检测算法难以取得理想效果。在实际应用中&#xff0c;军事侦察中的无人机识别、…...

实战指南:在CentOS 8上部署与配置BIND DNS权威服务器

1. 为什么要在CentOS 8上搭建DNS服务器&#xff1f; 想象一下这样的场景&#xff1a;公司内部有几十台服务器&#xff0c;每次新同事入职都要发一份IP地址对照表&#xff1b;开发团队每次联调测试都要反复确认服务地址&#xff1b;运维人员排查问题时要在记事本里翻找各种192.1…...

告别Transformer的O(n²)烦恼:手把手带你用Mamba-2.0搭建一个长文本摘要模型

突破长文本处理瓶颈&#xff1a;基于Mamba-2.0的高效摘要系统实战指南 在当今信息爆炸的时代&#xff0c;我们每天都被海量文本内容包围——从学术论文、技术文档到商业报告&#xff0c;这些长文本的有效处理已成为知识工作者面临的核心挑战。传统基于Transformer的摘要系统虽然…...

为什么选择Practical Modern JavaScript:探索ES6未来发展方向

为什么选择Practical Modern JavaScript&#xff1a;探索ES6未来发展方向 【免费下载链接】practical-modern-javascript &#x1f3ca; Dive into ES6 and the future of JavaScript 项目地址: https://gitcode.com/gh_mirrors/pr/practical-modern-javascript Practic…...

HeliOS:面向嵌入式设备的零上下文切换RTOS

1. 项目概述HeliOS 是一款面向资源受限嵌入式设备的轻量级、开源、免费使用的实时内核&#xff08;RTOS&#xff09;&#xff0c;其定位并非传统意义上的通用操作系统&#xff0c;而是一个高度可裁剪、零上下文切换开销的多任务调度内核。它专为 Arduino、ARM Cortex-M 等低功耗…...

MacBook Pro用户必看:5分钟搞定StarUML破解(M1/M2芯片专用指南)

M1/M2芯片MacBook高效配置StarUML全流程指南 当你在M1/M2芯片的MacBook上第一次打开StarUML时&#xff0c;可能会遇到各种兼容性问题。作为一款强大的UML建模工具&#xff0c;StarUML在ARM架构下的表现确实有些水土不服。但别担心&#xff0c;经过多次实践&#xff0c;我总结出…...