多年来,控制平面的可编程性一直由 API 主导。 从 F5 开始,这意味着 iControl。 iControl 首先作为 SOAP 接口,然后作为 REST,为 NetOps 提供了其名称所暗示的功能:控制 BIG-IP 配置的各个方面。
这种方法不会消失。 API 提供了许多组织管理其应用服务部署所需的精细控制。 它们也是与合作伙伴和新环境进行融合的关键。
这并不意味着 API 是实现 BIG-IP 自动化运行的“唯一正确方法”。 事实上,在采用更连续的方法部署应用和应用服务的过程中,一种替代方法已经出现。 该方法是声明性的,其中操作员描述配置最终状态并将实施责任转移给目标系统。
采用声明式配置方法的原因有很多,其中最重要的一点是它与基础设施即代码和持续部署等 DevOps 方法保持一致。 这是 F5 AS3 背后的目标 - 提供一个声明式接口,减少对 API 的依赖并增强实现完全自动化、持续部署管道的能力。 将其称为“配置即代码”更为合适,因为我们实际上并没有像术语所暗示的那样从代码构建基础设施。
AS3 是一种声明性格式,使用 JSON 键值对来描述 BIG-IP 配置。 从虚拟 IP 到虚拟服务器,再到所需的成员、池和节点,AS3 提供了一种简单、可读的格式来描述配置。 一旦您获得了配置,所需要做的就是将其发送到 BIG-IP, AS3 扩展将很乐意接受它并执行必要的命令,将其转变为功能齐全的、已部署的 BIG-IP 配置。
bigip.conf中的 VIP 和池描述的示例翻译为AS3声明:
bigip配置文件 |
AS3 声明 |
ltm virtual /Common/serviceMain { 目标 /Common/10.0.1.10:80 ip-protocol tcp 掩码 255.255.255.255 池 /Common/web_pool 源 0.0.0.0/0 转换地址已启用 转换端口已启用 } ltm pool /Common/web_pool { 成员 { /Common/192.0.1.10:80 { 地址 192.0.1.10 } /Common/192.0.1.11:80 { 地址 192.0.1.11 } } 监视器 /Common/http } |
“serviceMain”:{ “类”: “Service_HTTP”, “virtualAddresses”: [ “10.0.1.10” ], “pool”:“web_pool” } “web_pool”: { “class”: “池”, “监视器”: [ “http” ], “成员”: [ { “服务端口”: 80, “服务器地址”: [ “192.0.1.10”, “192.0.1.11” ] } ] } |
以这种方式描述 BIG-IP 配置的能力使操作人员能够采用配置即代码方法来部署应用服务。 通过利用存储库,我们可以自动提取 AS3 配置进行部署。 除了自动化用途之外,存储库还提供了一种更现代、更易于集成的方式来版本化和管理配置,并在配置出现问题时实现快速回滚。
例如,使用 GitHub 的 Webhook 功能,我们可以在提交新的/更新的 AS3 配置时自动启动部署。 为此,我们需要一个Webhook 服务器等待新服务定义(AS3)已提交的通知。 这些通知以钩子的形式出现,钩子是一个包含有关事件信息的 JSON 对象。 一旦收到,Webhook 服务器就会解析该钩子并从 GitHub 检索引用的 AS3 并启动配置过程。
您可以在 GitHub 上下载最新版本的 AS3 。 有关部署 AS3 扩展以及示例 AS3 配置的文档可在此处获得。
Webhook 原型由首席技术官办公室的开发倡导者Nathan Pearce开发。 要了解更多将 BIG-IP 与 CI/CD 和遥测管道集成的原型和示例,您可以关注 GitHub 上的Nathan和F5 Networks 。