点击上方蓝字⭐️关注“DevOps云学堂”,接收最新技术实践
今天是「DevOps云学堂」与你共同进步的第 36 天
在过去的几年里,随着 DevOps 工程师的职位发布数量急剧增加,“ DevOps 面试问题”查询的点击量已超过 50 万次。跨国公司通常有多个 DevOps 工程师专家角色。此外,由于就业市场竞争激烈,DevOps 工程师面试问题可能涵盖更广泛和更为复杂的主题。
“Developer”和“Operator”这两个词组合起来形成术语“DevOps”。 开发人员和运营商是两个独立的团队,共同努力准备好应用程序。 开发应用程序的人称为“开发人员”,运营人员在服务器上设置并运维此应用程序。前几年,创建并启动应用程序后不需要进行太多更新。这些天每个人都很高兴,因为更新和调整软件以适应变化将花费太长时间。开发和运营因此产生分歧。然而,现代近年来应用不断更新。更新的冗余性要求开发新的流程文化,从而催生了 DevOps。
通过协调和编排软件开发与 IT 运营,企业可以使用一组称为 DevOps 的适应性实践和流程来设计和交付应用程序和服务。
当开发和运营团队协作时,他们可以减少障碍并改进软件创建、分发和监控。 通俗地说,它消除了以前阻碍他们的障碍,以便可以持续交付优质软件功能和应用程序 (CI/CD)。
DevOps 文化促进开发和运营工作组之间的合作。因此,软件在其整个生命周期中不断开发、测试、集成、部署和监控。DevOps 解决 IT 运营和开发人员之间的问题和分歧。 敏捷是一种强调客户反馈和迭代、增量、小而快速的软件发布的软件开发方法。它解决了客户和开发人员之间的分歧和纠纷。
最常见的 DevOps 工具是:
DevOps 生命周期有八个阶段:
DevOps 的主要优点是:
开发人员进行编码,然后使用持续集成(CI)方法将其代码组合到主存储库中。每个集成都会通过自动构建过程进行检查,使团队能够比发布后更快地发现代码中的错误。
持续交付 | 持续部署 |
---|---|
确保代码可以安全地投入生产。 | 在自动化测试中成功的每个更新都会自动部署到生产中。 |
保证应用程序和服务的预期功能。 | 提高软件开发和发布的速度和可靠性。 |
通过严格的自动化测试将每次修改交付到类似生产的环境中 | 在缺乏这种公开的开发人员认可的情况下,始终会建立监控实践。 |
AWS 在 DevOps 中扮演以下角色:
版本控制通常称为源代码控制,是监视和控制对软件代码的修改的行为。 使用版本控制,您可以:
我建议您列出版本控制的好处如下:
Secure Shell(或 SSH)是一种命令行管理协议,使用户能够通过网络连接和控制远程服务器。 安全加密的SSH协议取代了以前流行且不安全的Telnet。通过这样做,可以确保与远程服务器的通信是加密的。
步骤 1:将本地存储库链接到远程存储库:git remote add origin [web addr.]
(示例:git remote add https://github.com/file.git
)
步骤 2:将文件推送到远程存储库:git push origin master
。
想象一下您正在制作一个应用程序并计划为其添加新功能。新功能可以构建在您创建的新分支上。
下面列出了几个 DevOps KPI:
Ansible 中的服务器有两种不同的类别: • 控制机器 • 节点 Ansible 必须安装在控制计算机上才能使用 SSH 来管理节点。控制机器的清单将指定和配置节点的位置。 由于 Ansible 的无代理特性,无需在托管远程节点的服务器上进行安装。因此,无需在管理远程节点时运行任何后台进程。 借助 Ansible Playbook 和 SSH 连接,Ansible 可以从单个系统控制多个节点。Playbook 可以执行各种任务,并且采用 YAML 格式。
持续测试 (CT) 是需要运行自动化测试用例的 DevOps 阶段,测试用例是自动化软件交付管道的组件。这是一种接收有关所开发代码的性能和任何业务风险验证的即时反馈的方法。 CT 是 DevOps 步骤,包括作为管道的一部分执行自动化测试用例,以便接收有关与自动生成代码相关的公司风险的质量和验证的快速反馈。 通过使用此阶段,团队将能够连续测试每个构建(一旦开发的代码被推送),使开发团队有机会收到有关其工作的即时反馈,并防止这些问题稍后在 SDLC 中出现循环。 由于不需要在每次发生更改时重建项目和执行自动化测试所需的手动参与步骤,因此这样做将显着加快开发人员开发项目的工作流程。
下面介绍一下区别:
持续测试 | 自动化测试 |
---|---|
所有自动化测试用例都作为交付过程的一部分通过此过程运行。 | 此过程通过帮助开发人员创建无需手动参与即可重复执行的测试用例来取代手动测试。 |
此过程重点关注与最早可能的软件发布相关的商业风险。 | 使用一组通过/失败位置作为指导,此过程使开发人员能够确定他们创建的功能是否没有错误。 |
• 每次提交代码时,Jenkins master 都会从远程GitHub存储库检索更新的代码。 • 它将工作负载分散到所有Jenkins 从机上。 • 从机按照Jenkins 主机的指示执行、构建、测试并生成测试报告。
•Pipeline:CD 管道是用户定义的模型。管道的代码指定如何构建、测试和交付应用程序。 •Agent:它是Jenkins 环境的组件,可以运行管道。 •Steps:指示Jenkins 在触发时执行的单个任务。 •Stage:标识在整个管道(构建、测试、部署阶段)中执行的一组理论上独立的任务
下表总结了一些基本的 Git 命令。
命令 | 目的 |
---|---|
git init | 启动一个新的存储库。 |
git configgit config --global user.name“[名称]”git config --global user.email“[电子邮件地址]” | 设置用户的用户名和电子邮件地址。 |
git clone <存储库路径> | 生成存储库的本地副本。 |
git addgit add <以逗号分隔的文件名>git add . | 将多个文件添加到暂存区。 |
git commitgit commit -a git commit -m “<添加提交消息>” | 在暂存区域中创建文件的记录或快照。 |
git diff git diff [第一个分支] [第二个分支]git diff -staged | 显示提到的两个分支之间的差异,并将当前版本与暂存区域的文件版本进行对比。 |
git status | 列出需要提交的每个文件。 |
git rm <文件名> | 从当前工作目录中删除一个或多个文件并将其暂存。 |
git show <提交> | 显示提交的元数据和内容更改。 |
git 分支 git 分支 [分支名称]git 分支 -d [分支名称] | 创建一个全新的分支。删除提到的分支。列出所有可用的分支,同时突出显示我们当前所在的分支。 |
步骤 1:复制相关作业目录,将作业从一个 Jenkins 安装转移到另一个安装。 步骤 2:要复制现有作业,请克隆作业目录并为其指定新名称。 步骤 3:重命名目录以重命名现有作业。
Ansible 角色嵌入在Playbook中,是一组独立的任务、变量、文件和模板。
最流行的 DevOps 工具是
在我的职业生涯中,我使用所有这些工具成功开发和部署了软件。 如果您没有使用所有这些工具:这些(您使用的)工具是我的专业领域,并且我熟悉其他工具。
我将用一个简单的流程来解释。但根据具体情况,此过程可能因组织而异。
Puppet 模块由清单和数据组成。当类、事实、自定义类型、定义类型和任务具有特定的目录结构时,Puppet 会自动加载它们。模块必须具有有效的名称并安装在 Puppet 的模块路径中。 Puppet Manifest 是基于代码的 Puppet 程序。它采用PP扩展。
使用 Puppet 配置系统有两种方法:
Ansible | Puppet |
---|---|
轻松无代理安装 | 基于代理的安装 |
使用Python开发 | 使用 Ruby 开发 |
配置文件是用YAML编写的 | 配置文件是用DSL编写的 |
Kubectl 是一个命令行工具,允许用户向 Kubernetes 集群发出命令。Ctl 在这种情况下代表“控制”。可以使用“kubectl”命令行界面部署应用程序、检查和管理集群资源以及查看日志。
Selenium的各种成分如下:
它是一个简单的框架,包含一个易于安装的 Firefox 插件。建议使用此 Selenium 组件进行原型设计。
Selenium RC 是一个允许使用任何语言进行编程的测试平台。这支持 Web 应用程序 UI 测试的自动化。
它不依赖于 JavaScript,并采用更好的方法来自动化 Web 应用程序的测试。使用此 Web 框架可以进行跨浏览器测试。
该代理服务器与 Selenium RC 一起运行,并且能够使用浏览器在多个节点或计算机上执行并发测试。
在 Kubernetes 中,Pod 将容器相互映射。一个 Pod 内可能存在多个容器。在覆盖网络中,Pod 具有简单的网络层次结构,并以扁平的方式相互通信,因此理论上,那里的任何 Pod 都可以与任何其他 Pod 通信。
与手动或通过图形用户界面不同,基础设施即代码 (IaC)范式管理和跟踪文件中的基础设施配置。这使得基础设施的配置更加灵活,更重要的是,可以使用版本控制系统清晰地跟踪更改。 称为配置管理系统的软件程序可实现环境的一致、可靠且安全的管理。 通过使用优化的 DSL 来指定系统元素的状态和配置,多个人可以协作并将数百台服务器的系统配置存储在一个位置。 Ansible 没有集中式服务器,配置存储在 YAML 中。通过 SSH(或 Windows 上的 WinRM),状态配置被发送到服务器,然后在服务器上执行。这种方法的缺点是管理数千台机器可能需要很长时间。
作为一名 DevOps 工程师,您必须对相关流程、工具和技术有深入的了解,并对现有的产品、服务和系统有全面的了解。正如您将看到的,要在 DevOps 领域获得一份有价值的工作,需要学习很多知识,包括自动化工具等。 这些是您在面试过程中可能遇到的DevOps 工程师最常见的一些面试问题。如果您希望在 DevOps 职业生涯中获得良好或更好的职位,请报名参加DevOps训练营课程。因为课程提供了有关流程、工具和技术的深入知识。
往期推荐
如果这篇文章对您有帮助,欢迎转发点赞分享。您的关注是我持续分享的动力!