草庐IT

【云原生】4.2 DevOps 精讲篇

Coder.追 2023-07-07 原文

 哈喽~ 大家好呀,这篇就来详细介绍 DevOps 以及需要安装什么软件。

 🥇个人主页:个人主页​​​​​             

🥈 系列专栏:【云原生系列】

🥉与这篇相关的文章:            

【云原生】3.5 RuoYi-Cloud部署实战(下)【云原生】3.5 RuoYi-Cloud部署实战(下)_程序猿追的博客-CSDN博客
 云原生讲解【扩展篇】云原生讲解【扩展篇】_程序猿追的博客-CSDN博客
【云原生】4.1 DevOps基础【云原生】4.1 DevOps基础与实战_程序猿追的博客-CSDN博客

目录

一、DevOps 诞生

二、DevOps 介绍

三、DevOps管理软件生命周期

四、GitLab 与 Maven 安装

1、GitLab 安装

2、Maven 安装

五、Jenkins介绍、安装及配置

1、Jenkins 介绍

2、Jenkins 安装

3、Jenkins 配置


一、DevOps 诞生

软件开发最开始是由两个团队组成:

开发团队从头开始设计和整体系统的构建。需要系统不停的迭代更新。运维团队将开发团队的Code进行测试后部署上线。希望系统稳定安全运行。

这看似两个目标不同的团队需要协同完成一个软件的开发。那么这里就出现了一个问题,假设我在开发一款软件,开发完之后,交给了运维团队,运维团队向开发团队反馈需要修复的BUG以及一些需要返工的任务。这是开发团队在一直等候,开发人员啥也做不了,这无疑推迟了整个软件开发的周期。为了解决这类问题,诞生出了 DevOps ,专门解决开发团队与运维团队之间的沟通问题与交互问题。

二、DevOps 介绍

DevOps,字面意思是 Development & Operations 的缩写,翻译过来就是开发 & 运维(前面有一篇云原生扩展篇对此有些介绍)。

虽然字面意思只涉及到了开发团队和运维团队,其实QA测试(扩:QA 主要有两方面的工作:1.做过程中的改进 2.做质量的保证工作。)团队也是参与其中的。
百度一下可以查看到 DevOps 的符号类似于一个无穷大的符号

 

三、DevOps管理软件生命周期

整体的软件开发流程包括:

PLAN:开发团队根据客户的需求与目标制定开发计划与开发周期(收到需求,制定计划)

CODE:根据 PLAN 开始编码过程(一般工具用 git 或SVN)。

BUILD:编码完成后,需要将代码构建并且运行(通过 Maven 或 gradle 将他构建成一个可运行的软件)。

TEST:成功构建项目后,需要测试代码是否存在 BUG 或错误(手动测试与自动化测试)。

DEPLOY:代码经过测试后,认定代码已经准备好部署并且交给运维团队(测试无误后 TEST 发到 DEPLOY 上)。

OPERATE:运维团队将代码部署到生产环境中(通过 docker 与 k8s 进行部署)。

MONITOR:项目部署上线后,需要持续的监控产品(部署完成之后通过监控类的软件进行监控)。

INTEGRATE:然后将监控阶段收到的反馈发送回PLAN阶段,整体反复的流程就是DevOps的核 心,即持续集成、持续部署。

这就是软件开发的一套生命周期,但如果我们还要在执行一遍,我们可以根据 Jenkins 让他继续执行下去,代码啥时候测试?代码啥时候发布到运维?在吗进行部署到 k8s 与docker ?都是我们的 Jenkins来做。

最终我们得出一个结论——DevOps 强调的是高效组织团队之间如何通过自动化的工具协作和沟通 来完成软件的生命周期管理,从而更快、更频繁地交付更稳定的软件。

上图就是我们最简单的一个通过 Jenkins 来管理,那么下面我们就要基于这张图来实现功能了。

四、GitLab 与 Maven 安装

1、GitLab 安装

像我们的开发人员使用的是 Git ,这里安装 Git 就不一一列出了,可以自行百度上网安装,我们这里使用 Docker 安装 GitLab。

输入命令

查看 GitLab 镜像

docker search gitlab

获取 GitLab 镜像 

docker pull gitlab/ gitlab-ce: latest

 创建 docker-compose.yml 文件

version: '3.1'
services:
gitlab:
image: 'gitlab/gitlab-ce:latest'
container_name: gitlab
restart: always
environment:
GITLAB_OMNIBUS_CONFIG: |
external_url 'http://192.168.11.11:8929'
gitlab_rails['gitlab_shell_ssh_port'] = 2224
ports:
- '8929:8929'
- '2224:2224'
volumes:
- './config:/etc/gitlab'
- './logs:/var/log/gitlab'
- './data:/var/opt/gitlab'

 启动容器

docker-compose up -d

安装的时间有点长,请耐心等待,后面再浏览器输入你设置的地址与端口号,就能进入了。

使用默认的用户(root)以及查看密码

docker exec -it gitlab cat /etc/gitlab/initial_root_password

然后记得修改密码,密码至少长度为 8 位。

2、Maven 安装

如何安装 JDK 自行百度搜索安装

 安装 Maven 包在官网里面下载需要的版本,下完之后输入指令

tar -zxvf jdk-8u231-Linux-x64.tar.gz -C/usr/local

tar -zxvf apache-maven-3.6.3-bin.tar.gz -C/usr/local

注:中间的 jdk 只是版本号,输入时记得要改。设置 Maven 的私服(阿里云或腾讯云都可以),追加 JDK 的插件(可以行百度)

接下来我们需要安装 Docker,这里可以看看之前写的文章,我是文章

五、Jenkins介绍、安装及配置

1、Jenkins 介绍

Jenkins 是一个开源软件项目,是基于Java开发的一种持续集成工具。 Jenkins 应用广泛,大多数互联网公司都采用 Jenkins 配合 GitLab、Docker、K8s 作为实现 DevOps 的核心工具。 Jenkins最强大的就在于插件,Jenkins官方提供了大量的插件库,来自动化 CI/CD 过程中的各种琐碎功 能。

Jenkins 就像一个人,安装完插件后就像穿好了装备一样

 这是官方给的图(官方玩梗,最为致命)

2、Jenkins 安装

获取 Jenkins 镜像

docker pull jenkins/jenkins

编写 docker-compose.yml

version: "3.1"
services:
jenkins:
image: jenkins/jenkins
container_name: jenkins
ports:
- 8080:8080
- 50000:50000
volumes:
- ./data/:/var/jenkins_home/

注:首次启动会因为数据卷 data 目录没有权限导致启动失败,设置 data 目录写权限即可。

我们就可以进行下载了,但下载时间可能有点长,可以配置一下国内的下载镜像地址 

# 修改数据卷中的hudson.model.UpdateCenter.xml文件
<?xml version='1.1' encoding='UTF-8'?>
<sites>
<site>
<id>default</id>
<url>https://updates.jenkins.io/update-center.json</url>
</site>
</sites>
# 将下载地址替换为http://mirror.esuni.jp/jenkins/updates/update-center.json
<?xml version='1.1' encoding='UTF-8'?>
<sites>
<site>
<id>default</id>
<url>http://mirror.esuni.jp/jenkins/updates/update-center.json</url>
</site>
</sites>
# 清华大学的插件源也可以
https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json

在网址输入地址、账号与密码,就可以访问了。

后面下载插件可能会失败(很正常)我们可以进入 Jenkins 内部进行下载,后面创建用户

 直接下一步,就可以进入了

 在 Dashboard ——> Plugin Manager 里面下载我们安装失败的插件,就可以了

 3、Jenkins 配置

由于 Jenkins 需要从 Git 拉取代码、需要本地构建、甚至需要直接发布自定义镜像到 Docker 仓库,所以 Jenkins 需要配置大量内容。

输入命令

mv/usr/local/jdk/ ./

mv/usr/local/maven/ ./

 

然后在 Dashboard ——> Global Tool Configuration 里面 add 一个 JDK 的地址

 同样的 Maven 也是一样的。连接的方式有很多,可以采用用户名和密码(如何配置自行度娘)

不积跬步无以至千里,趁年轻,使劲拼,给未来的自己一个交代!向着明天更好的自己前进吧!

有关【云原生】4.2 DevOps 精讲篇的更多相关文章

  1. ruby - 为什么 4.1%2 使用 Ruby 返回 0.0999999999999996?但是 4.2%2==0.2 - 2

    为什么4.1%2返回0.0999999999999996?但是4.2%2==0.2。 最佳答案 参见此处:WhatEveryProgrammerShouldKnowAboutFloating-PointArithmetic实数是无限的。计算机使用的位数有限(今天是32位、64位)。因此计算机进行的浮点运算不能代表所有的实数。0.1是这些数字之一。请注意,这不是与Ruby相关的问题,而是与所有编程语言相关的问题,因为它来自计算机表示实数的方式。 关于ruby-为什么4.1%2使用Ruby返

  2. 【云原生】SpringCloud-Spring Boot Starter使用测试 - 2

    目录SpringBootStarter是什么?以前传统的做法使用SpringBootStarter之后starter的理念:starter的实现: 创建SpringBootStarter步骤在idea新建一个starter项目、直接执行下一步即可生成项目。 在xml中加入如下配置文件:创建proterties类来保存配置信息创建业务类:创建AutoConfiguration测试如下:SpringBootStarter是什么? SpringBootStarter是在SpringBoot组件中被提出来的一种概念、简化了很多烦琐的配置、通过引入各种SpringBootStarter包可以快速搭建出一

  3. ruby-on-rails - Rails 4.1 和 4.2 之间 ActiveRecord Setter 的区别? - 2

    我们将我们的应用程序从Rails4.1.14升级到4.2.5.1并遇到了以下问题:string="SomeString"ar_model=SomeArModel.newar_model.some_attribute=string#nextlineistruefor4.1,butfailsfor4.2ar_model.some_attribute.object_id==string.object_id显然,对象setter会复制每个对象(如果我有一个数组,里面的每个对象也会被复制),我想知道,这是不是有意为之并且是某些新安全功能的一部分?更新我将ruby​​-2.2.2p95用于两个ra

  4. ruby-on-rails - Ruby On Rails 4.2 的可视化日志查看器 - 2

    我以前在Laravel4上工作过,它有一个很棒的日志查看器工具laravellogviewer查看demo我正在寻找与Rubyonrails4.2非常相似的东西,如果你们知道Rails4.2的任何好的可视化日志记录GEM,请告诉我..从代码我需要记录不同的日志级别,这个工具应该直观地组织我的日志,谢谢.. 最佳答案 这应该可以帮助您入门https://github.com/shadabahmed/logstasher如其所说Thisgemisheavilyinspiredfromlograge,butit'sfocusedonone

  5. ruby-on-rails - Rails 4.2 Action Controller :BadRequest custom error message - 2

    如果验证失败或参数丢失,我想从我的Controller返回400-错误请求。所以在我的Controller中如果有ifparams["patch"].nil?thenraiseActionController::BadRequest.new("TheJsonbodyneedstobewrappedinsidea\"Patch\"key")end我在我的应用程序Controller中发现了这个错误:rescue_fromActionController::BadRequest,with::bad_requestdefbad_request(exception)renderstatus:4

  6. IDC最新MarketScape报告:DevOps市场需求广泛 - 2

    日前,全球著名咨询机构IDC最新MarketScape报告《中国DevOps平台市场厂商评估,2022》正式发布,此报告中对中国主流DevOps云厂商分别从现有能力和未来战略维度两个层面对厂商进行评估,IDC对具有代表性的8家提供商进行了深度研究,他们分别是(按照拼音字母顺序):AWS、阿里云、百度、博云、华为云、京东云、微软、腾讯云(CODING)。华为云、阿里云和腾讯云CODING均在战略和能力两大维度表现强势,成功入席领导者(Leaders)位置。IDC MarketScape:中国DevOps平台市场厂商评估,2022华为云软件开发生产线DevCloud在市场份额和发展战略两大维度均排

  7. ruby - 如何让 Ruby 找到原生库? - 2

    我在/usr/local/lib中安装了一些本地库。我现在正在尝试安装一个需要这些的gem,以便正确构建,但是gem构建失败,因为它找不到图书馆。gem的extconf.rb文件试图确认它可以找到库have_library()但由于某种原因失败了。我尝试设置一堆环境变量,但似乎没有任何效果:irb(main):003:0>require'mkmf'=>trueirb(main):004:0>have_library('gecodesearch')checkingformain()in-lgecodesearch...no=>falseirb(main):005:0>ENV['LD_LI

  8. ruby - 开始使用 MacRuby 和 Xcode 4.2 - 2

    我最近想开始使用MacRuby。我已经安装了Xcode4.2和MacRuby,但显然我遗漏了一些东西。到目前为止,在我发现的每个教程中都说,我必须从Xcode模板中选择“MacRuby应用程序”……但是没有这样的条目可用。我试过0.10和几天前发布的每晚版本。我查看了MacRuby的安装位置,我找到了Xcode3.0的模板……我必须使用这些模板吗?如何将它们导入Xcode4.2?在开始之前,我还想知道,从MacRuby开始是否安全?乍一看,我认为"is",因为有新的MacRuby书籍可用——但MacRuby网站上似乎没有太多事件(去年3月的最后一篇博客文章?)……根据我的经验,这可能是

  9. ruby-on-rails - 在 Rails 4.2 中有许多 'finder_sql' 替换 - 2

    我有一个关联需要一些连接/自定义查询。当试图弄清楚如何实现它时,重复的响应是finder_sql。但是在Rails4.2(及更高版本)中:ArgumentError:Unknownkey::finder_sql我执行连接的查询如下所示:'SELECTDISTINCT"tags".*'\'FROM"tags"'\'JOIN"articles_tags"ON"articles_tags"."tag_id"="tags"."id"'\'JOIN"articles"ON"article_tags"."article_id"="articles"."id"'\'WHEREarticles"."u

  10. ruby-on-rails - 为什么 Rails 4.2 + 响应者不断告诉我将响应者添加到 Gemfile? - 2

    我正在将Rails4.1.8应用程序(也使用rails-api~>0.3.1)升级到4.2.0.rc2,并希望保留respond_with功能。我已将responders添加到Gemfile,但是当我bin/rakespec时,我得到:/Users/sloveless/.gem/ruby/2.1.0/gems/actionpack-4.2.0.rc2/lib/action_controller/metal/mime_responds.rb:10:in`respond_to':Thecontroller-level`respond_to'featurehasbeenextractedto

随机推荐