自动执行应用交付和安全设备的部署和配置管理已成为近乎强制性的做法。 在 2017 年 IDG FutureScape报告中,自动化和多云管理被列为到 2021 年将对企业产生影响的一些关键举措之一。1 自动化为应用所需的基本安全性、优化和可用性服务的部署带来了规模、可靠性和集成,并使它们的交付成为精心策划的构建、测试和部署工作流的一部分,这些工作流正在成为应用部署的主导模型。
即使是添加新的虚拟服务器或池成员等基本任务的简单自动化也可以使操作为应用所有者或其他自动化系统提供自助服务功能,并腾出时间进行更有成效的工作,例如构建下一波自动化工具。
当组织开始采用多个云平台来提供 IT 服务时,自动化的需求变得更加重要。 当您尝试将服务部署到具有不同平台特征的多个位置时,自动化可以帮助减少增加的运营开销的影响并减少由于不熟悉新平台而导致的错误。
但是如何自动化以及自动化什么呢? 通过不同的操作模型、接口和语言,自动化软件可以在单个设备层工作,也可以作为更复杂的多系统工具工作。 基础设施即服务 (IaaS) 云平台提供自己的原生工具来部署虚拟基础设施和服务。 此外,F5 还提供一系列接口和编排选项。 虽然这些广泛的工具和选项使您有机会以最适合您组织的方式实现自动化,但选择正确的工具可能是一项艰巨的任务,并且复杂性和工具泛滥的风险是真实存在的。
在本文中,我们将概述自动化 F5 BIG-IP 设备(物理和虚拟)的部署、管理和配置的方法,以及如何选择适合您业务的路径的一些建议。
在交付应用服务的生命周期中有许多关键的自动化点。 根据您的基础设施模型和应用部署方法,您可能需要开发全部或仅其中几个。
如果您将服务部署到高容量、多租户物理或虚拟 BIG-IP 上,那么与部署、监控和更新它们支持的数百或数千个应用的应用服务配置相比,引导和入职活动的优先级就不是很高。
如果您正在查看一个部署模型,其中每个应用在多个环境中都有专用的 BIG-IP 实例 - 包括根据需要为测试和 QA 创建的潜在临时实例 - 那么自动化引导和入职流程与部署应用服务本身一样,都是关键路径的一部分。
无论您的环境如何,无论您需要自动化多少流程,都有一些关键主题需要考虑。
自动化涵盖一系列活动。 一方面是开发用 Bash、TMSH、Python 或其他语言编写的简单脚本,这些脚本可以在本地运行,以加快手动配置活动。 在另一个极端,是一个完整的“基础设施即代码”系统,它结合了源代码管理、工作流编排器和(潜在的)多个自动化工具,以创建一个系统,其中基础设施的配置由存储库中包含的文本文件定义和更改。 这两个极端之间存在许多不同的选项来帮助您管理 BIG-IP 平台的部署和配置。
大多数当前的 BIG-IP 部署都可以被视为可变的,这意味着我们可以预期它们的配置会随着时间的推移而改变。 这是因为 BIG-IP 平台主要部署为多租户设备,为多个应用提供服务。 随着新应用的部署(或现有应用的扩展或需要额外的服务),BIG-IP 的配置将进行相应的更新。 这种部署方法使基础设施团队能够管理一组集中式基础设施,从通用平台向应用提供服务。
然而,有时 BIG-IP 平台作为离散应用堆栈的一部分部署,其中特定 BIG-IP 的服务与特定的应用或服务绑定。 在这种情况下,我们可以将 BIG-IP 配置视为不可变的;也就是说,配置是在启动时安装的,或者作为软件映像的一部分,并且在 BIG-IP 实例的生命周期内不会改变。 配置更改是通过改变软件映像或启动代理脚本内容,然后重新部署来实现的。 这种模式通常被称为“核打击与铺路”。 虽然总体上不太常见,但新的 BIG-IP 许可模式可用于支持每个应用程序实例、增强的许可工具以及F5 云库(一组 Node.js 脚本和库,旨在帮助您在云中使用 BIG-IP)等工具,这使得这种部署模型成为需要应用具有紧密绑定、隔离的代码和基础设施堆栈的组织的可行选择。
自动化接口如何向消费者展示有两种概念模型。 最常见的“第一波”自动化模式倾向于命令式模型。 在命令式自动化模型中,自动化消费者通常需要知道他们想要实现的目标,以及实现目标的明确步骤(通常通过 API 调用)。 这通常会将理解高级服务的配置细节的负担——以及将服务与自动化工具集成的额外复杂性和努力——放在消费者身上。 这类似于在要求制作三明治时指定制作三明治所需的每一个操作,而不是仅仅要求制作三明治并期望三明治制作者知道制作三明治所需的操作(和操作顺序)。
相比之下,声明式接口允许消费者(人类或机器)通过询问他们想要的东西来创建服务。 不需要详细了解所有所需的步骤,因为自动化目标具有预先配置的工作流或服务模板,可以根据所需的结果创建配置。 虽然声明式接口涉及稍微复杂的初始设置,但是一旦构建了合适的服务模板,这种复杂性就会被操作的简单性所抵消。 总的来说,这使它成为构建自动化系统的首选机制。
您需要考虑的另一个决定是,是否应从第三方工具直接向需要更改的设备发出自动化 API 调用,还是通过其他管理工具发出自动化 API 调用。 管理工具可以抽象和简化操作,并且可以提供额外的控制和日志记录层,而不是直接连接到管理实体。 然而,在快速进行更改的能力至关重要的情况下,您需要确保管理层具有高度可用性。
BIG-IP 设备通常通过 REST API 实现自动化,该 API 通过记录的模式公开了大部分 BIG-IP 功能。 F5 提供的 Ansible 等自动化工具模块大量使用了 REST API。添加iControl LX功能还允许创建用户定义的 API 端点,该端点可以通过单个 API 调用执行多步骤操作。
自动化 BIG-IP 配置的另一种常见方法是使用启动代理,它在启动时运行并可以获取外部信息来配置 BIG-IP 平台。 启动代理通常用于对“入职”设备执行初始配置,并且可以从第三方站点(如 GitHub 或您自己的存储库)获取其他脚本和配置文件。 启动代理还可用于完全配置 BIG-IP 平台,特别是当您选择固定的每个应用程序配置时。
最常见的启动配置是cloud-init ,它在所有 BIG-IP VE 映像中启用(Microsoft Azure 除外),但它最适合在 AWS 和 OpenStack 部署中使用。 除了 cloud-init 之外,F5 还提供了一系列云启动库来帮助在启动时配置 BIG-IP。
如果您选择使用启动代理来配置平台启动后,请特别注意管理故障。 如果使用外部源,这一点尤其重要,特别是当实例可能作为扩展事件的一部分启动时。 如果外部资源不可用,系统将如何表现? 是否会产生更多的“僵尸”设备来满足需求?
在某些情况下,自动化系统可以充当用户并执行 CLI 命令。 虽然这有时可以解决一些 API 调用可能不完整的问题,但总的来说,支持的难度和解决方案的脆弱性使其成为最后的手段。
模板和剧本可以创建自动化部署并构建具有一定程度标准化的基础设施。 适当程度的标准化可以使您的基础设施更加健壮和更具可支持性。 精心创建的模板提供了声明式接口,其中请求实体(用户或机器)只需要知道他们所需的属性,而不是实现细节。 严格通过模板进行部署并仅通过更正模板进行补救可以带来更高质量的服务,因为问题通常只需要修复一次。 服务从新模板重新部署,对模板所做的更新可防止同一问题再次出现。
平台集成工具将 BIG-IP 服务的配置与私有云或容器管理系统等平台联系起来。 该机制在不同平台和实现之间有所差异,但一般分为三种模型:
F5 自动化工具链产品系列包括基本的自动化和编排构建块,使您能够将 F5 BIG-IP 平台集成到常见的自动化模式中,例如 CI/CD 工具链。
F5 自动化工具链包含以下关键组件
自动化工具链系列旨在管理应用服务的交付生命周期,从平台部署(通过云模板)到入职、服务配置以及用于保证应用性能的高级遥测和日志记录。
这个不断增长的支持工具系列代表了 F5应用服务自动化的未来方向 - 但这并不意味着其他集成不存在或不受支持 - 请参阅本文档的“其他自动化工具”部分。
F5应用s服务 3 扩展 (AS3) 提供了一种简单而一致的方法,通过声明性 REST API 在 BIG-IP 平台上自动部署第 4-7 层应用服务。AS3 使用以 JSON 文档表示的定义明确的对象模型。 声明式接口使管理 F5应用服务部署变得简单且可靠。
图表: AS3 架构
AS3 扩展接收并分析声明,并进行适当的 iControl API 调用以在目标 BIG-IP 上创建所需的最终状态。 该扩展可以在 BIG-IP 实例上运行,也可以通过 AS3 容器运行 - AS3 容器是一个运行 AS3 扩展的单独容器/VM,然后对 BIG-IP 进行外部 API 调用。
Declarative Onboarding 扩展提供了一个简单的界面,使 F5 BIG-IP 平台从初始启动后就可以随时为应用部署安全和流量管理。 这包括许可和配置等系统设置、VLAN 和 Self IP 等网络设置以及集群设置(如果您使用多个 BIG-IP 系统)。
上线流程完成后,可以使用您选择的任何自动化(或手动)流程来部署应用服务。
Declarative Onboarding 使用与 AS3 架构一致的 JSON 架构,并且具有类似的架构。 声明式入职培训以 TMOS 独立 RPM 的形式提供,在入职阶段的第一步中安装在新启动的 BIG-IP 上。
BIG-IP 是一个强大的应用、安全和网络遥测生成器。 遥测流扩展提供了一个声明式接口,用于配置向第三方消费者的统计数据和事件流,例如:
与自动化工具链系列的其他成员一样,配置是通过使用简单、一致的 JSON 模式的声明式接口进行管理的。
API 服务网关是一个 Docker 容器映像,允许自定义 iControl LX 扩展在独立于 TMOS 的平台中运行。 这可以通过将管理操作从各个 BIG-IP 平台中抽象出来来帮助您扩展和管理 F5 部署。
云模板使用公共云和私有云的部署自动化功能来配置和启动 BIG-IP 虚拟设备。
F5 目前已支持以下云的模板:
F5 正在积极开发云模板以覆盖更广泛的部署场景 - 请通过相关的github存储库提交问题或拉取请求。
应用服务只是创建功能性应用的技术堆栈中的一层。 集成、构建和部署所有组件,使应用从代码提交到运行部署和监控涉及大量相关步骤,这些步骤需要按照正确的顺序执行。 自动化此任务是编排工具的工作,它创建协调任务和工具的工作流管道。
大多数管道都以源代码存储库开始,该存储库保存应用、测试和基础设施配置的代码。
借助 AS3、云模板和 Declarative Onboarding 等工具,您可以将构建和配置application服务所需的所有配置信息存储为部署管道的一部分。
在使用多租户长寿命 BIG-IP 硬件或软件平台的架构中,您只需要将 AS3 配置作为应用程序代码存储库的一部分进行管理。 相反,在您想要作为部署过程的一部分按需启动专用实例的情况下,管理模板和声明式入职声明应该成为应用存储库的一部分。
虽然我们无法涵盖所有可以想到的自动化或编排工具,但以下列出了 F5 客户使用的最常见工具、用例和功能。
语言整合
语言 |
地位 |
示例和来源 |
Python | F5 贡献 | https://github.com/F5Networks/f5-common-python |
去 | 用户贡献 |
https://github.com/f5devcentral/go-bigip |
PowerShell |
支持 F5 |
https://devcentral.f5.com/wiki/icontrol.powershell.ashx |
配置管理和基础设施自动化工具
工具 |
地位 |
示例和来源 |
Ansible |
F5 贡献 |
https://github.com/F5Networks/f5-ansible |
地形 |
F5 贡献 |
https://github.com/f5devcentral/terraform-provider-bigip |
木偶 |
F5 贡献 |
https://github.com/f5devcentral/f5-puppet |
厨师 |
用户贡献 |
https://github.com/target/f5-bigip-cookbook |
SaltStack |
第三者 |
https://docs.saltstack.com/en/latest/ref/runners/all/salt.runners.f5.html |
基础设施模板系统
平台 |
地位 |
示例和来源 |
AWS |
支持 F5 |
https://github.com/F5Networks/f5-aws-cloudformation |
Azure |
支持 F5 |
https://github.com/F5Networks/f5-azure-arm-templates |
谷歌 |
支持 F5 |
https://github.com/F5Networks/f5-google-gdm-templates |
OpenStack |
支持 F5 |
https://github.com/F5Networks/f5-openstack-hot |
启动代理和云脚本
云初始化
云库
https://github.com/F5Networks/f5-cloud-libs
平台集成
容器管理平台
平台 |
地位 |
示例和来源 |
Kubernetes |
支持 F5 |
https://github.com/F5Networks/k8s-bigip-ctlr |
Pivotal Cloud Foundry |
支持 F5 |
https://github.com/F5Networks/cf-bigip-ctlr |
马拉松 |
支持 F5 |
https://github.com/F5Networks/marathon-bigip-ctlr |
红帽 OpenShift |
支持 F5 |
私有云平台
平台 |
地位 |
示例和来源 |
OpenStack(LBaaS) |
支持 F5 |
https://github.com/F5Networks/f5-openstack-lbaasv2-driver |
OpenStack(Heat) |
支持 F5 |
https://github.com/F5Networks/f5-openstack-hot |
VMWare(vRO) |
第三者 |
https://bluemedora.com/products/f5/big-ip-for-vrealize-operations/ |
上述工具和集成代表部署和配置 BIG-IP 平台以提供应用可用性、安全性和扩展服务的自动化方式。 这些服务虽然必不可少,但只是全栈应用部署的一部分。 以协调和测试的方式创建包含服务器、数据、编译的应用代码和基础设施的完整应用堆栈需要的不仅仅是一个简单的自动化工具。
您需要一个更高级别的编排工具——具有相关的工作流程和与多个自动化系统的集成。 这些工具最常用于持续集成/持续交付(CI/CD)工作实践,所有实际实施都需要自动化。 尽管存在许多编排工具,但 Jenkins 可能是最常见的,并且有可用的示例工作流程展示如何使用 Jenkins、F5 和 Ansible 将 F5 基础设施即代码功能纳入 CI/CD 工作流程中。 然而,一般来说,编排工具将通过其中一种配置自动化工具来实际进行更改和部署服务。
BIG-IP 平台需要许可才能运行,因此将许可纳入自动化的关键路径上会很有帮助。 在高度动态的环境中,BIG-IP 虚拟设备可能需要快速扩大或缩小,或者为了测试和开发目的而创建,因此应该仔细考虑许可模式。
在公共云中,一种途径是使用 BIG-IP 的公用事业计费版本(可通过云市场获得)。 公用事业计费实例将自行许可,费用将通过云提供商按使用付费或按时间承诺的方式收取。
另一种选择是使用通过订阅(或永久)购买的可重复使用许可证池以及F5 BIG-IQ 许可证管理器,这将允许您从池中分配和撤销许可证。
您可以通过启动代理和 API 调用自动执行许可步骤,这将需要对 F5 许可证服务器进行出站 Internet 访问(即使是云平台中的实用程序许可证也是如此)。
根据您的组织,选择正确的自动化和编排工具可能非常容易,也可能是一项艰巨的任务。 如果您已经采用了其他组件的工具或方法,只需将 BIG-IP 集成到系统中,那么这很容易。 即使没有集成到特定工具中,丰富的 iControl REST API 与 iControl LX 功能和 cloud-init 相结合,也可以将 BIG-IP 集成到现有的自动化工具中相对简单(尤其是与 iApp 模板结合使用时,可以使用单个 API 调用来创建复杂的配置)。
然而,如果从头开始,事情可能会变得更加复杂。 就像选择任何其他解决方案一样,了解您的要求应该放在首位。 虽然本文无法为您列出您的需求清单,但这里有一系列问题和建议,可帮助您进行评估
自动化模型: 对于您的编排消费者来说,声明式模型的交互将变得更加简单。 消费者只需要知道他们想要什么,而不需要知道实现目标的所有程序步骤。 F5 自动化工具链系列将代表未来绿地站点的“模型”部署。
潜在的平台和环境: 容器和一系列云平台不可避免地会成为应用基础设施的关键部分——请做好相应的规划。
技能: 您是否已经掌握一些底层技术? 请记住,这些技能可能存在于您的部门之外,但存在于您的整个企业之内。 如果是这样,选择使用您的组织已经采用的语言的工具可能很有意义。
可支持性: 仅构建您可以支持的系统。 这看起来很明显,但成功的关键在于选择您可以在组织内提供的复杂程度,以便您可以最大限度地发挥自动化的优势,而不会造成过多的运营开销。
提高IT系统自动化程度是不可避免的。 对关键应用交付和安全服务采取战略性方法将确保您的组织部署的应用保持安全和可用。 自动化还可以帮助减少您的运营开销,尤其是在多个平台和公共云中工作时。
选择正确的自动化系统可能具有挑战性,理想情况下应该通过协作和整体努力来完成,同时考虑您可用的技能组合以及您支持所构建系统的能力。 无论您选择哪种解决方案,您都可以确信 BIG-IP 平台和 F5 专业知识将帮助您提供应用所依赖的企业级服务,无论它们部署在何处。
关于 F5 支持的说明。 F5 支持多个但不是全部的模板和工具。 当软件在 Github 上可用时,支持的代码仅在 F5 存储库中的“支持”文件夹中找到。 其他软件将在相关自述文件中定义支持政策。