翻译自 Ramesh Nampelly 的 Platform Engineering at Palo Alto Networks 的 Part-1 和 Part-2 。
我一直在考虑我在 Palo Alto Networks 的第一篇博文应该是什么?什么时候发布?我觉得现在是反思我领导云基础设施和平台工程的旅程和经验的最佳时机。
我于 2021 年 4 月加入 Palo Alto Networks,领导网络安全组织快艇内云交付安全服务组织的生产工程团队,最近承担了整个 NetSec 组织领导基础设施平台的扩展角色。在这篇博客中,我想谈谈我们如何将生产工程服务转变为平台。这是我们博客系列的开始,其中我提供了我们内部开发人员平台 (Internal Developer Platform,IDP) 的高级概述,我们将在未来几个月为我们的每个 IDP 组件发布单独的博客文章。
让我们从 PAN IDP 启动背后的背景开始。主要是以下两个因素促使我们踏上了这段旅程:
一旦我们决定采用平台方法,下一个挑战就是确定我们是内部构建还是购买。经过详细分析,我们决定考虑 Palo Alto Networks 的特定用例来构建它。由于我们的理念不是重新发明轮子,而是尝试利用开源项目实现飞跃,团队找到了一个很棒的开源项目 backstage.io 来启动我们的旅程。我们分叉了 backstage OSS 的代码并添加了所需的抽象并将其命名为“Palo Alto Networks DevClues”。
我们实施的第一个用例是“服务目录”,以帮助开发人员或 SRE 轻松快速地找出给定生产服务的详细信息。现在经过 1.5 年的旅程,我们在 IDP 中有相当多的服务(如下图所示)处于不同的采用阶段。
该平台由 4 个类别组成——资源管理、基础设施管理、生产管理和开发人员门户。开发人员门户 (DevClues) 是该平台提供的所有服务的入口点(一站式服务)。例如——如果任何一个工程团队想要将他们的服务加入可观测性,那么他们只需登录开发人员门户并使用加入插件(即由可观测性团队贡献的自定义插件)来完成他们的可观测性集成。
如今,开发人员门户 (DevClues) 提供 12 个插件和数十个服务模板,可提高整体工程效率。我们将继续根据我们的工程需求构建更多模板和插件。我还想指出,其中一些是由开发团队(也就是我们的客户)贡献的。因此,我们从第一天起就采用了内部开源模型(即内部采购)。
在第 2 部分中,我将在 2022 年 gartner 发布的报告中简要介绍 Palo Alto Networks IDP 的四个类别及其能力。根据这份报告,IDP 能力分为以下三个开发生命周期阶段:
图 1:Gartner 发布的报告背景下的 Palo Alto Networks IDP 概览
现在让我们对每个阶段和 IDP 能力进行一些扩展。
发现和创建阶段涵盖开发生命周期的初始部分,包括引导、培训、启动、本地开发等。如图 1 所示,所有这些能力都是 Palo Alto Networks 的“开发人员门户”的一部分。
正如我在上一篇文章中所述,DevClues 基于开源项目 backstage.io,它是基础设施平台提供的所有内部服务的一站式商店。现在,我们将在 Gartner 发布的报告的背景下仔细研究 DevClues(即图 1 下方)的每项能力。
内部开发人员门户应使开发人员能够轻松地在软件交付生命周期 (SDLC) 的所有阶段执行 Day 0, Day 1 和 Day 2 的活动。
图 2:Palo Alto Networks DevClues 主页
Palo Alto Networks DevClues 为开发人员提供随时可用的服务模板,以创建具有嵌入式最佳实践的新软件应用程序、服务和基础架构组件。
此功能使开发人员能够快速轻松地搜索和查找生产服务(例如 On Boarded into DevClues);包括:
图 3:服务目录中服务概览
此功能允许开发人员基于预定义模板创建新服务、基础架构组件或应用程序。 DevClues 目前提供了一套用于“go”、“python”和“react”应用程序开发的服务模板,以及用于“GKE 集群启动”和“gitOps 引导”(使用 gitlab 和 argoCD)的基础设施组件配置模板。
这有助于开发人员了解如何以自助服务的方式最大限度地利用平台,并促进围绕平台的社区,来自不同服务团队的个人成为平台上的 SME,可以帮助他们的团队实现目标而无需等待为平台团队寻求信息或帮助。这包括:
为开发人员提供一种自助服务方式,以查找有关平台及其功能的信息、获得对问题的答复以及问题的自动帮助。这包括:
为开发人员提供有关架构的最佳实践:
DevClues 使 Palo Alto Networks 开发人员能够为内部工具和流程构建门户。在 Palo Alto Networks ,我们有插件:
集成和部署阶段涵盖应用程序部署到非生产/生产、集成分布式系统、配置资源等。提供单一仪表盘来管理跨云和本地环境的分布式基础设施。以下是当前的能力,它们分布在基础设施管理和生产管理类别之间(即如图 1 所示)
在 Palo Alto Networks,我们构建了一个 DevClues 插件 Uno(请参考下面的图 4),它可以帮助开发人员为利用 GitOps 的服务/应用程序提供和配置云资源和其他基础设施组件。这包括:
图4:Uno——用于多云基础设置管理的 DevClues 插件
对资源和运行的应用程序实施商业、运维和最佳实践策略。我们已实施基于 OPA(Open policy agent) 的“控制平面”:
我们为管理基础设施资源而构建的 DevClues 插件已得到扩展,可以轻松创建、配置和管理服务/应用程序环境,例如:
在Palo Alto Networks,此功能可以提供一种服务,可以管理生产中的证明书、 Secrets 和配置的同步,以方便他们可以安全的:
此阶段涵盖持续运营,通过 DevClues 插件提供对工具箱的访问,以实现自动化、监控、可观测性和事件管理等。
在 Palo Alto Networks,运营和改进阶段能力分布在 3 个类别中 — 生产管理、基础设施管理和资源管理(即如图 1 所示)。
监控和可观测性是 Palo Alto Networks 的关键生产工程服务之一。我们使用 grafana、grafana mimir、grafana loki、grafana tempo 和 vector.dev 等成熟的开源技术构建了一个名为“Garuda”的内部可观测性平台。我们将发布一篇单独的博文,介绍 Garuda 并很快深入探讨其功能。
截至今天,Garuda 提供以下能力:
我们为 Garuda 构建了一个 DevClues 插件(即下图 5),以帮助工程团队轻松地将他们的基础设施和服务/应用程序载入“可观测性平台”。
图 5:DevClues 中的 Garuda 引导插件
监控和可观测性的主要挑战之一是不同资源类型(云、本地、k8s、虚拟机、无服务器和裸金属)的复杂引导流程。通过这个插件,我们使引导流程尽可能无缝和顺畅。
图 6:Garuda Agent 引导
有效的事件管理是我们 SRE 最佳实践的一个关键方面,可以在发生影响业务的事件/中断时有效地提醒和通知工程师,并提供管理这些事件的工具。这包括:
我们的 DevClues 事件分析插件提供以下见解
根据最近的一项行业研究,30-50% 的生产事件是重复的,并且是 SRE 工作的主要内容。我们想通过自动化来解决这个问题,因此构建了一个名为“Nutrix”的系统,即我们基于开源项目 stackstorm 的内部自动修复平台:
图 7:DevClues 中的 Nutrix 插件
同样,增加这种自动化采用的主要瓶颈之一是没有一个强大的创作框架,这促使我们在 DevClues Nutrix 插件中构建创作框架(如下所示)。
图 8:DevClues 中的 Nutrix 自动修复创作
使用可观测性和监控数据来诊断问题和调试正在运行的系统以减少 MTTR(平均解决时间)的仪表盘。这包括:
图 9:Garuda 罐装 Host 360 仪表板
图 10:Garuda 罐装证书 360 仪表板
图 11:Garuda 罐装 Kubernetes 360 仪表板
图 12:Garuda 罐装 Kubernetes 成本洞察仪表盘
管理用户和工具对云资源和系统的身份和访问管理。
例子包括:
Palo Alto Networks 信息安全团队负责安全策略的定义和执行以及自动验证和检查,但补救措施是工程团队的责任。这包括:
在多云和混合云世界中,基础设施成本成为热门话题。毫无疑问,需要持续监控、报告和优化成本。
在 Palo Alto Networks,我们开始从两个维度解决这个问题,即自上而下和自下而上:
图 13:DevClues 在 SKU 级别的成本洞察
在云世界中,基础设施管理有两个重要方面,即基础设施供应和配置。在 Palo Alto Networks,我们使用 terraform 标准化基础设施配置,使用 ansible 进行配置管理。
开发人员应该以可扩展且可靠的方式管理应用程序配置,类似于我们管理和版本化源代码或基础设施即代码 (IaC) 的方式。
为了更好地管理 ansible 代码,我们采用了 awx,这是 ansible tower 的开源版本,可帮助开发人员/SRE 标准化配置的部署、启动、委托和审计方式。
在 Palo Alto Networks,资源和基础设施管理齐头并进。 DevClue 的“Uno”插件旨在提供简单无缝的基础设施配置和端到端管理。这包括:
根据 Gartner 的报告,到 2025 年,75% 的拥有平台团队的组织将提供自助式开发人员门户,以改善开发人员体验并加速产品创新。
IDP 的采用与组织的 DevOps、SRE 和平台工程实践的成熟度成正比。因此,成熟度指数越高,他们使用开发人员门户的可能性就越高。
Palo Alto Networks 的平台工程团队专注于并致力于通过管理其采用、路线图、从我们的工程团队收集反馈并推销其功能来不断创新 IDP 功能。
内部开发人员门户的创新洞察 — https://www.gartner.com/en/documents/4010078