2018 年 DevOps 世界出现了一股 Kubernetes 浪潮,几乎每个供应商都开发了自己的 Kubernetes 产品,例如 NetApp Kubernetes,Puppet DevOps 仪表板,RedHat 的 OpenShift 等等。
RedHat 的 DevOps 认证专家 Shane Boulden,列出了 8 条最有价值技能的“DevOps Top 8”,方便 DevOps 从业人员或那些有志成为 DevOps 专家的人员带来一些经验教训。
部署和使用合适的 Kubernetes
Kubernetes 是 DevOps 应用必须掌握的一个平台,允许开发人员和运营商使用相同的 API 管理平台和容器化应用程序。直接学习上游存储库的代码通常的效果会让自己越来越迷茫,建议选择下游的底层从头到尾学习。例如,可以选择 OpenShift 容器平台,以及最新的 OpenShift 迭代,全面地学习 Operator 框架。
配置和管理基于微服务的可扩展应用程序
在 2019 年,部署和管理 Kubernetes 上的应用程序是 DevOps 从业者的基本技能。可以使用命令行工具(如“kubectl”)与 Kubernetes API 进行交互,甚至可以使用自定义脚本直接与 Kubernetes API 进行交互。例如,Python Kubernetes 客户端的’ load_incluster_config ‘,或者下载 API 来使用应用程序内的 pod 元数据。
部署可扩展的监控解决方案,通过产生的指标数据能更好地进行监控性能。例如,Prometheus 和 Grafana。使用 node_exporter 通过 Prometheus 节点可以导出操作系统指标,使用 Micrometer 等库可以导出应用程序级指标。不论是开发人员还是运营商可以使用相同的监控基础架构,提高团队之间的工作效率。
掌握自动化工具
自动化一直是 DevOps 的核心,DevOps 领域的自动化专家能带来更高的可信度。在 2019 年,应该努力获得专家级的自动化工具知识,例如 Ansible,Chef,Puppet 或直接使用 Bash。应该能够与开发人员一起轻松实现配置管理、测试和生产部署等所有方面的自动化,并且希望至少尝试使用“蓝绿”(blue-green)或“金丝雀”(canary)等自动高级部署技术。
Ansible 可以在混合云中实现自动化配置和应用程序配置,利用 Ansible Operators 可以将自动化技能应用到 Kubernetes,并使用 Operator 框架管理复杂和有状态的应用程序。
容器化应用程序的最小化构建
创建基本的 Dockerfile 并调用应用程序“容器化”,如果只懂得这样处理就太落伍了。2019 年的 DevOps 从业者应该掌握如何优化容器化应用程序的构建,最小化容器的镜像文件,最小化运行时的依赖性。构建较小的映像意味着容器注册表中消耗的存储空间更少,并且最大限度地减少容器内的运行时依赖性使潜在攻击的攻击面最小。
不需要在已部署的容器中使用 GCC,但可能需要它来构建 Python 的依赖项。在这种情况下,最好使用多阶段容器构建 — 不再需要构建一体化的镜像,只要在注册表中为生产部署提供分阶段的强化、精简的 Alpine 基础镜像。
使用多个不同容器 runtime 进行交互
多年来,Docker 一直主导着 Linux 的容器世界,提供了简单的容器图像格式和易于使用的 CLI。Docker 在 2019 年的影响力正在逐渐减弱,它在 2018 年对其产品进行了一系列令人困惑的变化,以便将该平台货币化,其开源项目 Moby 的状态仍不明朗。2018 年还启动了一些新的开源容器计划,例如 CRI-O,现在是 Kubernetes 的默认容器 runtime。对于 2019 年的 DevOps 从业者,Docker 仍然很重要,因为它牢牢扎根于开发人员和 IT 主管的词汇中。应该理解如何在 Docker 和其他容器 runtime 之间进行交互,比如 Docker 的 fat-daemon 模型和 Podman 的 fork/exec 模型,还要掌握它们如何与容器平台(如 Kubernetes)进行交互。
了解并可以管理委派的身份验证和授权
容器化应用程序的兴起意味着管理应用程序身份验证和授权的变化,尝试在容器内部打破 Kerberos 或 FreeIPA 客户端是很痛苦的,导致了许多黑客攻击来让工作正常进行。2019 年将使用 OpenID Connect 和 OAuth 2 等协议来创建易于扩展的应用程序架构,作为 DevOps 从业人员应该乐于使用 OpenID Connect 来提供身份验证,并管理应用程序的多因素验证。
成为操作系统专家级工程师
操作系统的角色在 2019 年没有改变,仍然是所有内容的基础,它决定了 DevOps 平台的成败。无论个人偏好是基于 Debian 还是基于 RedHat,或者是最新的容器优化的操作系统,成为核心操作系统管理和工程方面的专家仍然至关重要。例如,获得 RedHat 认证系统管理员和 RedHat 认证工程师的证书,为开发人员和运营商提供可信的保障,当任何事情发生时,可以直接访问操作系统并解决问题。
掌握最好的学习方式
DevOps 是一个不断变化、不断发展的世界,要努力继续缩短开发人员和运营商之间的反馈循环。随着框架的发展和流程的变化,了解如何最好地学习是很重要的。Shane Boulden 认为,无论是通过实践学习,还是直接阅读手册,都无关紧要,目标是尽可能高效地学习。