使用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…

python将文件打包为exe经常性的被360软件杀掉问题

在python将程序打包后,发生360会一直将自己打包出来的文件进行清楚,查询资料发生可能是因为调用了os库。 使用pyinstaller打包遇到的问题, The pathlib package is an obsolete backport of a standard library package and is incompatibl…

苍穹外卖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…

python什么是装饰器

1 python什么是装饰器 python装饰器本身是一个函数,它在不修改原函数或类的情况下,接受一个原函数或类作为参数,为原函数或类添加新逻辑,然后返回函数或类。是管理函数和类的一种方式。 此处原函数或类,为被修饰的函…

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函…

ubuntu升级22.04

要将Ubuntu系统从当前版本(如18.04)升级到22.04,可以按照以下步骤进行操作: 首先确保已经安装了最新的软件包更新。打开终端并运行以下命令来更新现有的软件包列表: sudo apt update 然后使用以下命令来升级所有已安装…

【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…

sqoop的安装与使用

Sqoop是一个用于在hadoop与mysql之间传输数据的工具 Sqoop 环境搭建 (1)上传安装包:sqoop-1.4.6-cdh5.14.2.tar.gz到/opt/software (2)解压安装包:tar -zxf sqoop-1.4.6-cdh5.14.2.tar.gz -C /opt/install/ (3)创建软连接:ln -s /opt/install/sqoop-1.4.6-cdh5.14.2/ /opt/ins…

C# winform判断自身程序是否已运行,如果已运行则激活窗体

C# winform判断自身程序是否已运行,如果已运行则激活窗体 using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Reflection; using System.Runtime.InteropServices; using System.Threading; using Syst…

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

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

goland报错:The selected directory is not a valid home for Go SDK

原因: IDEA / goland无法识别到GO语言SDK版本 解决办法: 打开GO的安装目录下的src\runtime\internal\sys\zversion.go文件,添加一行(我的go版本是1.18.10) const TheVersion go1.18.10 重启goland再选择试试

网站被挂黑链怎么办

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

如何实现在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 …

uniapp中,监听页面物理返回问题

业务场景&#xff1a;监听到手机物理返回后&#xff0c;返回到我想要返回的页面&#xff08;返回按钮自动是返回上一页的&#xff09; uniapp官方提供了onBackPress的用法&#xff0c; 这个钩子目前官方只支持app、H5、支付宝小程序&#xff0c;针对我使用的场景&#xff08;微…

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

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