本文最初发布于 Palo Alto Networks 工程博客。
我一直在思考,我在 Palo Alto Networks 公司的第一篇博客应该写什么,什么时候发表合适。我觉得,要回顾我领导云基础设施和平台工程的旅程和经验,现在就是一个完美的时间。
我于 2021 年 4 月加入 Palo Alto Networks,负责网络安全组织下云交付安全服务组织的生产工程团队,最近又承担了一个延伸角色,负责整个 NetSec 组织的基础设施平台。在这篇博文中,我将探讨下我们如何将生产工程服务转化为平台。首先,我将概要地介绍下我们的内部开发平台(IDP)。
让我们先快速了解一下 PAN IDP 的启动背景。以下是促使我们踏上这段旅程的两个主要因素:
一旦我们决定采用平台方法,接下来的挑战就是决策:是内部开发还是购买。经过仔细分析,我们决定针对 Palo Alto Networks 特有的用例专门构建一个。我们的理念不是重新发明轮子,而是设法利用开源项目来实现飞跃。我们的团队发现,我们可以从一个很棒的开源项目backstage.io开启我们的旅程。我们将后台 OSS 代码分叉,添加了必要的抽象,并将其命名为“Palo Alto Networks DevClues”。
我们实现的第一个用例是“服务目录”,用于帮助开发人员或 SRE 轻松快速地找到特定生产服务的详细信息。现在,经过一年半的发展,我们的 IDP 已经提供了相当多的处于不同采用阶段的服务,如下图所示:
该平台包括 4 类服务:资源管理、基础设施管理、生产管理和开发者门户。开发者门户(DevClues)是平台提供的所有服务的入口点(一站式商店)。例如,如果任何工程团队想要将他们的服务安装到可观察性类别下,他们就可以简单地登录到开发者门户网站,并使用安装插件(由可观察性团队贡献的自定义插件)来完成可观察性集成。
如今,开发者门户(DevClues)提供了 12 个插件和数十个服务模板,提高了整体的工程效率。我们将继续根据我们的工程需求构建更多的模板和插件。我还想指出的是,其中一些是由开发团队(即我们的客户)贡献的。因此,我们从第一天起就采用了内部开源模式(即内部外包)。
接下来,我将简要介绍下 Palo Alto Networks IDP 的 4 个服务类别,以及根据2022年高德纳发布的报告,这些能力与以下开发生命周期阶段的关系:
图 1:Palo Alto Networks IDP 概述(在 Gartner 报告的语境下)
现在,让我们分阶段看下相关的 IDP 功能。
发现与创建阶段涵盖了开发生命周期的初始部分,包括安装、培训、启动、本地开发等,如图 1 所示,所有这些功能都是 Palo Alto Networks“开发者门户”的一部分。
如前所述,DevClues 基于开源项目backstage.io。这是一个一站式商店,包含基础设施平台提供的所有内部服务。现在,我们将详细看下 DevClues 的每个功能。
内部开发者门户应该使开发人员在软件交付生命周期(SDLC)的所有阶段都能够轻松地执行第 0 天、第 1 天和第 2 天的活动。
图 2:Palo Alto Networks DevClues 首页
Palo Alto Networks DevClues 为开发人员提供了可以直接使用的服务模板,其中嵌入了新建软件应用程序、服务和基础设施组件的最佳实践。
该功能使开发人员能够轻松快速地搜索和查找生产服务(如 On Boarded into DevClues),包括:
图 3:服务目录中的服务概述
该功能使开发人员可以基于预定义的模板创建新的服务、基础设施组件或应用程序。目前,DevClues 为 Go、Python 和 React 应用程序开发提供了一套服务模板,为“GKE 集群启动”和“GitOps 安装”(借助 GitLab 和 argoCD)提供了基础设施组件配置模板。
这有助于开发人员了解如何以自助服务的方式最大限度地利用平台,并促进平台社区的发展,让来自不同服务团队的个人成为平台专家,帮助他们的团队实现自己的目标,而不必等待平台团队提供信息或帮助。其中包括:
为开发人员提供自助查找平台及其特性信息的方法,响应开发人员的提问,并自动帮助解决问题,其中包括:
为开发人员提供架构最佳实践:
DevClues 是使 Palo Alto Networks 开发人员能够构建内部工具和流程的门户。在 Palo Alto Networks,我们有以下插件:
集成与部署阶段包括将应用程序部署到非生产/生产环境、分布式系统集成、资源配置等。提供一个统一的仪表板,管理跨云和本地环境管理分布式基础设施。以下是当前提供的功能,它们分属于基础设施管理和生产管理两个类别。
在 Palo Alto Networks,我们构建了一个 DevClues 插件 Uno(如图 4),它可以帮助开发人员为使用 GitOps 的服务/应用准备和配置云资源和其他基础设施组件。这包括:
图 4:Uno —— 用于多云基础设施管理的 DevClues 插件
在资源和应用/服务运行上执行业务、运营和最佳实践策略。我们已经实现了一个基于 OPA(开放策略代理)的“控制平面”来帮助实现:
我们构建的用于管理基础设施资源的 DevClues 插件经过扩展后,可以轻松创建、配置和管理服务/应用环境,例如:
在 Palo Alto Networks,这项功能提供了一项服务,可以管理生产环境中的证书、秘密和配置同步,以便可以安全地:
这个阶段通过 DevClues 插件访问工具箱,获得自动化、监控、可观察性和事件管理等功能,实现连续操作。
在 Palo Alto Networks,运营与改进阶段的能力分布在三个类别中——生产管理、基础设施管理和资源管理。
监视和可观察性是 Palo Alto Networks 的关键生产工程服务之一。我们已经建立了一个名为“Garuda”的内部可观察性平台,使用了一些成熟的开源技术,如 Grafana、Grafana Mimir、Grafana Loki、Grafana Tempo 和vector.dev。我们很快将单独发表一篇博文,深入介绍 Garuda 及其能力。
Garuda 现在提供的功能包括:
我们为 Garuda 构建了一个 DevClues 插件(见下图 5),以便工程团队可以轻松地将他们的基础设施和服务/应用安装到“可观察性平台”。
图 5:DevClues 中的 Garuda 安装插件
监控和可观察性的主要挑战之一是不同资源类型(云、本地、K8s、VM、无服务器和裸金属)的复杂安装过程。通过这个插件,我们使安装过程尽可能地顺畅无停顿。
图 6:Garuda 代理安装
有效的事件管理是 SRE 最佳实践的一个关键方面,当影响业务的事件/中断发生时,我们可以及时提醒和通知工程师,并提供管理这些事件的工具,其中包括:
我们的 DevClues 事件分析插件提供了以下洞察:
根据最近的一项行业研究,30-50%的生产事故是重复的,并导致了大多数 SRE 工作。我们希望通过自动化来解决这个问题,因此建立了一个名为“Nutrix”的系统,即我们基于开源项目stackstorm构建的内部自动修复平台。
图 7:DevClues 中的 Nutrix 插件
同样,提升自动化应用的主要瓶颈之一是没有一个健壮的编辑框架,因此,我们在 DevClues Nutrix 插件中构建了编辑框架,如下所示:
图 8:DevClues 中的 Nutrix 自动修复编辑
仪表板利用可观察性和监控数据来诊断问题和调试运行中的系统,以减少 MTTR(平均解决时间),其中包括:
图 9:Garuda 主机 360 仪表板
图 10:Garuda 证书 360 仪表板
图 11:Garuda Kubernetes 360 仪表板
图 12:Garuda Kubernetes 成本洞察仪表板
管理身份信息,以及用户和工具对云资源和系统的访问。
下面是几个例子:
Palo Alto Networks 的信息安全团队负责定义和执行安全策略以及自动化验证和检查,但修复是工程团队的责任,其中包括:
在多云和混合云世界中,基础设施成本成了一个热门话题。毫无疑问,成本需要持续地监测、报告和优化。
在 Palo Alto Networks,我们开始从两个维度来解决这个问题,即自上而下和自下而上:
图 13:DevClues SKU 级的成本洞察
在云世界中,基础设施管理有两个重要的方面,即基础设施准备和配置。在 Palo Alto Networks,我们用 Terrform 标准化了基础设施准备,用 Ansible 标准化了配置管理。
开发人员应该用一种可伸缩且可靠的方式来管理应用程序的配置,就像我们对源代码或基础设施即代码(IaC)进行管理和版本控制那样。
为了更好地管理 Ansible 代码,我们采用了Ansible Tower的开源版本awx,帮助开发人员/SRE 标准化配置的部署、初始化、下发和审计。
在 Palo Alto Networks,资源和基础设施管理是密不可分的。DevClues 的 Uno 插件旨在提供简单流畅的基础设施准备和端到端管理,其中包括:
根据 Gartner 的报告,到 2025 年,75%拥有平台团队的组织将提供自助服务开发者门户,以改善开发体验并加速产品创新。
IDP 的采用与组织 DevOps、SRE 和平台工程实践的成熟度成正比。所以,成熟度指数越高,他们使用开发者门户的可能性就越高。
Palo Alto Networks 的平台工程团队致力于通过管理 IDP 采用、路线图、收集来自工程团队的反馈以及推广其功能来不断创新。
声明:本文为 InfoQ 翻译,未经许可禁止转载。
领取专属 10元无门槛券
私享最新 技术干货