博客

F5 星期五: 使用 F5 AS3 进行代码配置

Lori MacVittie 缩略图
洛里·麦克维蒂
2018 年 8 月 24 日发布
  • 通过 AddThis 分享
配置为代码头

多年来,控制平面的可编程性一直由 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 并启动配置过程。 

Webhook 集成

您可以在 GitHub 上下载最新版本的 AS3 。 有关部署 AS3 扩展以及示例 AS3 配置的文档可在此处获得

Webhook 原型由首席技术官办公室的开发倡导者Nathan Pearce开发。 要了解更多将 BIG-IP 与 CI/CD 和遥测管道集成的原型和示例,您可以关注 GitHub 上的NathanF5 Networks 。