这是有关如何成为 DevOps 工程师的分步指南,并提供相关学习资源的链接。
如果您想了解有关 DevOps 的更多信息,请务必订阅我的时事通讯。
如果您发现此存储库有帮助,请考虑在 Patreon 上支持我:
本路线图的目的是让您了解景观。如果您对接下来要学习什么感到困惑,路线图将为您提供指导,而不是鼓励您选择炒作和流行的内容。您应该对为什么一种工具比另一种工具更适合某些情况有一些了解,并记住炒作和流行并不总是意味着最适合这项工作。
如果您喜欢或正在使用此项目来学习或开始您的解决方案,请给它一颗星。谢谢!
下载PDF版本。
DevOps 工程师的学习资源(大部分免费)
1. 吉特
2. 学习一门编程语言
3.学习Linux和脚本
4.学习网络和安全
5.学习服务器管理
6.学习容器
7.学习容器编排
8. 将基础设施作为代码来学习
9.学习CI/CD
10.学习监控和可观察性
11.了解一个云提供商
12.学习软件工程实践
其他资源
工具
图书
您的所有资源(文件)都将保存在 GIT 存储库中。这些文件是应用程序代码,也是基础设施即代码。
Git是一个用于源代码管理的免费工具。 Git 用于跟踪源代码的更改,使多个开发人员能够协同进行非线性开发。
两个最流行的 Git 平台是GitLab和GitHub 。
在这里,您需要学习 Git 命令,例如 git clone、branch、merge,以及如何通过拉取请求在项目上进行协作。
资源:
Pro Git免费书籍
通过 Atlassian免费学习 Git
免费学习 Git 分支
在 CodeAcademy免费学习 Git 和 GitHub
Git 命令浏览器免费
免费的Git 沉浸式体验
免费的可视化 Git 参考
作为一名工程师,建议至少了解一种可用于编写自动化脚本的编程语言。
DevOps-es 的一些流行编程语言是Python、Go 和 JavaScript 。
Python 是一种多范式语言。作为一种解释性语言,代码在编写后立即执行,并且语法允许以不同的方式编写代码。 Python经常被推荐为新程序员应该学习的第一语言,因为它注重可读性、一致性和易用性。
这里需要学习编程语言的基本概念,比如语法、if/else、循环、数据结构等。
资源:
《用 Python 自动化无聊的事情》免费书籍
Python 速成课程免费
现代 JavaScript 教程免费
JavaScript 初学者速成课程免费
Eloquent JavaScript,第 3 版,Marjin Haverbeke免费书
免费举例
操作系统充当计算机用户与其硬件之间的桥梁。其功能是提供一个用户可以方便有效地运行程序的设置。
由于大多数服务器都使用Linux 操作系统,因此您需要熟悉 Linux 及其 CLI。
Ubuntu是一种易于启动的发行版。
此外,您需要了解脚本来自动执行开发和操作任务。
在这里,您可以学习特定于操作系统的语言,例如Bash 或 Powershell ,或独立的语言,例如 Python 或 Go。
资源:
操作系统 - 概述免费
Shell 脚本教程免费
Powershell 初学者教程:免费学习 Powershell 脚本
Bash 参考手册免费
终极指南:免费开始使用 Ubuntu
FreeBSD 手册免费
Linux 命令手册免费
网络协议是一组已建立的规则,用于确定数据如何在同一网络中的不同设备之间传输。从本质上讲,它允许连接的设备相互通信,无论其内部流程、结构或设计有何差异。
在这里您需要了解网络如何工作、如何配置防火墙、了解DNS如何工作、 OSI 模型、IP 地址、端口等。
资源:
免费解释 OSI 模型
计算机网络:自上而下的方法图书视频内容视频
IT 专业人员的 TCP/IP 和网络基础知识Pluralsight 课程
DevSecOps:掌握保护 CI/CD 的安全 | DevOps 管道Udemy 课程
DevOps 中的实践安全性:使用 DevSecOps书籍确保持续的安全性、部署和交付
确保 DevOps 安全:云中的安全图书
服务器管理包括服务器可靠运行并以最佳性能水平所需的所有基础设施监控和维护。有效的服务器管理策略的主要目标是:
最大限度地减少服务器速度下降和停机时间,同时最大限度地提高可靠性。
构建安全的服务器环境。
扩展服务器和相关操作以满足组织随着时间的推移的需求。
在这里,您需要了解什么是正向和反向代理、缓存服务器,以及如何操作Web 服务器,例如 Nginx、Apache 或 IIS。
资源:
什么是反向代理?自由的
缓存服务器免费
反向代理与正向代理:差异免费
什么是负载均衡?自由的
什么是防火墙?自由的
NGINX 手册免费
免费学习 Apache 服务器
免费学习 IIS
容器是一种标准软件单元,用于打包代码及其所有依赖项,因此应用程序可以快速可靠地从一个计算环境运行到另一个计算环境。
Docker是迄今为止最流行的容器技术。 Docker 容器映像是一个轻量级、独立的可执行软件包,其中包括运行应用程序所需的一切:代码、运行时、系统工具、系统库和设置。在这里,您需要了解如何运行容器、Docker Networking、Volumes、Dockerfiles,以及如何使用 Docker-Compose 运行多个容器。
资源:
什么是容器?自由的
免费自下而上学习容器
TechWorld 与 Nana 为初学者提供的 Docker 教程免费
Docker 掌握:使用 Docker Captain Udemy 课程中的 Kubernetes +Swarm
什么是服务网格?自由的
免费使用 Kubernetes 进行 DevOps
容器编排可自动化容器的部署、管理、扩展和网络。
容器编排可以在任何使用容器的环境中使用。它可以帮助您跨不同环境部署相同的应用程序,而无需重新设计。容器中的微服务使编排服务变得更加容易,包括存储、网络和安全性。
这里你需要了解Kubernetes是如何工作的,以及如何管理 Kubernetes 集群并在其上部署应用程序。
资源:
TechWorld 与 Nana 为绝对初学者免费提供 Kubernetes 速成课程
入门:Kubernetes 是如何诞生的、它是什么以及为什么您应该关心文章
认证 Kubernetes 管理员 (CKA) 和实践测试Udemy 课程
学习 Kubernetes - KodeKloud课程的初级到高级
了解何时免费使用集群服务、Ingress 或 API 网关
了解服务网格解决哪些问题(免费使用抽象 smi-spec.io
免费了解如何自动化 TLS 和 DNS
Kubernetes 启动和运行书籍
Kubernetes 学习路径 - 50 天从零到英雄,来自 Microsoft免费
有时称为IaC ,它指的是用于定义基础设施的技术和工具,通常采用 YAML 或 JSON 等标记语言。基础设施即代码允许工程师自动执行环境设置和拆卸。通过按需配置黄金副本环境来加速部署并降低风险。
Terraform是最流行的基础设施配置工具,但还有其他工具,例如 Ansible、Chef、Puppet 和 Vagrant。
这里你需要知道如何进行基础设施供应和配置管理。
资源:
GUI、CLI、API:免费学习基础设施即代码的基本术语
免费官方 Terraform 教程
Terraform免费综合指南
像专业人士一样自动化 Terraform 文档!自由的
免费编写可重用的 Terraform 模块
什么是 Istio?自由的
木偶概览免费
免费和付费的木偶课程
免费开始使用 Ansible
学习 Ansible 基础知识
免费和付费开始使用红帽 Ansible
掌握 Ansible Udemy 课程
免费学习厨师
持续集成/持续部署 (CI/CD) 是一种通过在应用程序开发阶段引入自动化来频繁向客户交付应用程序的方法。 CI/CD 是解决集成新代码可能给开发和运营团队带来的问题的解决方案。
CI/CD 在应用程序的整个生命周期(从集成和测试阶段到交付和部署)引入了持续自动化和持续监控。这些相互关联的实践通常称为“ CI/CD 管道”,并得到开发和运营团队的支持。
CI/CD 管道有不同的阶段,例如:构建、测试和部署,但可能还包括更多活动:
从版本控制检查代码并构建它
为不同类型的审批设置关卡
管理环境变量
重启服务
执行测试
还有更多...
在这里,您需要学习如何设置 CI/CD 服务器、自动集成代码和触发管道以及构建和包管理工具。
一些流行的 CI/CD 工具包括 Jenkins、TeamCity、CircleCI、Bamboo、GitLab 和 Azure DevOps。
资源:
持续集成免费
CI/CD 管道:免费简介
通过免费教程学习 GitLab
开始使用 GitLab CI/CD免费
Jenkins,从零到英雄:成为 DevOps Jenkins 大师Udemy 课程
免费学习 GitHub 操作
GitHub Actions免费的工作流程语法
免费学习 Azure DevOps
GitLab 备忘单免费
监控需要监督从规划、开发、集成和测试、部署到运营的整个开发过程。它涉及生产环境中应用程序、服务和基础设施状态的完整实时视图。
当我们的软件投入生产时,这一点尤其重要,并且我们需要跟踪基础设施和应用程序中的各种问题。
两个最流行的工具是Prometheus和Grafana 。
这里你需要知道如何设置监控和可视化数据。
资源:
什么是可观察性?全面的初学者指南免费
免费监控微服务的方式、原因和内容
DevOps 监控免费
免费应用基本与高级监控技术
免费学习普罗米修斯
免费学习 Grafana
弹性堆栈免费
云提供商提供 API 层来抽象基础架构并根据安全性和计费边界对其进行配置。云在数据中心的服务器上运行,但抽象巧妙地呈现出与单个“平台”或大型应用程序交互的外观。与云提供商快速调配、配置和保护资源的能力是现代 DevOps 取得巨大成功和复杂性的关键。
市场上最受欢迎的云提供商是AWS和Azure ,以及Google Cloud 。
在这里你需要知道如何管理用户和管理、网络、虚拟服务器等。
资源:
考试 AZ-900:Microsoft Azure 基础知识免费
Microsoft Azure 基础认证课程 (AZ-900)免费
AZ-900 | Microsoft Azure 基础知识完整课程、免费练习测试、免费网站和学习指南
终极 AWS 认证云从业者 - 2022 Udemy
AWS 开发人员,由 Cloud Guru学习路径
作为一名 DevOps 工程师,您可能会与敏捷世界中的其他开发人员一起工作,例如Scrum 。因此,了解SDLC的不同部分以及其中使用的工具非常重要。
此外,最好了解自动化测试是如何工作的,因为您需要以 CI/CD 方式设置它。
这里你需要了解什么是Scrum 、 SDLC的各个阶段、自动化测试是如何工作的等等。
资源:
什么是 Scrum?自由的
免费了解 Scrum 的方法
软件开发生命周期 (SDLC) 阶段和模型免费
Jira 敏捷入门指南:免费课程说明
免费学习安全
免费学习自动化测试
GitLab - DevOps免费初学者指南
常见 SDLC 模型免费
工作跟踪:** Asana、Monday、Jira、Trello、Azure Boards。
源代码控制:Git、Github、GitLab、BitBucket、Azure DevOps。
CI/CD :Jenkins、Team City、Github Actions、Travis CI、Bamboo、Circle CI、Azure Pipelines、Octopus Deploy、Harness、CloudBees CodeShip。
源代码分析:SonarQube、Veracode。
工件管理:Artifactory、Docker Container Register、npm、Yarn、NuGet。
配置管理:Terraform、Ansible、Puppet、Chef。
容器编排:Docker、Kubernetes、红帽 OpenShift。
监控:Prometheus、Grafana、Splunk、Dynatrace、Kibana。
《DevOps 手册:如何在技术组织中创建世界级的敏捷性、可靠性和安全性》 ,Gene Kim、Patrick Debois、John Willis、Jez Humble
本书介绍了产品开发、质量保证、IT 运营和信息安全。对于那些刚刚接触 DevOps 或想要了解更多关于 DevOps 的各个组件如何协同工作的人来说,这是一本很好的读物。
加速:精益软件和 DevOps 的科学:构建和扩展高性能技术组织,Nicole Forsgren、Jez Humble、Gene Kim
本书介绍了测量软件交付性能背后的研究结果和科学依据。对于将 DevOps 提升到高级管理层来说,它是一个很棒的工具。
持续交付:通过构建、测试和部署自动化实现可靠的软件发布,Jez Humble,David Farley
它引入了自动化架构管理和数据迁移。许多后来成为标准的部署管道概念都是在本书中建立的。一些技术细节涵盖了配置即代码、构建和部署自动化以及高效的测试技术。它主要是技术书籍。
团队拓扑:组织业务和技术团队以实现快速流程,Matthew Skelton、Manuel Pais
这本书讨论了如何以一种能够使价值快速流向客户的方式组织团队。它提供了一组四种基本团队拓扑:流对齐团队、支持团队、复杂子系统团队和平台团队,这些团队可以进行组合和调整以适应不同的组织环境。
有效的 DevOps:建立大规模协作、亲和力和工具的文化,Jennifer Davis,Ryn Daniels
本书提供了提高团队协调性的有效方法。它展示了如何打破信息孤岛、监控关系以及修复组织中团队之间和内部出现的误解。
凤凰项目:一本关于 IT、DevOps 和帮助您的企业获胜的小说,Gene Kim、Kevin Behr、George Spafford
这是一本关于有效性和沟通的经典小说。 IT工作就像制造工厂的工作,必须建立一个系统来简化工作流程。那里最好的书之一。
站点可靠性工程、Betsy Beyer、Chris Jones、Jennifer Petoff、Niall Richard Murphy
本书解释了Google的开发、部署和监控的整个生命周期,以及如何管理世界上最大的软件系统(也称为SRE)。任何认为自己更倾向于 DevOps 方面的“Ops”端的人,或者想要了解如何加强各个 Dev 和 Ops 团队之间的联系的人都应该阅读 SRE。
我们甚至可以将此路线图呈现为汉堡:)。
如果您认为路线图可以改进,请提交包含任何更新的 PR 并提交任何问题。另外,我将继续改进这一点,因此您可能需要为该存储库加注星标以重新访问。
打开带有改进的拉取请求
讨论问题中的想法
传播这个词
Milan Milanović 博士 - 3MD 首席技术官。
Romano Roth - Zühlke 的 DevOps 主管。