使用kubesphere的devops部署SpringCloud项目

devops部署SpringCloud项目

  • 环境说明
  • 部署流程
    • 创建DevOps工程
    • 填写流水线信息
    • 创建流水线
      • jenkinsfile
      • Dockerfile
      • deploy.yaml

环境说明

  • 已经安装kubesphere的devops组件
  • 安装教程可参考官方文档:https://v3-1.docs.kubesphere.io/zh/docs/pluggable-components/devops/

部署流程

创建DevOps工程

在这里插入图片描述
在这里插入图片描述

填写流水线信息

在这里插入图片描述
在这里插入图片描述

创建流水线


1 我们编写JenkinsFile
在这里插入图片描述

流水线的部署流程如下图

拉取代码
编译代码
打包镜像
推送镜像
部署应用

jenkinsfile

因为所有服务都写出来实在太长也不方便观看,故以gateway,admin 两个模块为例,增加其他模块也是亦是相同,复制粘贴即可

pipeline {agent {node {label 'jdk11'}}stages {stage('拉取代码') {agent nonesteps {container('maven') {git(url: '你的代码地址', credentialsId: 'git-code-auth', branch: '代码分支', changelog: true, poll: false)sh 'ls'}}}stage('编译代码') {agent nonesteps {container('maven') {sh '''ls
pwd
java -version'''sh 'mvn clean install -Dmaven.test.skip=true'}}}stage('default-2') {parallel {stage('构建镜像gateway') {agent nonesteps {container('maven') {sh 'ls $GATEWAY/target'sh 'docker build -t $GATEWAY:latest -f $GATEWAY/Dockerfile ./$GATEWAY/'}}}stage('构建镜像tingyuan-cloud-api-admin') {agent nonesteps {container('maven') {sh 'ls $BASE_PATH/$ADMIN/target'sh 'docker build -t $ADMIN:latest -f $BASE_PATH/$ADMIN/Dockerfile ./$BASE_PATH/$ADMIN/'}}}}}stage('default-3') {parallel {stage('推送镜像gateway') {agent nonesteps {container('maven') {withCredentials([usernamePassword(credentialsId: 'aliyun-docker', passwordVariable: 'DOCKER_PASSWORD_VAR', usernameVariable: 'DOCKER_USER_VAR',)]) {sh 'echo "$DOCKER_PASSWORD_VAR" | docker login $REGISTRY -u "$DOCKER_USER_VAR" --password-stdin'sh 'docker tag $GATEWAY:latest $REGISTRY/$DOCKERHUB_NAMESPACE/$GATEWAY:SNAPSHOT-$BUILD_NUMBER'sh 'docker push  $REGISTRY/$DOCKERHUB_NAMESPACE/$GATEWAY:SNAPSHOT-$BUILD_NUMBER'}}}}stage('推送镜像admin') {agent nonesteps {container('maven') {withCredentials([usernamePassword(credentialsId: 'aliyun-docker', passwordVariable: 'DOCKER_PASSWORD_VAR', usernameVariable: 'DOCKER_USER_VAR',)]) {sh 'echo "$DOCKER_PASSWORD_VAR" | docker login $REGISTRY -u "$DOCKER_USER_VAR" --password-stdin'sh 'docker tag $ADMIN:latest $REGISTRY/$DOCKERHUB_NAMESPACE/$ADMIN:SNAPSHOT-$BUILD_NUMBER'sh 'docker push  $REGISTRY/$DOCKERHUB_NAMESPACE/$ADMIN:SNAPSHOT-$BUILD_NUMBER'}}}}}}stage('default-4') {parallel {stage('deploy gateway to pro') {agent nonesteps {kubernetesDeploy(configs: '文件所在路径/deploy/**', enableConfigSubstitution: true, kubeconfigId: "$KUBECONFIG_CREDENTIAL_ID")}}stage('deploy admin to pro') {agent nonesteps {kubernetesDeploy(configs: '文件所在路径/deploy/**', enableConfigSubstitution: true, kubeconfigId: "$KUBECONFIG_CREDENTIAL_ID")}}}}}environment {DOCKER_CREDENTIAL_ID = 'dockerhub-id'GITHUB_CREDENTIAL_ID = 'github-id'KUBECONFIG_CREDENTIAL_ID = 'demo-kubeconfig'REGISTRY = '镜像仓库地址'DOCKERHUB_NAMESPACE = '镜像创库nameSpace'GITHUB_ACCOUNT = 'kubesphere'BASE_PATH = 'api'GATEWAY = 'gateway'APP = 'app'ADMIN = 'admin'GUILD = 'guild'LANDPAGE = 'landpage'SCHEDULE = 'schedule'WS = 'ws'DB = 'db'SERVICE = 'service'FILE = 'file'}parameters {string(name: 'TAG_NAME', defaultValue: '', description: '')}
}

Dockerfile

打包镜像文件

FROM openjdk:11
LABEL maintainer=hrd
ENV PARAMS="--server.port=8080 --spring.profiles.active=k8sProd"
RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone
COPY target/*.jar /app.jar
EXPOSE 8080
ENTRYPOINT ["/bin/sh","-c","java -Dfile.encoding=utf8 -Djava.security.egd=file:/dev/./urandom -jar app.jar ${PARAMS}"]

deploy.yaml

应用部署文件

apiVersion: apps/v1
kind: Deployment
metadata:labels:app: 容器名name: 容器名namespace: 名称空间   #一定要写名称空间
spec:progressDeadlineSeconds: 600replicas: 1selector:matchLabels:app: 容器名strategy:rollingUpdate:maxSurge: 50%maxUnavailable: 50%type: RollingUpdatetemplate:metadata:labels:app: 容器名spec:imagePullSecrets:- name: aliyun-docker  #提前在项目下配置访问阿里云的账号密码 containers:- image: 推送到镜像仓库的地址readinessProbe:httpGet:path: /actuator/healthport: 8080timeoutSeconds: 10failureThreshold: 30periodSeconds: 5imagePullPolicy: Alwaysname: appports:- name: http-8080containerPort: 8080protocol: TCPresources: {}terminationMessagePath: /dev/termination-logterminationMessagePolicy: FilednsPolicy: ClusterFirstrestartPolicy: AlwaysterminationGracePeriodSeconds: 30
---
apiVersion: v1
kind: Service
metadata:labels:app: 容器名name: 容器名namespace: 名称空间
spec:ports:- name: httpport: 8080protocol: TCPtargetPort: 8080selector:app: 容器名sessionAffinity: Nonetype: ClusterIP

如何设置
imagePullSecrets:
- name: aliyun-docker #提前在项目下配置访问阿里云的账号密码
在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/608069.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

redis 从0到1完整学习 (十六):内存回收之 key 过期处理策略

文章目录 1. 引言2. redis 源码下载3. redisDb 结构体4. Redis 过期 key 的处理策略4.1 惰性删除 (Lazy Expiration)4.2 定期删除 (Active Expire / Periodic Expiration)* 5. 参考 1. 引言 前情提要: 《redis 从0到1完整学习 (一)&#xff…

Lumerical Monitors------frequency domain power monitor 频率域功率监视器

frequency domain power monitor 频率域功率监视器 引言正文引言 这里给大家介绍一下 frequency domain power monitor。 正文 首先,我们可以通过以下方式添加 frequency domain power monitor 到我们的工程文件中: 在 general tab 中,有一个共同的监视器设置 simulati…

苍穹外卖Day01——总结1

总结1 1. 软件开发整体介绍1.1 软件开发流程1.2 角色分工1.3 软件环境 2. 苍穹外卖项目介绍2.1 项目介绍2.2 技术选项 3. Swagger4. 补充内容(待解决...) 1. 软件开发整体介绍 1.1 软件开发流程 1.2 角色分工 从角色分工里面就可以查看自己以后从事哪一…

跨国制造业组网方案解析,如何实现总部-分支稳定互联?

既要控制成本,又要稳定高效,可能吗? 在制造企业积极向“智造”发展、数字化转型的当下,物联网、人工智能、机器人等新型设备加入到生产、管理环节,为企业内部数据传输提出了更高的要求。而当企业规模扩大,数…

记录一次接近24万条数据导入Mysql的过程

由于开发项目的需求,之前有部分数据要写入阿里云的表格存储,过了一年多时间,表A的数据量接近24万条,现在需要将表A的数据转到Mysql中。 利用官方工具导出数据后,发现文件里面有238999条数据,文件大小是460…

Unity中URP下深度图的线性转化

文章目录 前言一、_ZBufferParams参数有两组值二、LinearEyeDepth1、使用2、Unity源码推导:3、使用矩阵推导: 三、Linear01Depth1、使用2、Unity源码推导3、数学推导: 前言 在之前的文章中,我们实现了对深度图的使用。因为&#…

C语言中常用的字符串函数(strlen、sizeof、sscanf、sprintf、strcpy)

C语言中常用的字符串函数 文章目录 C语言中常用的字符串函数1 strlen函数2 sizeof函数2.1 sizeof介绍2.2 sizeof用法 3 sscanf函数3.1 sscanf介绍3.2 sscanf用法3.3 sscanf高级用法 4 sprintf函数4.1 背景4.2 sprintf用法 5 strcpy函数5.1 strcpy介绍5.1 strcpy用法 1 strlen函…

【Internal Server Error】pycharm解决关闭flask端口依然占用问题

Internal Server Error The server encountered an internal error and was unable to complete your request. Either the server is overloaded or there is an error in the application. 起因: 我们在运行flask后,断开服务依然保持运行&#xff0…

web端播放rtsp视频流(摄像头监控视频)教程

文章目录 前言一、ffmpeg是什么?二、ffmpeg安装1.下载2.安装 三、node搭建websocket服务四、web客户端播放视频 前言 像海康大华一些摄像头或者直播源 为rtsp视频流,想在web上播放必须进行协议转换。已知一些方案例如rtsp转rtmp需要flash,现…

网站被挂黑链怎么办

网站被挂黑链这种事情总是防不胜防,且不说网站本身的安全防护做的是否到位,但只要被盯上了就难逃厄运。即使是企业机构的网站也难逃被黑的经历,更何况用户苦心经营的网站,因此首先需要正确看待挂黑链这个现象,网站被挂…

如何实现在IDEA中远程访问家里或者公司的数据库远程协作开发

文章目录 1. 本地连接测试2. Windows安装Cpolar3. 配置Mysql公网地址4. IDEA远程连接Mysql小结 5. 固定连接公网地址6. 固定地址连接测试 IDEA作为Java开发最主力的工具,在开发过程中需要经常用到数据库,如Mysql数据库,但是在IDEA中只能连接本…

十一、HTML 图像

1、插入图像 本例演示如何在网页中显示图像。 <!DOCTYPE html> <html><head><meta charset"utf-8"><title>插入图像</title> </head><body><p>一个图像:<img src"smiley.gif" alt"Smiley …

使用Android Compose实现网格列表滑到底部的提示信息展示

文章目录 概述1 效果对比1.1 使用添加Item的办法&#xff1a;1.2 使用自定义的方法 2. 效果实现2.1 列表为空时的提示页面实现2.2 添加Item的方式代码实现2.3 使用自定义的方式实现 3. UI工具类 概述 目前大多数的APP都会使用列表的方式来呈现内容&#xff0c;例如淘宝&#x…

C#,入门教程(12)——数组及数组使用的基础知识

上一篇&#xff1a; C#&#xff0c;入门教程(11)——枚举&#xff08;Enum&#xff09;的基础知识和高级应用https://blog.csdn.net/beijinghorn/article/details/123917587 数组是一种数据集合&#xff0c;是一组完全相同的、按顺序存放的数据。 需要记住数组的几个特征&…

如何查询关键词的KD与搜索量

随着海外贸易的不断发展&#xff0c;越来越多的小伙伴们从事外贸行业&#xff0c;但是随着面对有限的市场和激烈的竞争&#xff0c;很多从业者往往流量的来源比较单一&#xff0c;那就是付费流量&#xff0c;包括谷歌ads&#xff0c;facebook等一些投流广告。广告的好处是当你付…

OpenMMLab教程:OpenMMLab介绍与安装

一、 OpenMMLab介绍 OpenMMLab 是一个用于学术研究和工业应用的开源算法体系&#xff0c;于2018年年中开始&#xff0c;由 MMLab&#xff08;香港中文大学多媒体实验室&#xff09;和商汤科技联合启动。OpenMMLab 致力于为计算机视觉领域的重要方向创建统一且开源的代码库&…

开始卷TED:第1篇 —— 《Embrace the near win》—— part: 2

But this is the thing: What gets us to convert success into mastery? 问题来了&#xff1a;我们如何将一次成功转化为卓越的成就呢&#xff1f; mastery convert This is a question I’ve long asked myself. I think it comes when we start to value the gift of a n…

图连通性,Tarjan算法

前言 通常说的Tarjan算法指的是计算机科学家Robert Tarjan提出的多个与图连通性有关的算法&#xff0c;通常包括&#xff1a; 强连通性 有向图的强连通分量&#xff08;SCC&#xff09;缩点 无向图的边双连通性 割边无向图的边双连通&#xff08;e-DCC&#xff09;分量缩点 无…

美餐支付 - PHP代碼实现

前言 背景 前段时间&#xff0c;因接手的项目需要实现 美餐支付 的功能对接 在此记录一下鄙人的实现步骤&#xff0c;方便有需要的道友参考借鉴 场景描述 我们的 “现代膳食” 售卖机&#xff0c;可以在屏幕上显示可配送的餐食 用户选中商品后&#xff0c;点击购买 选择 “美餐…

铸铁检验平台主要应用在哪些行业中——河北北重

铸铁检验平台可应用于以下行业&#xff1a; 汽车制造业&#xff1a;用于检验汽车零部件的铸铁材质和质量&#xff0c;以确保零部件的可靠性和耐用性。 机械制造业&#xff1a;用于检验铸铁机械零部件的质量和性能&#xff0c;以确保机械设备的稳定运行。 建筑工程&#xff1a…