自动执行应用交付和安全设备的部署和配置管理已成为近乎强制性的做法。 在 2017 年 IDG FutureScape报告中,自动化和多云管理被列为到 2021 年将影响企业的一些关键举措之一。 自动化为应用所需的基本安全性、优化和可用性服务的部署带来了规模、可靠性和集成,并使它们的交付成为精心策划的构建、测试和部署工作流的一部分,而这些工作流正逐渐成为应用部署的主导模型。
即使是添加新的虚拟服务器或池成员等基本任务的简单自动化也可以使操作为应用所有者或其他自动化系统提供自助服务功能,并腾出时间进行更有成效的工作,例如构建下一波自动化工具。
当组织开始采用多个云平台来提供 IT 服务时,自动化的需求变得更加重要。 当您尝试将服务部署到具有不同平台特征的多个位置时,自动化可以帮助减少增加的运营开销,并减少由于不熟悉新平台而导致的错误。
但是如何自动化以及自动化什么呢? 通过不同的操作模型、接口和语言,自动化软件可以在单个设备层工作,也可以作为更复杂的多系统工具工作。 基础设施即服务 (IaaS) 云平台都提供自己的原生工具来部署虚拟基础设施和服务。 此外,F5 还提供一系列接口和编排选项。 虽然这些广泛的工具和选项使您有机会以最适合您组织的方式实现自动化,但选择正确的工具可能是一项艰巨的任务,并且复杂性和工具泛滥的风险是真实存在的。
在本文中,我们将概述自动化 F5 BIG-IP 设备(物理和虚拟)的部署、管理和配置的方法,以及如何选择适合您业务的路径的一些建议。
自动化涵盖一系列活动。 一方面是开发用 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。除了提供每个设置的命令式接口外,REST API 调用还可用于启动 F5 iApp 模板,其中用于配置 iApp 服务的值作为 JSON 负载在 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 服务,例如使用 F5 用作OpenShift 容器平台路由器或将 F5 与OpenStack 负载平衡即服务 (LBaaS)系统一起使用。 使用这些机制几乎不需要改变操作程序,因为使用平台原生接口来配置服务,并且所提供的驱动程序和其他软件将平台配置指令无缝地转换为 F5 配置。 但是请记住,只有通过平台原生界面提供的功能才可以轻松部署。
另一种常见的集成方法是让软件模块(例如 Kubernetes 和 Mesos 的容器连接器)订阅平台内的事件,然后根据事件修改配置。 您可以通过标记或标注需要服务的应用来选择要部署的事件和服务,并配置连接器软件以监控具有所需标签的事件。
许多私有云平台都有专为自动化而设计的管理系统。 例如,VMware 有几种管理和集成工具,包括 vRealize Orchestrator (vRO),其中有一个用于 BIG-IP 配置的第三方插件。 其他示例包括OpenStack HEAT模板系统的插件。
虽然服务发现不是一个完全自动化的解决方案,但它是一种将 BIG-IP 配置与环境变化相结合的简单而强大的方法。 服务发现通过 API 定期轮询云系统来检索资源列表,并相应地修改 BIG-IP 配置。 这在资源配置为自动扩展组的环境中尤其有用,因为扩展后端计算资源需要负载均衡器了解新资源。 服务发现组件随适用于AWS和Azure的 F5 云自动扩展解决方案一起提供。
虽然我们无法涵盖所有可以想到的自动化或编排工具,但以下列出了 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 支持2 |
https://github.com/F5Networks/f5-aws-cloudformation |
Azure |
F5 支持1 |
https://github.com/F5Networks/f5-azure-arm-templates |
谷歌 |
F5 支持1 |
https://github.com/F5Networks/f5-google-gdm-templates |
OpenStack |
F5 支持1 |
https://github.com/F5Networks/f5-openstack-hot |
启动代理和云脚本
云库
https://github.com/F5Networks/f5-cloud-libs
平台集成
容器管理平台
平台 |
地位 |
示例和来源 |
Kubernetes |
F5 支持1 |
https://github.com/F5Networks/k8s-bigip-ctlr |
马拉松 |
F5 支持1 |
https://github.com/F5Networks/marathon-bigip-ctlr |
CloudFoundry |
F5 支持1 |
https://github.com/F5Networks/cf-bigip-ctlr |
私有云平台
平台 |
地位 |
示例和来源 |
OpenStack(LBaaS) |
F5 支持1 |
https://github.com/F5Networks/f5-openstack-lbaasv2-driver |
OpenStack(Heat) |
F5 支持1 |
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 私有云解决方案包是获取在多种私有云环境中提供 F5应用服务所需的技术和服务的简便方法。 这些软件包将软件、硬件和专业服务捆绑在一起,为许多私有云平台创建交钥匙、经过验证的解决方案。 使用私有云解决方案包可以为您提供可复制到其他平台的模型部署,从而在多个环境中创建更加统一、一致的应用交付和安全服务。
IT自动化水平的提高是不可避免的。 采取战略方法来提供关键的应用交付和安全服务将确保您的组织部署的应用保持安全和可用。 自动化还可以帮助减少您的运营开销,尤其是在多个平台和公共云中工作时。
选择正确的自动化系统可能具有挑战性,理想情况下应该通过协作和整体努力来完成,同时考虑您可用的技能组合以及系统的支持性。 无论您选择哪种解决方案,您都可以确信 BIG-IP 平台和 F5 专业知识将帮助您提供应用所依赖的企业级服务,无论它们部署在何处。