本文档重点介绍了在塑造整体混合云和多云架构方面发挥关键作用的核心设计注意事项。全面分析和评估整个解决方案架构中的这些注意事项,涵盖所有工作负载,而不仅仅是特定工作负载。
Refactor
在重构迁移中,您可以修改工作负载以利用云功能,而不仅仅是修改工作负载以使其在新环境中工作。您可以针对性能、功能、费用和用户体验来改进每个工作负载。正如重构:迁移和改进中所强调的那样,在某些重构场景中,您可以在将工作负载迁移到云端之前对其进行修改。这种重构方法具有以下优势,尤其是在您的目标是将混合架构构建为长期目标架构时:
- 您可以改进部署过程。
- 通过投资持续集成/持续部署 (CI/CD) 基础架构和工具,您可以加快发布节奏并缩短反馈周期。
- 您可以将重构作为基础,构建和管理具有应用可移植性的混合架构。
为了顺利实施此方法,通常需要对本地基础架构和工具进行投资。例如,设置本地 Container Registry 并配置 Kubernetes 集群以容器化应用。在这种混合环境中,Google Kubernetes Engine (GKE) Enterprise 版会很有用。下一部分将详细介绍 GKE Enterprise。您还可以参阅 GKE Enterprise 混合环境参考架构,了解更多详情。
工作负载可移植性
在混合架构和多云架构中,您可能希望能够在托管数据的计算环境之间迁移工作负载。为了帮助在环境之间无缝移动工作负载,请考虑以下因素:
- 您可以将应用从一个计算环境迁移到另一个计算环境,而无需对应用及其运维模式进行重大修改:
- 应用部署和管理在各个计算环境中保持一致。
- 可见性、配置和安全性在各种计算环境中保持一致。
- 使工作负载可移植的能力不应与工作负载的云优先性质产生冲突。
基础架构自动化
基础架构自动化对于混合云和多云架构中的可移植性至关重要。自动创建基础架构的一种常见方法是使用基础架构即代码 (IaC)。IaC 涉及在文件中管理基础架构,而不是在界面中手动配置资源(例如虚拟机、安全群组或负载均衡器)。Terraform 是一种常用的 IaC 工具,用于在文件中定义基础架构资源。此外,借助 Terraform,您还可以在异构环境中自动创建这些资源。
如需详细了解可帮助您自动预配和管理 Google Cloud 资源的 Terraform 核心功能,请参阅 适用于 Google Cloud 的 Terraform 蓝图和模块。
您可以使用 Ansible、Puppet 或 Chef 等配置管理工具来建立通用部署和配置过程。或者,您可以使用类似 Packer 这样的映像定义工具,为不同的平台创建虚拟机映像。通过使用单个共享配置文件,您可以使用 Packer 和 Cloud Build 创建用于 Compute Engine 的虚拟机映像。最后,您可以使用 Prometheus 和 Grafana 等解决方案来帮助确保跨环境监控的一致性。
基于这些工具,您可以汇编一个通用工具链,如下逻辑图所示。此常见工具链抽象出计算环境之间的差异。它还可以统一预配、部署、管理和监控。
虽然常见的工具链可以帮助您实现可移植性,但它有以下几个缺点:
- 使用虚拟机作为通用基础很难实现真正的云优先应用。此外,仅使用虚拟机会导致您无法使用云端托管的服务。您可能会错失减少管理开销的机会。
- 构建和维护通用工具链会产生管理费用和运营成本。
- 随着工具链的扩展,它可能会因您公司独特的需求而变得复杂。这种复杂性的增加可能会导致训练费用增加。
在决定开发工具和自动化功能之前,请先探索您的云服务提供商提供的托管服务。如果您的提供商提供支持相同用例的托管服务,您就可以抽象出其中的一些复杂性。这样,您就可以专注于工作负载和应用架构,而不是底层基础架构。
例如,您可以使用 Kubernetes 资源模型,通过声明式配置方法自动创建 Kubernetes 集群。您可以使用 Deployment Manager Convert 将 Deployment Manager 配置和模板转换为 Google Cloud 支持的其他声明式配置格式(例如 Terraform 和 Kubernetes 资源模型),以便在发布时实现可移植性。
您还可以考虑自动创建项目以及在这些项目中创建资源。此自动化功能可帮助您采用基础架构即代码方法进行项目预配。
容器和 Kubernetes
使用云端管理的功能有助于降低构建和维护自定义工具链以实现工作负载自动化和可移植性的复杂性。不过,仅使用虚拟机作为通用基础很难实现真正的云优先应用。一种解决方案是改用容器和 Kubernetes。
当您将软件从一个环境移动到另一个环境时,容器可帮助您的软件可靠地运行。由于容器可将应用与底层主机基础架构解耦,因此有助于在混合云和多云等计算环境中部署应用。
Kubernetes 负责处理容器化应用的编排、部署、伸缩和管理。它是开源的,由 Cloud Native Computing Foundation 管理。使用 Kubernetes 可提供构成云优先型应用基础的服务。因为您可以在许多计算环境中安装和运行 Kubernetes,所以您还可以使用它在跨计算环境中建立通用运行时层:
- Kubernetes 在云或私有计算环境中提供相同的服务和 API。此外,使用 Kubernetes 的抽象级别远高于使用虚拟机时的抽象级别,这通常会转化为较少的基础工作并提高开发者的工作效率。
- 与自定义工具链不同,Kubernetes 被广泛用于开发和应用管理,因此您可以利用现有的专业知识、文档和第三方支持。
- Kubernetes 支持满足以下条件的所有容器实现:
- 支持 Kubernetes 容器运行时接口 (CRI)
- 已被业界采用
- 不依赖于任何特定的供应商
当工作负载在 Google Cloud 上运行时,您可以通过使用代管的 Kubernetes 平台(例如 Google Kubernetes Engine [GKE])来避免安装和运行 Kubernetes 的工作。这样可以帮助运维人员将重点从构建和维护基础架构转移到构建和维护应用。
您还可以使用 Autopilot,这是一种 GKE 运维模式,用于管理集群配置,包括节点、伸缩、安全性和其他预配置设置。使用 GKE Autopilot 时,请考虑您的伸缩要求及其伸缩限制。
从技术层面讲,您可以在许多计算环境中安装和运行 Kubernetes,以建立通用运行时层。但在实际操作中,构建和运行此类架构可能会带来复杂性。如果您需要容器级安全控制(服务网格),架构会变得更加复杂。
为了简化多集群部署的管理,您可以使用 GKE Enterprise 在任何位置大规模运行现代应用。GKE 包含强大的托管式开源组件,可保护工作负载、强制执行合规性政策,并提供深入的网络可观测性和问题排查功能。
如下图所示,使用 GKE Enterprise 意味着您可以将多集群应用作为舰队进行操作。
GKE Enterprise 提供以下设计选项,以支持混合架构和多云架构:
设计和构建本地或统一解决方案,以便将应用迁移到 GKE Enterprise 混合环境,从而获得类似云端的体验。如需了解详情,请参阅 GKE Enterprise 混合环境参考架构。
借助 GKE Multi-Cloud,您可以设计和构建解决方案,通过一致的治理、运营和安全状况来解决多云复杂性。如需了解详情,请参阅 GKE Multi-Cloud 文档。
GKE Enterprise 还提供类似环境的逻辑分组,可实现一致的安全、配置和服务管理。例如,GKE Enterprise 支持零信任分布式架构。在零信任分布式架构中,部署在本地或其他云环境中的服务可以通过端到端 mTLS 安全服务到服务通信在不同环境中进行通信。
工作负载可移植性注意事项
Kubernetes 和 GKE Enterprise 为工作负载提供了一个抽象层,可以隐藏计算环境之间的许多复杂性和差异。以下列表介绍了其中一些抽象:
- 应用可以通过最少的更改移植到不同的环境,但这并不意味着应用在两种环境中都能同样良好地运行。
- 底层计算、基础架构安全功能或网络基础架构的差异以及与依赖服务的接近度可能会导致性能大不相同。
- 在计算环境之间移动工作负载可能还需要您移动数据。
- 不同的环境可以有不同的数据存储和管理服务和设施。
- 使用 Kubernetes 或 GKE Enterprise 预配的负载平衡器的行为和性能可能会因环境而异。
数据移动
由于在计算环境之间大规模移动、共享和访问数据可能很复杂,因此企业级公司可能会犹豫不决是否要构建混合或多云架构。如果他们已经在本地或单个云端存储了大部分数据,这种犹豫可能会加深。
不过,Google Cloud 提供的各种数据迁移选项为企业提供了一整套全面的解决方案,可帮助他们迁移、集成和转换数据。这些选项可帮助企业以符合其特定用例的方式在不同环境中存储、共享和访问数据。最终,这有助于企业和技术决策者更轻松地采用混合云和多云架构。
在制定混合云和多云策略以及架构规划时,数据迁移是一项重要的考量因素。您的团队需要确定不同的业务应用场景以及支持这些场景的数据。您还应考虑存储类型、容量、易用性和移动选项。
如果企业针对受监管行业制定了数据分类,则该分类有助于确定特定数据类别的存储位置和跨区域数据传输限制。如需了解详情,请参阅敏感数据保护。敏感数据保护是一项全代管式服务,旨在帮助您发现、分类和保护数据资产。
如需了解从规划数据转移到使用最佳实践的完整流程,请参阅迁移到 Google Cloud:传输大型数据集。
安全
随着组织采用混合架构和多云架构,其攻击面可能会增加,具体取决于其系统和数据在不同环境中的分布方式。再加上不断变化的威胁形势,攻击面扩大可能会导致未经授权的访问、数据丢失和其他安全事件的风险增加。在规划和实施混合云或多云策略时,请仔细考虑安全性。
如需了解详情,请参阅 Google Cloud 的攻击面管理。
在构建混合架构时,将本地安全方法扩展到云端并不总是从技术上可行或可行。不过,硬件设备的许多网络安全功能都是云优先功能,并且以分布式方式运行。如需详细了解 Google Cloud 的云优先网络安全功能,请参阅云网络安全。
混合云和多云架构可能会带来额外的安全挑战,例如一致性和可观测性。每家公有云提供商都有自己的安全方法,包括不同的模型、最佳实践、基础架构和应用安全功能、合规义务,甚至安全服务的名称。这些不一致性可能会增加安全风险。此外,每家云服务提供商的责任共担模型也可能有所不同。请务必确定并了解多云架构中各个层级的确切职责划分。
可观测性对于从不同环境中获取数据分析和指标至关重要。在多云架构中,每个云平台通常都提供用于监控安全状况和错误配置的工具。不过,使用这些工具会导致数据孤岛化,从而无法在整个环境中构建高级威胁情报。因此,安全团队必须在工具和信息中心之间切换,才能确保云端安全无虞。如果没有对混合云和多云环境的全面端到端安全可见性,就很难确定漏洞的优先级并加以缓解。
如需全面了解所有环境的状况,请确定漏洞的优先级,并缓解您发现的漏洞。我们建议采用集中式公开范围模型。集中式可见性模型可避免在不同平台上手动关联不同的工具和信息中心。如需了解详情,请参阅混合云和多云环境的监控和日志记录模式。
在规划如何降低安全风险并在 Google Cloud 上部署工作负载时,为帮助您规划和设计云解决方案以实现安全性和合规性目标,请探索 Google Cloud 安全最佳实践中心和企业基础蓝图。
合规性目标可能会因行业特定法规以及不同区域和国家/地区不同的法规要求而异。如需了解详情,请参阅 Google Cloud 合规性资源中心。以下是构建安全的混合云和多云架构的一些主要建议方法:
制定量身定制的统一云安全策略和架构。混合云和多云安全策略应根据贵组织的具体需求和目标量身定制。
在实现安全控制措施之前,请务必了解目标架构和环境,因为每个环境都可以使用不同的功能、配置和服务。
考虑采用跨混合云和多云环境的统一安全架构。
标准化云设计和部署,尤其是安全设计和功能。这样可以提高效率,并实现统一的治理和工具。
使用多种安全控制措施。
通常,没有任何单一安全控制措施可以充分满足所有安全保护要求。因此,组织应采用分层防御方法(也称为深度防御)来组合使用多种安全控制措施。
监控和持续改进安全状况:贵组织应监控其不同的环境,以防范安全威胁和漏洞。还应努力不断改进其安全状况。
考虑使用云安全状况管理 (CSPM) 来识别和修复安全配置错误和网络安全威胁。CSPM 还提供跨混合云和多云环境的漏洞评估。
Security Command Center 是 Google Cloud 的内置安全和风险管理解决方案,可帮助识别错误配置、漏洞等问题。Security Health Analytics 是一款代管式漏洞评估扫描工具。这是 Security Command Center 的一项功能,可识别 Google Cloud 环境中的安全风险和漏洞,并提供相应的修复建议。
借助 Mandiant Attack Surface Management for Google Cloud,贵组织可以更好地了解其多云或混合云环境资产。该工具可自动发现来自多个云服务提供商、DNS 和扩展的外部攻击面的资产,让贵企业能够更深入地了解其生态系统。使用这些信息确定风险最高的漏洞和风险的修复优先级。
- 云安全信息和事件管理 (SIEM) 解决方案:有助于收集和分析来自混合云和多云环境的安全日志,以检测和响应威胁。 Google Cloud 的 Google Security Operations SIEM 可集中收集、分析、检测和调查您的所有安全数据,从而提供安全信息和事件管理服务。