简介
这篇文章主要分享关于DEVOPS 工具链的相关知识。
关于DevOps及其相应工具的注意事项:
· 目标是持续改进
· 你不能买DevOps
· 工具采用分阶段进行
为什么计划对DevOps很重要?
· 共同的目的
· 透明度
· 赋权
规划工具的例子
GitLab
GitLab是一个基于web的DevOps生命周期工具。它提供了一个Git-repository manager,它使用GitLab公司开发的开源许可证,提供了wiki、问题跟踪和CI/CD Pipline特性。
GitLab有一些工具来实际规划事情并能够查看工作范围。
Tasktop
Tasktop允许将所有这些工具添加到Tasktop支持的敏捷和应用程序生命周期管理(ALM)、PPM和ITSM工具的整个范围中,从而在整个生命周期中实现前所未有的可见性。
CollabNet VersionOne
VersionOne支持Scrum、看板、XP、安全以及混合开发方法,使得跨所有团队、程序、软件组合和企业的计划、跟踪和报告变得更加容易。
Pivotal Tracker
敏捷项目管理工具是世界各地开发人员的首选,用于围绕共享的、按优先级排序的backlog进行实时协作。
Trello
Trello是一个基于web的看板样式的列表制作应用程序,它是Atlassian的一个子公司。
许多团队在规划单个sprint的工作时都会用到它。
Azure Boards
跟踪您的软件项目,并使用敏捷工具更好地进行计划,包括针对任何敏捷方法的scrum board、看板板和仪表板。
同样,这些方法可以使工作形象化,分享计划,跟踪进展,确保你朝着目标前进。
还有Omni系列软件,这些都是做plan和schedule的工具。是DEVOPS的前奏,规划项目周期。
为什么这对DevOps很重要?
· 客户响应能力
· 有限的知识浪费
· 反馈回路
问题跟踪工具的示例
Atlassian Jira
Jira是Atlassian开发的一个专有问题跟踪产品,它允许bug跟踪和敏捷项目管理。
JetBrains YouTrack
YouTrack是JetBrains公司开发的一个私有的、商业的基于浏览器的bug跟踪系统、问题跟踪系统和项目管理软件。它侧重于基于查询的问题搜索——通过自动完成、批量处理问题、自定义问题属性集和创建自定义工作流。
Zendesk
Zendesk使跟踪来自您所有渠道的每个客户问题变得非常简单。包括优步(Uber)和Airbnb在内的许多公司都将Zendesk的支持作为它们的问题跟踪软件
关于bug track , 我们可能用jire最多了。
为什么这对DevOps很重要?
· 资产控制
· 限制运输浪费
· 团队权限访问(安全)
配置管理工具的例子
Git
Git是一个分布式版本控制系统,用于跟踪软件开发过程中源代码的变化。它是为协调程序员之间的工作而设计的,但它可以用于跟踪任何一组文件中的更改。它的目标包括速度、数据完整性和对分布式、非线性工作流的支持。
GitHub
GitHub提供了Git的分布式版本控制和源代码管理功能,以及它自己的特性。
GitLab
GitLab中的版本控制帮助您的开发团队通过世界级的源代码管理来共享、协作并最大化他们的生产力。
Bitbucket
Bitbucket是Atlassian拥有的一个基于web的版本控制库托管服务,用于使用Mercurial或Git修订控制系统的源代码和开发项目。
Subversion
Apache Subversion是一个软件版本控制和修订控制系统,在Apache许可下作为开放源码发布。软件开发人员使用Subversion来维护文件的当前和历史版本,如源代码、web页面和文档。
这块我们用gitlab最多了。当然,我们也会面向github编程。。。
构建工具
为什么它们对DevOps很重要?
· 打包工具
· 编译省心、省力
构建工具的示例
Maven / Gradle
Maven是主要用于Java项目的构建自动化工具。Maven还可以用来构建和管理用c#、Ruby、Scala和其他语言编写的项目。
Gradle是一个基于Apache Ant和Apache Maven概念的开源构建自动化系统,它引入了一种基于groovy的领域特定语言,而不是Apache Maven用来声明项目配置的XML表单。
MSBuild
微软构建引擎,更广为人知的名字是MSBuild,是一个免费的开源构建工具集,用于托管代码和原生c++代码,是。net框架的一部分。Visual Studio依赖于MSBuild(但反之亦然)。
Rake
Rake是一个软件任务管理和构建自动化工具。它允许用户指定任务并描述依赖关系。您还可以对名称空间中的组任务执行此操作。
JFrog Artifactory
JFrog Artifactory是一个工具,用于存储构建过程的二进制输出,用于分发和部署。Artifactory提供了对许多包格式的支持,如Maven、Debian、npm、Helm、Ruby、Python和Docker。
JFrog提供高可用性、复制、灾难恢复、可伸缩性,并与许多on-prem和云存储产品协同工作。
Sonatype Nexus
Sonatype Nexus是一个存储库管理器。它允许您代理、收集和管理您的依赖项,这样您就不必频繁地处理jar集合。它使您的软件易于发布。
在内部,您将构建配置为将工件发布到Nexus,然后其他开发人员可以使用它们。
NuGet
NuGet是.net的包管理器。NuGet客户端工具提供了生成和使用包的能力。
NuGet Gallery是所有包作者和使用者使用的中央包存储库。
Java 用户肯定是maven和gradle
为什么它们对DevOps很重要?
· 关注内在质量
· 建立对已部署工件的信心
测试工具的例子
JUnit
JUnit是一个用于Java编程语言的单元测试框架。JUnit在测试驱动开发的开发中非常重要,它是一系列单元测试框架之一,统称为xUnit,它起源于SUnit
xUnit.net
xUnit.net是一个开源的。net框架单元测试工具,由NUnit的原作者编写。
Selenium
Selenium是用于测试web应用程序的可移植框架。Selenium为编写功能测试提供了一个回放工具,不需要学习测试脚本语言。
Jasmine
Jasmine是一个JavaScript的开源测试框架。它的目标是在任何支持javascript的平台上运行,不侵入应用程序或IDE,并具有易于阅读的语法。它深受其他单元测试框架(如Screw)的影响。单元、JSSpec、JSpec和RSpec。
Cucumber
Cucumber是一个支持行为驱动开发的软件工具。Cucumber BDD方法的核心是其名为Gherkin的普通语言解析器。它允许用客户能够理解的逻辑语言来指定预期的软件行为。
Jmeter , sysbansh 等
CI工具
为什么它们对DevOps很重要?
· 快速的反馈
· 避免手动
CI工具的例子
Jenkins
Jenkins是一个免费的开源自动化服务器。Jenkins通过CI和促进CD的技术方面,帮助自动化软件开发过程中的非人工部分。它是一个基于服务器的系统,运行在servlet容器中,比如Apache Tomcat。
CircleCI
CircleCI是世界上最大的共享CI/CD平台,也是代码从思想到交付的中心枢纽。
作为最常用的DevOps工具之一,CircleCI每天处理100多万个构建,它对工程团队如何工作以及他们的代码如何运行的数据具有独特的访问权限。Spotify、Coinbase、Stitch Fix和BuzzFeed等公司利用CircleCI来提高工程团队的生产率,发布更好的产品,更快地进入市场。
Travis CI
Travis CI是一个宿主-CI服务,用于构建和测试托管在GitHub上的软件项目。Travis CI为私人项目提供各种付费计划和免费的开源计划。TravisPro在客户自己的硬件上提供专有版本的定制部署。
Concourse
Concourse是一个用Go编写的自动化系统。它最常用于CI/CD,并可扩展到任何类型的自动化管道,从简单到复杂。
AWS CodePipeline
AWS CodePipeline是一个完全托管的CD服务,可以帮助您自动化发布管道,实现快速、可靠的应用程序和基础设施更新。
CodePipeline根据您定义的发布模型,在每次发生代码更改时,自动执行发布流程的构建、测试和部署阶段。这使您能够快速、可靠地交付特性和更新。
您可以轻松地将AWS CodePipeline与第三方服务(如GitHub)或自定义插件集成在一起。使用AWS CodePipeline,您只需为所使用的内容付费。没有预付费用或长期承诺。
AzurePipeline
获取用于Linux、macOS和Windows的云托管管道。构建web、桌面和移动应用程序。部署到云或场所。
通过管道自动化您的构建和部署,这样您就可以少花点时间在具体细节上,多花点时间在创新上。
为什么它们对DevOps很重要?
· 复杂的管道自动化
· 团结团队为客户创造价值
CD工具的例子
Spinnaker
Spinnaker是一个免费的、开源的CD软件平台,最初由Netflix开发,并很快被谷歌获得和扩展。
Spinnaker是一个多云CD平台,用于以高速度和信心发布软件更改。它将强大而灵活的管道管理系统与主要云提供商的集成相结合。
Octopus Deploy
Octopus Deploy是一种自动化部署和发布管理工具,用于全球领先的CD团队。
Octopus是一个工具集,它可以极大地简化任何DevOps流程,以便通过云或虚拟机对大量微服务或应用程序进行持续测试和部署。
AWS CodeDeploy
AWS CodeDeploy是一种完全托管的部署服务,它将软件部署自动化到各种计算服务,如Amazon EC2、AWS Fargate、AWS Lambda和您的本地服务器。
您可以使用AWS CodeDeploy来自动化软件部署,从而消除了对容易出错的手动操作的需要。
为什么它们对DevOps很重要?
· 执行的一致性
· 将基础设施视为代码
配置管理工具的示例
Terraform
Terraform是一个由HashiCorp创建的开源基础设施即代码(IaC)软件工具。它使用户能够使用高级配置语言Hashicorp配置语言或JSON(可选)定义和提供数据中心基础设施。
BOSH
BOSH是一个统一了小型和大型云软件的发布工程、部署和生命周期管理的项目。BOSH可以在数百个vm上提供和部署软件。它还执行监视、故障恢复和软件更新,停机时间从0到最小。
虽然开发BOSH是为了部署Cloud Foundry,但它也可以用于部署几乎任何其他软件(例如Hadoop)。BOSH特别适合大型分布式系统。
此外,BOSH还支持多种基础设施即服务(IaaS)提供商,如VMware vSphere、谷歌云平台、Amazon Web Services EC2、Microsoft Azure、OpenStack、阿里巴巴云等。云提供商接口(CPI)允许用户扩展BOSH来支持额外的IaaS提供商,如Apache CloudStack和VirtualBox。
Chef
Chef是一个配置管理工具,用于处理物理服务器、虚拟机和云中的机器设置。许多公司使用Chef软件来控制和管理他们的基础设施,包括Facebook、Etsy、Cheezburger和Indiegogo。
Chef是连续自动化软件的领导者,应用自动化的革新者,也是DevOps运动的创始人之一。Chef与全球1000多家最具创新精神的公司合作,提供快速交付软件的实践和平台,以实现他们的数字转型愿景
Ansible
Ansible是一个开源软件配置、配置管理和应用程序部署工具。它运行在许多类unix系统上,可以配置类unix系统和Microsoft Windows。它包含自己的声明性语言来描述系统配置。
Puppet
Puppet提供了定义系统需要哪些软件和配置的能力,然后在初始设置之后维护指定的状态。
您可以使用与Ruby类似的声明性领域特定语言(DSL)来定义特定环境或基础设施的配置参数。Puppet通过使用一个名为Facter的实用程序来发现关于系统的信息,该实用程序是在安装Puppet软件包时安装的。
Puppet master是一个系统,它管理通过使用清单控制的所有节点的重要配置信息。
主控件的节点是那些安装了Puppet并运行Puppet代理的节点,它是一个守护进程。代理收集的关于节点的配置信息被发送给傀儡主机。然后,Puppet主机根据节点的配置方式编译目录。每个节点使用该信息将任何必要的配置更新应用于自身。
Puppet通过使用拉模式工作,在这种模式中,代理定期轮询主机以检索特定于站点和特定于节点的配置。在这个基础结构中,托管节点运行Puppet代理应用程序,通常作为后台服务。
Google Cloud Deployment Manager
Google Cloud Deployment Manager是一种基础设施管理服务,它使创建、部署和管理谷歌云平台资源变得非常简单。
为什么它们对DevOps很重要?
· 自动化友好
· 可观察的软件运行时
· 集成性
· 业务快速上线
云平台的例子
Amazon Web Services (AWS)
Amazon Web Services (AWS)是一个安全的云服务平台,提供计算能力、数据库存储、内容交付和其他功能来帮助企业扩展和成长。
简单来说,AWS允许您做以下事情:
在云中运行web和应用服务器来托管动态网站
安全地将所有文件存储在云上,这样您就可以从任何地方访问它们
使用托管数据库,如MySQL、PostgreSQL、Oracle或SQL Server来存储信息
使用内容分发网络(CDN)在世界范围内快速分发静态和动态文件
批量发送电子邮件给你的客户
Microsoft Azure
Microsoft Azure是由Microsoft创建的云计算服务,用于通过Microsoft管理的数据中心构建、测试、部署和管理应用程序和服务。
Microsoft Azure,以前被称为Windows Azure,是微软的公共云计算平台。它提供一系列云服务,包括计算、分析、存储和网络。用户可以从这些服务中选择开发和扩展新的应用程序,或者在公共云中运行现有的应用程序。
Google Cloud Platform
Google Cloud Platform由谷歌提供,是一套运行在谷歌内部用于终端用户产品(如谷歌搜索、Gmail和YouTube)的相同基础设施上的云计算服务。
Google Cloud Platform提供用于在web上部署和操作应用程序的计算资源。它的专长是为个人和企业提供一个构建和运行软件的地方,并且它使用web来连接该软件的用户。
来自谷歌的云计算服务,包括数据管理、混合云和多云,以及人工智能和ML,迎接您的业务挑战。
Pivotal Cloud Foundry (PCF)
Pivotal Cloud Foundry (PCF)是一个开源的、多云应用平台即服务(PaaS),由501组织Cloud Foundry Foundation管理。该软件最初是由VMware开发的,但后来被转移到Pivotal software。随着VMware在2019年底收购Pivotal,它又回到了VMware。
PCF是一个用于部署、管理和持续交付应用程序、容器和功能的多云平台。PCF允许开发人员快速部署和交付软件,而不需要管理底层基础设施。
Heroku
Heroku是一个支持多种编程语言的云PaaS。Heroku是最早的云平台之一,自2007年6月以来一直在开发,当时它只支持Ruby编程语言,但现在支持Java、Node。js、Scala、Clojure、Python、PHP和Go。
Heroku是一个基于容器的云PaaS。开发人员使用Heroku来部署、管理和扩展现代应用程序。我们的平台优雅、灵活、易用,为开发者提供了将应用推向市场的最简单途径。
国内肯定是阿里云占最大份额,海外就是AWS。
Container调度器的主要任务是在最合适的主机上启动容器并将它们连接在一起。它必须通过执行自动故障转移来处理故障,并且当单个实例有太多数据需要处理/计算时,它需要能够扩展容器。
最流行的三种容器调度器是Docker Swarm、Apache Mesos和Kubernetes。
Docker Swarm
Docker Swarm是由Docker开发的一种容器调度程序。Docker管理的这个集群解决方案的开发提供了一些优势,比如使用了标准的Docker API。Swarm的结构由两部分组成。
Apache Mesos和Mesosphere Marathon
Mesos的目的是构建一个可伸缩的、高效的系统,支持当前和未来的各种框架。这也是主要的问题:像Hadoop和MPI这样的框架是独立开发的——因此不可能在框架之间进行细粒度的共享。
Mesos的目标是添加一个瘦资源共享层,为框架提供访问集群资源的公共接口。Mesos将调度的控制权委托给框架,因为许多框架已经实现了复杂的调度。
根据您希望在集群上运行的作业的类型,存在四种类型的框架,其中一些具有本地Docker支持,如Marathon。在Mesos 0.20.0中添加了对Docker容器的支持。
我们将把重点放在Mesos和Marathon的使用上,因为它是Mesosphere积极维护的框架,在调度方面提供了许多特性,比如约束、健康检查、服务发现和负载平衡。
如图所示,集群中有四个元素。ZooKeeper帮助Marathon查找Mesos master的地址——可以使用多个实例来处理失败。
Marathon开始,监控,测量容器。Mesos主机将分配给节点的任务发送给节点,并在节点有空闲CPU/RAM时发出请求。Mesos从服务器运行容器并提交可用资源的列表。
Google Kubernetes
Kubernetes是Docker容器的编配系统,它使用标签和pod的概念将容器分组成逻辑单元。Pods是Kubernetes和其他两个解决方案之间的主要区别——它们是集合在一起的容器,形成了一起部署和调度的服务。这种方法简化了集群的管理——与基于亲和性的容器(如Swarm和Mesos)的协同调度相比。
Kubernetes调度器的任务是查看PodSpec是否为空的豆荚。NodeName属性是一个值,用于将容器调度到集群中的某个位置。
这是与Swarm和Mesos的区别,因为Kubernetes允许开发人员通过定义PodSpec来绕过调度器。运行pod时节点名。
调度程序使用谓词和优先级来定义应该运行哪个节点。可以使用新的调度器策略配置覆盖这些参数的默认值。
通过使用命令行标记- policy-config-file -指向描述启动Kubernetes时要使用的谓词和优先级的JSON文件,调度器将使用管理员定义的策略。
为什么它们对DevOps很重要?
· 快速恢复
· 响应性
· 透明度
· 事件中有限的人员参与
监控/测井工具的例子
ELK Stack
ELK Stack是三个开源产品的集合——Elasticsearch、Logstash和Kibana。它们都是由Elastic公司开发、管理和维护的。
E代表ElasticSearch—用于存储日志
L代表Logstash—用于运输、处理和存储日志
K代表Kibana——一个可视化工具(一个web界面)
Datadog
Datadog是一种针对云级应用程序的监视服务,通过基于saas的数据分析平台提供对服务器、数据库、工具和服务的监视。
Datadog应用程序性能监视(APM或跟踪)为您提供了对应用程序性能的深入了解——从用于监视关键指标(如请求量和延迟)的自动生成仪表板,到单个请求的详细跟踪——与您的日志和基础设施监视一起进行。
当向应用程序发出请求时,Datadog可以查看整个分布式系统的跟踪,并向您显示关于此请求的确切情况的系统数据。
New Relic
New Relic是一家总部位于加州旧金山的技术公司,它开发基于云的软件来帮助网站和应用程序的所有者跟踪他们的服务性能。
New Relic的应用程序性能监视软件分析产品(APM)提供关于您的web应用程序性能和最终用户体验满意度的实时和趋势数据。
Prometheus
Prometheus是一个用于事件监控和报警的免费软件。它在一个时间序列数据库中记录实时指标,该数据库使用HTTP pull模型构建,具有灵活的查询和实时警报。
普罗米修斯服务器的工作原理是scraping。调用配置为监视的各个节点的度量端点。它定期收集这些指标并将它们存储在本地。节点通过expose将监控指标发送给Prometheus。
Zipkin
Zipkin是一个分布式跟踪系统。它有助于收集解决服务体系结构中的延迟问题所需的定时数据。特性包括数据的收集和查找。
如果日志文件中有跟踪ID,可以直接跳转到它。否则,您可以基于服务、操作名称、标记和持续时间等属性进行查询。将为您总结一些有趣的数据,例如在服务中花费的时间百分比以及操作是否失败。
Azure Monitor
Azure Monitor通过提供全面的解决方案来收集、分析和处理来自云环境和本地环境的遥测数据,从而最大限度地提高应用程序和服务的可用性和性能。
它帮助您了解应用程序的执行情况,并主动识别影响它们的问题和它们所依赖的资源。
你可以用Azure Monitor做的事情有以下几个例子:
· 通过应用程序洞察发现和诊断跨应用程序和依赖项的问题
· 将基础设施问题与用于vm的Azure Monitor和用于容器的Azure Monitor联系起来
· 使用日志分析深入您的监视数据,以便进行故障排除和深度诊断
· 通过智能警报和自动化操作支持大规模的操作
· 使用Azure仪表板和工作簿创建可视化
为什么它们对DevOps很重要?
· 连接团队
· 提高协作
通讯工具的例子
Slack
Slack是Slack技术开发的一个专用即时通讯平台。
Slack本质上是你整个公司的一个聊天室,旨在取代电子邮件成为你主要的沟通和分享方式。它的工作空间允许您根据分组讨论的渠道组织通信,并允许私有消息在一个地方共享信息、文件和更多信息。
Microsoft Teams
Microsoft Teams是一个统一的通信和协作平台,它结合了持久的工作场所聊天、视频会议、文件存储和应用程序集成。
Teams是一种基于聊天的协作工具,它为全球、远程和分散的团队提供了协作的能力,并通过公共空间共享信息。您可以利用一些很酷的功能,比如文档协作、一对一聊天、团队聊天等等。
Google Hangouts
Google Hangouts是Googl开发的一款通信软件产品。Hangouts最初是Google +的一个功能,在2013年成为一个独立的产品,当时Google也开始将Google+ Messenger和Google Talk的功能集成到Hangouts中。
Hangouts聊天是与组织中人员进行交流的一种强大的方式。与一个或多个同事开始一条信息,为与一群人进行的谈话创造一个空间,并使用机器人来帮助自动化你的工作。聊天可以在你的电脑浏览器中工作,也可以在Android和iOS的移动应用程序中工作。
Zoom
Zoom视频通信公司是一家远程会议服务公司,总部位于加利福尼亚州圣何塞市。它提供了一种远程会议服务,结合了视频会议、在线会议、聊天和移动协作。
Skype更适合寻找整体业务解决方案的团队。Zoom更适合经常进行视频聊天和会议的团队。然而,这两个工具都不是专门为远程工作构建的。
因为我在海外工作,工作中用的最多的是Hangouts和Slack。Zoom 也是最近新冠病毒只能在家工作才用的。工作不会用钉钉和微信。
为什么它们对DevOps很重要?
· 减少知识浪费
· 增加新的生产力
· 限制重复错误
知识共享工具的例子
GitHubPages
GitHub Pages是一个静态的站点托管服务,它直接从GitHub上的存储库中获取HTML、CSS和JavaScript文件,可选地通过构建过程运行这些文件,并发布一个网站。您可以在GitHub Pages examples集合中看到GitHub Pages站点的例子。
Confluence
Confluence是一个由Atlassian开发并发布的协作软件程序。Atlassian用Java编程语言编写了Confluence,并于2004年首次发布。
Confluence是一个协作性wiki工具,用于帮助团队有效地协作和共享知识。使用Confluence,您可以在Team calendar插件的帮助下捕获项目需求,将任务分配给特定的用户,并同时管理多个日历。
Jekyll
Jekyll是一个简单的、支持博客的静态站点生成器,用于个人、项目或组织站点。它是由GitHub的联合创始人汤姆•普雷斯顿-沃纳(Tom Preston-Werner)用Ruby编写的,并在麻省理工学院(MIT)的开源许可下发布。
Jekyll是一个解析引擎,绑定为一个Ruby gem,用于从动态组件(如模板、局部代码、液体代码、markdown等)构建静态网站。Jekyll被称为"一个简单的、支持博客的静态站点生成器"。
Google Sites
Google Sites是Google提供的一个结构化的wiki和web页面创建工具。Google Sites声明的目标是让任何人都能够创建支持不同编辑器之间协作的简单web站点。
协作地为您的团队、项目或活动创建引人入胜的高质量站点。从桌面电脑到智能手机,这些网站在每个屏幕上看起来都很棒——所有这些都不需要学习设计或编程。
总结
我涵盖了所有这些不同的类别,它们共同帮助您完成DevOps。其中任何一个都是有帮助的,但我认为所有这些都是你需要的,你需要持续地向客户交付价值,以一种对团队可持续的方式,同时帮助你实现差异化。
我覆盖了DevOps工具链,比如总体规划工具,问题跟踪工具,源代码控制管理,构建和测试代码和成功,不断整合和部署您的源代码,管理配置,使用云平台,然后监控和日志记录之前做一些温和的沟通和知识共享。