Webhook 最常用于简化两个应用之间的通信,但也可用于自动化基础架构即代码(IaC)工作流以及启用 GitOps 实践。
什么是基础架构即代码(IaC)?
基础架构即代码(IaC)
是通过代码(而非手动流程)来管理和置备基础架构的方法。版本控制是 IaC 的重要组成部分,配置文件应像任何其他软件源代码文件一样处于源代码的控制之下。以基础架构即代码方式部署还意味着基础架构可被划分为若干模块化组件,然后通过自动化以不同的方式进行组合。
借助 IaC 实现
基础架构置备
的自动化,意味着开发人员无需再在每次开发或部署应用时手动置备和管理服务器、操作系统、存储及其他基础架构组件。将基础架构的配置和部署以代码形式定义下来,可供置备时有模板可循。这一过程仍然可以手动完成,但也可以利用企业级预期状态引擎(如
红帽® Ansible® 自动化平台
)实现流程的自动化。
什么是 GitOps?
GitOps
通常被认为是 IaC 的演变,它是一种通过 Git(一种开源版本控制系统)来管理基础架构和应用配置的战略方法。遵循 GitOps 实践时,开发人员将 Git 用作声明性基础架构和应用的单一数据源,并通过 Git 来拉取请求以实现基础架构置备和部署的自动管理。Git 存储库包含系统的完整状态,因此,更改记录既可查看也可审计。
Webhook 发挥着什么样的作用?
Webhook 可减少实施和管理以 Git 为中心的部署管道所需的步骤,且可用于自动启动整个 IaC 工作流。在 GitOps 环境中,Git 存储库充当可信来源,Webhook 发挥的作用与它在 2 个应用之间所起到的作用相同。被特定事件触发后,某个 API 会将有效负载发送至另一个 API。不同之处在于触发 Webhook 的事件类型以及接收方如何处理有效负载。
在这种情况下,Git 存储库充当的是服务器应用的角色,而预期状态引擎(负责管理基础架构的状态)则充当客户端应用。Webhook 可用于在每当存储库发生更改时,向预期状态引擎发出通知。如果某段代码在更新后被推送到存储库,该事件便会触发 Webhook。接着,存储库自动将有效负载发送到预期状态引擎的 Webhook 地址,通知代码已更改。
如果预期状态引擎支持自动化,这些 Webhook 还可以启动 IaC 工作流以将代码更改转化为自动化操作。例如,系统管理员可以设置每当收到 Webhook 的有效负载时都运行的自动化操作,从而自动在其托管的主机上应用新的代码更改,然后将其恢复到默认状态。这种通过 Webhook 触发自动化的方法可以延伸至其他 IT 操作而无需人工干预,进而实现事件驱动型自动化流程。
唯一的不同之处在于可信来源,Webhook 可以将预期状态引擎连接到第三方工具,以监控特定事件的来源,而非将预期状态引擎连接到依靠人工来推送代码更新的 Git 存储库。一旦这些事件源检测到目标事件并触发 Webhook,有效负载便可以启动自动化,在一天中的任何时间都可以立即执行操作来响应事件,无需 IT 人员执行任何操作。