DevOps系列文章之 设计一个简单的DevOps系统

devOps系列(七)grafana+prometheus监控告警 作者目前打算分享一期关于devOps系列的文章,希望对热爱学习和探索的你有所帮助。文章主要记录一些简洁、高效的运维部署指令,旨在和能够。就像运维文档或者手册一样,方便进行系统的重建、改造和优化。每篇文章独立出来,可以单独作为其中一项组件的部署和使用。本章为。 阅读详情

前置条件

gitlab
gitlab-runner
k8s

docker

1. gitlab创建群组

创建群组的好处是,对项目进行分组,群组内的资源可以共享,这里创建了一个tibos的群组

2. 在群组创建一个项目

这里创建一个空白项目,项目名为Gourd.Test,将项目克隆到本地,然后在该目录下创建一个.net core3.1的webapi项目,并推送到gitlab

 

3.编写dockerfile

FROM registry.cn-hangzhou.aliyuncs.com/wmowm/dotnet.core.aspnet:3.1 AS base
WORKDIR /app
EXPOSE 80

LABEL applabel=tibos

FROM registry.cn-hangzhou.aliyuncs.com/wmowm/dotnet.core.sdk:3.1 AS build
WORKDIR ../Gourd.Test
COPY . .
WORKDIR "/Gourd.Test"
RUN dotnet publish "Gourd.Test.csproj" -c Release -o /app

FROM base AS final
WORKDIR /app
COPY --from=build /app .
RUN rm -rf appsettings.Development.json
RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
&& echo 'Asia/Shanghai' >/etc/timezone
ENTRYPOINT ["dotnet", "Gourd.Test.dll","-b","0.0.0.0"]

这里给镜像加了一个标签(LABEL applabel=tibos),方便清理

4.编写 gitlab-ci.yml

variables:
  PROJECT_NAME: gourd.test
  WEBAPI_DOCKERFILE_PATH: ./Gourd.Test/dockerfile
stages:
- build
- deploy
build:
  stage: build
  script:
	- echo "登录私有仓库"
	- docker login --username=${DOCKER_REPOSTORY_USERNAME} -p ${DOCKER_REPOSTORY_PASSPORD} ${DOCKER_REPOSTORY_ADDRESSURL}
	- imageversion=$CI_PIPELINE_ID
	- echo "开始构建镜像:${PROJECT_NAME}.${imageversion}"
	- docker build -t ${PROJECT_NAME}.${imageversion} .
	- echo "打标签:${DOCKER_REPOSTORY_ADDRESSURL}/${DOCKER_REPOSTORY_NAME}/${PROJECT_NAME}:${imageversion}"
	- docker tag ${PROJECT_NAME}.${imageversion} ${DOCKER_REPOSTORY_ADDRESSURL}/${DOCKER_REPOSTORY_NAME}/${PROJECT_NAME}:${imageversion}
	- echo "推送到中央仓库"
	- docker push ${DOCKER_REPOSTORY_ADDRESSURL}/${DOCKER_REPOSTORY_NAME}/${PROJECT_NAME}:${imageversion}
	- echo "清理未使用的镜像"
	- docker image prune -a -f --filter="label=applabel=tibos"
	- docker rmi $(docker images | grep "none" | awk '{print $3}')
  only:
   - main

白话文翻译ci配置
定义了两个变量,项目名称与dockerfile相对地址,然后执行构建步骤,构建脚本如下

  1. 登录docker私有仓库,这里是bp的阿里云的docker仓库,后文会讲如何bp
  2. 定义镜像版本号,这里直接取gitlab-ci内置的流水线编号作为版本号,gitlab-ci内置了很多环境变量,可以查阅文档
  3. 构建镜像
  4. 镜像打标签
  5. 推送到阿里云docker仓库
  6. 清理未使用且包含tibos标签的镜像

5.敏感信息,使用ci的变量进行保护

6.bp阿里云镜像仓库

 

先创建一个名称空间,然后根据自己的项目名称创建对应的仓库即可,也可以把外网的一些镜像打个标签,推送到自己的镜像仓库,这样从自己的镜像仓库拉取,速度会快很多

 

在镜像版本里查看自己推送的镜像,这些都是gitlab-ci 构建成功,推送过来的
 

7.注册runner

我这里是创建的团队runner,这样团队项目可以共享该runner,注册好后编辑runner,勾选运行未标记的作业,怎么注册gitlab-runner网上有很详细的教程,这里就不多赘述了

 

gitlab-runner job如下,可以看到.net core 构建还是挺快的

  • 做到这里ci部分就完成了,当我们提交代码的时候,会自动触发gitlab-ci,然后docker构建,并推送到镜像仓库,接下来是cd 部分

8.开启gitlab webhooks功能,将事件消息推送给指定的服务

这里写一个服务,用来接收gitlb webhooks 通过post发送的http请求,下面有它的发送记录,方便我们查找问题,我们根据请求详情,通过vs辅助功能把json一键转换成实体,作为vo,并把数据持久化到数据库,它的状态变化为 created->pending->running->success,可以根据自己的业务进行定制

 

 

9.发布到k8s

发布到k8s有两种途径,1.通过k8s代理,直接调用k8s api, 2.通过shell直接执行k8s命令, 这个根据自己的业务来定制,我这里采用了shell的方式,因为简单方便

k8s api如下

 

10. 设置部署环境

我们可以根据项目分支或者tag来对应不同的环境,如develop,test,pre,prod..... 比如pre环境只能发布master分支的构建记录

11. 通过网页显示容器日志

通过k8s api 或者shell 都可以查询日志, linux服务端日志一般采用ANSI编码,部分内容展示会出现乱码,这里我们用ansi_up.js这个库,可以解决该问题

 

 

 

 

 

 

 

 

devOps系列(八)efk+prometheus+grafana日志监控和告警 es数据源-》grafana (监控数据表 触发告警条件 发送告警) -》 alertmanager (配置路由到指定webhook) -》 prometheus-alert (根据不同模板组装数据)-》企业微信。 阅读详情

相关推荐

加权余量法求解偏微分方程

加权余量法(Weighted Residual Method)是一种数值方法,用于求解偏微分方程(PDEs)。其基本思想是将偏微分方程的残差(或余量)通过加权函数加权,并使加权余量在定义域上为零,从而形成一组代数方程进行求解。

leizhengshenglzs的博客 1791

【从零开始学极狐gitlab】02基本功能 #JIHULAB101

极狐gitlab的基本功能

seven_xu_的博客 1529

Akamai-3.0补环境逆向-DHL快递查询

那么我们的请求过程就是:1.请求首页的html文件,通过re或xpath,提取到这个url,拼接官网地址,得到这个js文件的地址。返回的_abck为0,表示环境正确,请求搜索接口返回200,说明返回的_abck正确,如果过程错误或环境补的有问题会返回403或428这两个状态码。那么,就是这个包返回的,而且这个包需要请求两次,第一次get请求,返回的这个-1的cookie,第二次请求,带上一个sensor_data的参数,进行post请求,最终返回这个0的cookie,代表你过了akamai这个盾。

2302_76420666的博客 2856

gitlab中组的分类及权限介绍

gitlab中组的分类及权限介绍

weixin_53150440的博客 2万+

【已解决,极简单!!】求助,R语言读取csv文件各种报错

【已解决】本来之前没问题,今天更新了Rstudioh以及R,就各种报错了。也看了目前能读取到的文件,从第一个中文字符直接就没有了。也就是说 还是读取中文字符的问题?新人初学,求大佬轻喷!

youyouluming945的博客 3876

基于CNN的三相故障识别算法及实现(Matlab)

通过预处理数据、构建CNN模型、训练与评估模型等步骤,我们可以准确快速地识别三相故障。现代电力系统中,三相故障是一种常见的故障情况,可以导致电网中断、设备损坏甚至火灾等严重后果。本文将介绍基于卷积神经网络(CNN)的三相故障识别算法,并提供Matlab源代码实现。首先,将原始信号分为训练集和测试集。然后,对输入信号进行归一化处理,确保数据在合适的范围内。CNN适用于处理二维数据,所以我们可以将输入信号看作是时间序列数据和特征(如电压、电流等)的二维矩阵。在开始之前,我们需要一个包含正常和故障样本的数据集。

学习使你进步。 383

【30天完成毕业设计】服务器篇----2-4.1. GitLab 群组的使用

介绍: 群组是多个项目的集合 只有群组的成员才有权查看项目 群组项目的 URL 都会带上群组的命名空间 现有项目可以转移到群组 (推荐先建群组,否则需要修改项目--到群组中,原项目URL会变更,影响老用户使用) 适用场景: 一个团队管理:可以建一个群组,团队开发人员加入群组中 多个团队管理:建多个群组 操作: 1. 开发人员在GitLab登录页面注册 2. 通知管理者将开发人员加入群组 群组访问:设置开发人员 3. 开发人员--- 刷新项目列表 本节完 下一章.

ladymorgana的博客 988

基于Termux的Android平台OpenClaw部署:移动端AI助理实现

本文介绍了在Android设备上通过Termux部署OpenClaw AI助理的方案。Android设备的便携性、Termux提供的完整Linux环境以及多样化的硬件配置使其成为理想的部署平台。文章详细分析了不同级别Android设备的硬件规格(从入门级到旗舰级),并提供了最低/推荐配置要求。部署步骤包括Termux安装初始化、Python环境配置以及性能优化建议。该方案充分利用Android设备的传感器和电池供电优势,为移动办公、学习等场景提供了低成本、高便携性的AI助理解决方案。

博客 3010

GitLab 9提供了子群组、部署面板和集成监控

GitLab发布了其软件开发协作平台的第九个版本(GitLab 9.0)。在所有的新特性中,最值得关注的是子群组(Subgroups)和集成性能监控。\\子群组在社区版和企业版中均可用,用于展示在很多企业中都可以看到的复杂层次结构。例如,对于一个给定的项目,你可以对后端团队、前端团队和设计团队各设立一个子群组,每个子群组可具有自身的代码库甚至是子群组。GitLab支持多达20层子群组嵌套。群组成员...

cpongo5 503

DiffusionDriveV2 (1) : 端到端自动驾驶中受强化学习约束的截断扩散建模

DiffusionDriveV2:强化学习约束的截断扩散模型在端到端自动驾驶中的应用 本文针对端到端自动驾驶中扩散模型面临的模式崩溃问题,提出DiffusionDriveV2框架。该方法通过引入强化学习约束,解决了DiffusionDrive依赖模仿学习导致的多样性与持续高质量之间的困境。主要创新包括: 采用尺度自适应乘法噪声促进广泛探索 提出锚点内GRPO管理单个锚点样本间的优势估计 设计锚点间截断GRPO整合全局视角,避免不同驾驶意图间的不当比较 实验表明,该方法在NAVSIM基准测试中达到最先进水平(

@bangbang的博客 381

第十二段:基于env的重用

现代芯片的验证通常分为两个层次, 一是模块级别( block level, 也称为IP级别、 unit级别) 验证, 二是芯片级别( 也称为SOC级别) 验证。 一个大的芯片在开发时, 是分成多个小的模块来开发的。 每个模块开发一套独立的验证环境, 通常每个模块有 一个专门的验证人员负责。 当在模块级别验证完成后, 需要做整个系统的验证。 假设某个系统分成了三个模块,如下图: 这三个模块在模块级别验证时, 分别有自己的driver和s...

年糕的博客 421

DevOps应用方案

以jekins为核心,实现自动化部署。开发人员推送代码到GitLab,触发事件推送到Jekins,Jekins拉取代码构建/检测,生成镜像放到镜像仓库,kubernetes拉取最新镜像执行部署。总之现有的发布机制,所带来的的沉没成本不容忽视,甚至需要专门设置岗位来执行发布,耗费人力物力且收效甚微。当达到流量阈值,会触发自动扩容机制,而当流量很少,会自动关掉多余服务,整个步骤对用户几乎无感。线上服务突然宕机,会自动记录宕机前日志,并重新启动服务。容器部署成功后,原服务才会停掉,对线上用户几乎无感。

没有简介 377

土壤数据库辅助工具SPAW计算土壤导水率

首先点击打开根据之前的1比100土壤数据查表得到各个组分含量其中Field Capacity是田间持水量Matric Bulk Density是基质粒密度。

所有专家都曾始于新手 3443

DevOps是什么?只看这篇文章就够了!

作者:沈洲作为一个热门的概念,DevOps这个名词在程序员社区里频频出现,备受技术大佬们的追捧。甚至网络上有了“南无DevOps”的戏言(南无在梵语的意思是“皈依”),也侧面反映了DevOps的风靡。然而,一旦有人问起什么是DevOps,大部分人就会扯起类似“之乎者也”等玄之又玄的东西,一部分人说它是工具,一部分人说它是平台,一部分人说它是方法,一部分人甚至说它是哲学。所以今天,我就想和小伙伴们好好聊聊这个DevOps。本文会分为:DevOps是什么?;DevOps发展历程;

hwxiaozhi的博客 4193

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

DevOps系列文章之 DevOps 运维服务体系

DevOps 体系是从原始运维一步步走过来的,原始运维好比是本,有了本进而想继续提升效率、减少出错、优化流程,就发展到了 DevOps,AIOps……各种Ops首先,运维的业务职能规范后形成章程、纲领,在互联网快速发展的特点下,形成了一套应对”快”和”变”的体系,并不停的迭代升级,工作这些年,体会到千象背后是有恒道的,运维工作一直围绕高 SLA 和低成本的业务目标运转着,只是工具在围绕着体系变来变去。从开发的角度理解,运维体系就像是算法,实现算法的语言就像是工具,DevOps 就是工具的升级。

Coder_Boy_的博客 1194

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

【DevOps系列】DevOps简介及基础环境安装

本系列文章将深入探讨DevOps的各个方面,从基础概念到实际工具的使用,为读者提供全面的指导和实用的建议。我们将详细介绍各种工具如Git、GitLab、Docker、Jenkins、Maven等的安装和配置过程,帮助读者快速掌握并应用这些关键技术,从而建立高效的软件开发和交付流程。

c18213590220的博客 3826

假人有限元模型

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

一篇文章带你搞懂什么是DevOps?

简化的含义为:高效组织团队之间如何通过自动化的工具协作和沟通来完成软件的生命周期管理,从而更快、更频繁地交付更稳定的软件。以图例说明: 在传统的团队组织方式中,开发人员与运维人员之间是割裂开的,软件开发流程被分割为多个独立环节,分别由不同的人员执行。这使得软件开发过程中需要付出高昂的沟通成本,层层手动的流程将大量的时间耗费在了重复的劳动中。在 DevOps 的指导下,不同技能的人员处在同个团队中,为了一个共同的软件开发目标而工作,更好的协同工作与自动化的手段能够优化整个 Code -> Build ->

Admans的专栏 7307

DevOps是什么?DevOps能够给我们带来什么?

Spring Cloud微服务实战系列,打造精品专栏。

学Java,找哪吒 1万+

什么是 DevOps?看这一篇就够了!

“什么是 DevOps?” 这个问题看似特别基础,基础到很多人懒得回答。但其实冷静一秒,问自己一句“什么是 DevOps?”可能每个 DevOps 工程师都知道“什么是 DevOps”,但是他们给出的答案不尽相同。...............

farmer_hutao的博客 1万+

程序员欣宸文章汇总(DevOps篇)

本文保存了作者所有DevOps相关文章的地址,并做了轻量级分类,希望您能从中找到有参考价值的内容,那将是我的荣幸

程序员欣宸的博客 1万+

云原生时代的DevOps平台设计之道

【优快云 编者按】云原生时代,开发和运维的分工愈加分明,运维人员通过建设并维护一套 IaaS 云平台,将计算资源进行池化。开发人员按需申请自己需要的虚拟机,从而得到一个操作系统界面来进行交互。在作者看来,从开发人员与运维人员的关系上来看,IT 领域的演变,就是运维人员通过不断向上接手开发人员眼中“跟开发无关的杂活”,来不断为开发人员减负。开发人员在得到了解放后,可以将视角更多的聚焦在自己开发的业...

优快云资讯 6866

大厂都用DevOps,从多角度了解DevOps

目前很多大厂如阿里、腾讯、百度、头条、滴滴、美团等公司内部都在做DevOps,那么 DevOps是什么 ? ...

dabaoshiwode的博客 3646

DevOps 介绍

DevOps是一种思想、一组最佳实践、以及一种文化,是开发(Development)、测试(QA)、运维(Operations)这三个领域的合并。

IoTHub - 物联网开源技术社区 2447

DevOps

提到DevOps这个词,我相信很多人一定不会陌生。 作为一个热门的概念,DevOps近年来频频出现在各大技术社区和媒体的文章中,备受行业大咖的追捧,也吸引了很多吃瓜群众的围观。 那么,DevOps是什么呢? 有人说它是一种方法,也有人说它是一种工具,还有人说它是一种思想。更有甚者,说它是一种哲学。 越说越玄乎,感觉都要封神啦!DevOps这玩意真的有那么夸张吗?它到底是干嘛用的?为什么行业里都会对它趋之如骛呢? 今天这篇文章,就和大家好好聊一聊这个DevOps。 DevOps的起源 上个世

猎户星座 3584

DevOps系列文章之 GitLab CI/CD

gitlab-ci.yml 文件被用来管理项目的 runner 任务,Gitlab CI通过.gitlab-ci.yml文件管理配置job,该文件定义了statge顺序、job应该如何触发和工作、执行什么脚本、如何构建pipeline等流程该文件存放于仓库的根目录, 默认名为我们先看一个简单的例子:.gitlab-ci.yml## 定义pipeline流程:verify->build->dockerpush->deploystages:- verify- build- deploy#单元测试。

Coder_Boy_的博客 1638
上一篇: DevOps系列文章之 DevOps 运维服务体系
下一篇: 微服务系列文章之 seata 事务模式
Coder_Boy_
博客等级 码龄10年 2804粉丝 819原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Coder_Boy_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值