哈喽~ 大家好呀,这篇就来详细介绍 DevOps 以及需要安装什么软件。
🥇个人主页:个人主页
🥈 系列专栏:【云原生系列】
🥉与这篇相关的文章:
【云原生】3.5 RuoYi-Cloud部署实战(下) 【云原生】3.5 RuoYi-Cloud部署实战(下)_程序猿追的博客-CSDN博客 云原生讲解【扩展篇】 云原生讲解【扩展篇】_程序猿追的博客-CSDN博客 【云原生】4.1 DevOps基础 【云原生】4.1 DevOps基础与实战_程序猿追的博客-CSDN博客
目录
软件开发最开始是由两个团队组成:
开发团队从头开始设计和整体系统的构建。需要系统不停的迭代更新。运维团队将开发团队的Code进行测试后部署上线。希望系统稳定安全运行。
这看似两个目标不同的团队需要协同完成一个软件的开发。那么这里就出现了一个问题,假设我在开发一款软件,开发完之后,交给了运维团队,运维团队向开发团队反馈需要修复的BUG以及一些需要返工的任务。这是开发团队在一直等候,开发人员啥也做不了,这无疑推迟了整个软件开发的周期。为了解决这类问题,诞生出了 DevOps ,专门解决开发团队与运维团队之间的沟通问题与交互问题。
DevOps,字面意思是 Development & Operations 的缩写,翻译过来就是开发 & 运维(前面有一篇云原生扩展篇对此有些介绍)。
虽然字面意思只涉及到了开发团队和运维团队,其实QA测试(扩:QA 主要有两方面的工作:1.做过程中的改进 2.做质量的保证工作。)团队也是参与其中的。
百度一下可以查看到 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 来管理,那么下面我们就要基于这张图来实现功能了。
像我们的开发人员使用的是 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 位。
如何安装 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 是一个开源软件项目,是基于Java开发的一种持续集成工具。 Jenkins 应用广泛,大多数互联网公司都采用 Jenkins 配合 GitLab、Docker、K8s 作为实现 DevOps 的核心工具。 Jenkins最强大的就在于插件,Jenkins官方提供了大量的插件库,来自动化 CI/CD 过程中的各种琐碎功 能。
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 里面下载我们安装失败的插件,就可以了
由于 Jenkins 需要从 Git 拉取代码、需要本地构建、甚至需要直接发布自定义镜像到 Docker 仓库,所以 Jenkins 需要配置大量内容。
输入命令
mv/usr/local/jdk/ ./
mv/usr/local/maven/ ./

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

同样的 Maven 也是一样的。连接的方式有很多,可以采用用户名和密码(如何配置自行度娘)
不积跬步无以至千里,趁年轻,使劲拼,给未来的自己一个交代!向着明天更好的自己前进吧!
为什么4.1%2返回0.0999999999999996?但是4.2%2==0.2。 最佳答案 参见此处:WhatEveryProgrammerShouldKnowAboutFloating-PointArithmetic实数是无限的。计算机使用的位数有限(今天是32位、64位)。因此计算机进行的浮点运算不能代表所有的实数。0.1是这些数字之一。请注意,这不是与Ruby相关的问题,而是与所有编程语言相关的问题,因为它来自计算机表示实数的方式。 关于ruby-为什么4.1%2使用Ruby返
目录SpringBootStarter是什么?以前传统的做法使用SpringBootStarter之后starter的理念:starter的实现: 创建SpringBootStarter步骤在idea新建一个starter项目、直接执行下一步即可生成项目。 在xml中加入如下配置文件:创建proterties类来保存配置信息创建业务类:创建AutoConfiguration测试如下:SpringBootStarter是什么? SpringBootStarter是在SpringBoot组件中被提出来的一种概念、简化了很多烦琐的配置、通过引入各种SpringBootStarter包可以快速搭建出一
我们将我们的应用程序从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
我以前在Laravel4上工作过,它有一个很棒的日志查看器工具laravellogviewer查看demo我正在寻找与Rubyonrails4.2非常相似的东西,如果你们知道Rails4.2的任何好的可视化日志记录GEM,请告诉我..从代码我需要记录不同的日志级别,这个工具应该直观地组织我的日志,谢谢.. 最佳答案 这应该可以帮助您入门https://github.com/shadabahmed/logstasher如其所说Thisgemisheavilyinspiredfromlograge,butit'sfocusedonone
如果验证失败或参数丢失,我想从我的Controller返回400-错误请求。所以在我的Controller中如果有ifparams["patch"].nil?thenraiseActionController::BadRequest.new("TheJsonbodyneedstobewrappedinsidea\"Patch\"key")end我在我的应用程序Controller中发现了这个错误:rescue_fromActionController::BadRequest,with::bad_requestdefbad_request(exception)renderstatus:4
日前,全球著名咨询机构IDC最新MarketScape报告《中国DevOps平台市场厂商评估,2022》正式发布,此报告中对中国主流DevOps云厂商分别从现有能力和未来战略维度两个层面对厂商进行评估,IDC对具有代表性的8家提供商进行了深度研究,他们分别是(按照拼音字母顺序):AWS、阿里云、百度、博云、华为云、京东云、微软、腾讯云(CODING)。华为云、阿里云和腾讯云CODING均在战略和能力两大维度表现强势,成功入席领导者(Leaders)位置。IDC MarketScape:中国DevOps平台市场厂商评估,2022华为云软件开发生产线DevCloud在市场份额和发展战略两大维度均排
我在/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
我最近想开始使用MacRuby。我已经安装了Xcode4.2和MacRuby,但显然我遗漏了一些东西。到目前为止,在我发现的每个教程中都说,我必须从Xcode模板中选择“MacRuby应用程序”……但是没有这样的条目可用。我试过0.10和几天前发布的每晚版本。我查看了MacRuby的安装位置,我找到了Xcode3.0的模板……我必须使用这些模板吗?如何将它们导入Xcode4.2?在开始之前,我还想知道,从MacRuby开始是否安全?乍一看,我认为"is",因为有新的MacRuby书籍可用——但MacRuby网站上似乎没有太多事件(去年3月的最后一篇博客文章?)……根据我的经验,这可能是
我有一个关联需要一些连接/自定义查询。当试图弄清楚如何实现它时,重复的响应是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
我正在将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