65.9K
CodeProject 正在变化。 阅读更多。
Home

使用 ARM 模板和 Terraform 进行多云基础设施即代码(第一部分):多云 IaC 简介

emptyStarIconemptyStarIconemptyStarIconemptyStarIconemptyStarIcon

0/5 (0投票)

2022 年 6 月 22 日

CPOL

5分钟阅读

viewsIcon

4887

支持多云的好处以及它可能带来的困难。

一个云已无法满足所有需求。

如今,企业正朝着多云基础设施迈进,以应对高可用性、可靠的区域数据安全和治理等更大的挑战,但采用多云也会大大增加 DevOps 团队的基础设施复杂性。随着现代企业对多云基础设施的兴趣和投入日益增加,Azure 也通过 Azure Arc 拥抱了多云的未来。

Azure Arc 是微软的一系列技术,使企业能够轻松地保护和管理混合云和多云环境。它包括用于数据和服务器安全、监控以及部署到 Azure 数据中心以外的本地设置的工具。而在基础设施部署和管理方面,许多 DevOps 团队的关键工具是基础设施即代码 (IaC),它允许他们将应用程序扩展到全球成百上千台服务器。

究竟什么是多云?

简单来说,多云是指使用多个云环境(公共和/或私有,单一供应商或多供应商)来运行 Web 应用程序或服务。类似地,混合云将本地服务器与云服务器和工具结合起来。

应用程序可能希望使用多云基础设施的原因有很多。让我们谈谈一些常见的。

避免单一供应商或解决方案锁定

企业可以保持云无关性,这样它们就不会受制于仅一个云平台。对于企业来说,能够在供应商之间切换意味着与提供商更好地协商服务合同,因为企业可以比较价格、平台限制、路线图和维护计划。它还可以降低关键停机风险,并启用更好的灾难恢复计划。

提高可扩展性、可用性和风险缓解能力

位于多个云环境中可以使应用程序在新的全球区域托管,并减少延迟,提高可用性。多个提供商还可以增加黑客攻击或获得完全访问权限的难度,因为服务器分布在不同的数据中心,拥有不同的安全工具和监控。

区域要求和合规性

某些行业和企业也可能希望由于政府法规或客户需求,仅在本地或在经过认证的环境和区域托管数据。满足这些要求并确保其安全性可能只能通过混合云或在独立的、多云环境中托管应用程序和数据来实现。

虽然这不是多云用例的完整列表,但它应该能让你了解为什么企业可能想要或需要它。

什么是基础设施即代码?

基础设施即代码 (IaC) 是指作为应用程序跨云服务的配置蓝图的语法定义文件。它们将系统的后端架构简化为可读代码,并允许小型团队轻松地自动化和编排大型复杂服务器基础设施。

这些文件可以指定要部署的虚拟机、它们的配置(如操作系统和已安装的工具)、要连接的数据库和云服务、链接它们的全球区域和网络拓扑,甚至是可以运行应用程序的命令。在 Azure 等云服务上,IaC 使团队能够在几分钟内在一系列数百甚至数千台服务器上运行其代码,并自动化整个过程以保持系统和已部署代码的最新状态。从由前端站点和 SQL 数据库组成的小型 Web 应用到大型社交网络或流媒体服务,IaC 可以定义所有场景,并使后端系统更易于管理。

通过维护基础设施代码,代码本身会记录云资源,并使其能够进行增量更改、验证和更新。但是,云提供商之间没有统一的标准,不同的 IaC 语言支持不同的云平台,这在多云环境中引入了另一个复杂层。

多云基础设施即代码的挑战

不幸的是,让应用程序实现多云并非易事,不仅仅是添加更多云。运营多个云环境存在几个挑战,例如跨平台的成本核算。但现在,我们将重点关注 DevOps 团队通常用来管理它们的 IaC 工具所带来的挑战。

不同的工具和架构

每个云平台通常都有自己的工具集、IaC 语言、不同的用户和资源权限控制以及架构。将应用程序从一个平台迁移到另一个平台可能需要团队了解多种 IaC 语言和系统配置,并维护多个 IaC 代码库。在云环境之间保持一致性可能需要付出巨大的努力。

凭证和账户访问

使用多个云意味着需要多个账户来访问每个云。您必须拥有正确的凭证才能部署或管理它们,并且保持应用程序组件与适当的权限角色配置可能很复杂。

管理和配置

当服务器部署在多个云环境中时,如果没有额外的工具,您就必须管理每个云。要正确配置基础设施,您可能需要针对每个环境的专用工具。

从 Azure 到 Terraform 的多云

如果您已经将应用程序部署到 Azure,该怎么办?开发团队如何对其进行扩展并支持多云?

对于 Azure,Azure 资源管理器 (ARM) 模板通常是许多 DevOps 团队使用的基础设施即代码选择,因为它们快速方便——尤其是在与 Bicep 一起使用时。但是,正如名称所示,ARM 模板仅适用于 Azure。对于已经熟悉 Bicep 和 ARM 模板,并仔细配置了所有应用程序基础设施以在 Azure 上进行部署和运行的团队来说,似乎唯一的选择是维护多套基础设施代码,甚至完全放弃 ARM 模板。

幸运的是,HashiCorp 提供了一个流行的开源 IaC 解决方案,名为 Terraform,它可以提供帮助。Terraform 支持许多云提供商,DevOps 团队可以使用它来自动化基础设施任务,即使在多云环境中也是如此。而且,它可以部署 ARM 模板以及它自己的基础设施代码。

下一步是什么?

在本文中,您了解了 Azure Arc 和多云、采用多云的好处和挑战,以及 Terraform 如何帮助您为使用 ARM 模板部署在 Azure 上的现有基础设施添加多云支持。接下来,让我们通过一个使用 Terraform 部署简单多云基础设施的实践指南,将理论付诸实践。我们将在下一篇文章中做到这一点。

如果您想阅读更多关于基础设施即代码的内容,请查看本文。您可以在这里了解多云和混合云的概述并获得更多信息。

要详细了解如何在任何地方安全地保护、开发和操作基础设施、应用程序和 Azure 服务,请参阅我们的资源Azure Arc

© . All rights reserved.