如何使用Kubernetes构建云原生平台

开发者门户、GitOps、最佳实践。

译自 How to Build Cloud Native Platforms with Kubernetes,作者 Piotr。

简介

平台工程专注于通过创建和维护称为平台的内部软件产品来赋能开发人员和组织。在本博客中,我们将探讨平台是什么、它们为何重要,并揭示创建和维护架构良好的平台的最佳实践。

此内容对平台工程师、架构师、DevOps 专家或任何好奇平台如何推动开发创新和效率的人员都很有价值。

了解平台类别:绘制地形图

与 DevOps 类似,平台工程难以简洁地定义平台。了解平台是什么的一个好方法是列出各种类型的平台及其特征。

  • 业务即平台:考虑 Uber,整个产品是一个连接用户和司机的平台。此平台创建了一个生态系统,企业在其中运营,用户参与其中,并且交互无缝发生。
  • 特定于领域的平台:这些平台为其他应用程序提供跨领域功能。一个示例可能是 Web 前端、移动应用程序和其他服务使用的地理位置 API。
  • 与领域无关的平台:这些平台作为开发人员的基本构建模块,提供数据库管理、云存储和用户身份验证等基本工具。AWS 或 Azure 等云平台提供了无数数字产品所依赖的基础设施和服务,并且在设计我们自己的云原生平台时是一个很好的心理模型。

平台图景非常广泛且多样化。从以业务为中心的模型到专门的领域平台和面向开发人员的多功能工具,每个平台都在数字生态系统中发挥着至关重要的作用。

在本博客中,我们将重点关注提供基础设施的与领域无关的平台

云原生平台的案例

云原生是关于如何创建和部署应用程序,而不是在哪里。—— Priyanka Sharma

云原生平台提供了一个基础,允许以灵活性设计应用程序,在很大程度上使它们与环境无关。架构良好的平台提供几个关键优势:

  • 简化的基础设施管理:基础设施供应和管理以一种使开发人员能够更快地移动而又不影响安全性和合规性要求的方式进行抽象。
  • 提高开发效率:设计良好的平台应提高开发人员的生产力,改进指标,例如降低首次提交时间,改进 事件到解决时间 或减少 新开发人员入职时间
  • 内置可扩展性和可靠性:成功的平台带来了不属于核心开发工作的一部分但对产品成功至关重要的元素。这些是:可观察性、可扩展性、自动回滚、集成身份验证等等。

自助服务门户

自助服务门户是一个用户友好的界面,允许用户独立访问和管理资源,使开发人员和用户能够在没有 IT 支持的情况下创建、配置和部署资源。这简化了工作流,加快了项目时间表,并提高了生产力。

例如 Backstage,由 Spotify 开发,和 Port 为管理开发人员工具和服务提供可定制的界面,确保高效且一致的交互。这些门户体现了自助服务的精髓,支持快速、自主的操作,从而减少瓶颈并促进开发过程中的敏捷性。

编程 API

编程 API 是云原生平台的支柱,支持与平台服务和功能的无缝交互。这些 API 允许开发人员自动化任务、集成不同服务和构建复杂的工作流,从而提高跨环境的效率和一致性。

API 提供对基本平台功能的编程访问,允许开发人员自动化重复性任务并简化操作。它们支持各种传输机制,例如 RESTHTTPgRPC,在服务通信方式上提供灵活性。例如,基于 Kubernetes 资源模型 的 API 使开发人员能够管理容器化应用程序,而 AWS SDK 促进与各种云资源的交互。通过利用编程 API,平台确保开发人员能够高效地构建、部署和管理应用程序,从而推动生产力和创新。

自动化工作流

自动化工作流对于云原生平台中的配置和部署流程至关重要。它们确保任务以一致且高效的方式执行,最大程度地减少人为错误并提高生产力。

这些工作流的关键是 CI/CD 管道,它可以自动执行应用程序开发的构建、测试和部署阶段。诸如 Argo CDFlux 等工具支持 GitOps 实践,其中基础设施和应用程序更新通过 Git 存储库进行管理。通过利用自动化工作流,平台可以确保快速、可靠的部署,保持跨环境的一致性,并加速整体开发过程。

监控和可观测性

监控和可观测性工具提供了对云原生平台性能和运行状况的关键见解。这些工具有助于及早发现问题、了解系统行为并确保应用程序平稳运行。

著名的工具包括用于收集和查询指标的 Prometheus、用于可视化数据和创建仪表板的 Grafana 以及用于跟踪和可观测性的 OpenTelemetry。它们共同支持对资源进行主动管理、快速解决问题以及全面了解系统性能。通过集成这些工具,平台可以保持高可用性和性能,确保无缝的用户体验。

安全和治理控制

集成的安全和治理控制对于维护合规性并在云原生平台中保护敏感数据至关重要。这些控制确保平台操作符合安全策略和监管要求。

诸如 OPA GateKeeperKyvernoFalco 等工具在执行安全策略、管理配置和检测异常方面发挥着至关重要的作用。OPA GateKeeper 和 Kyverno 帮助执行策略和合规性,而 Falco 专门用于运行时安全和入侵检测。通过结合这些工具,平台可以确保强大的安全性、维护合规性并有效降低风险。

不断发展

技术中唯一不变的就是变化。——Marc Benioff

开发者平台不断发展以满足开发者和用户不断变化的需求。这种持续的演变确保平台保持相关性、高效性并能够支持最新的创新和最佳实践。通过保持适应性和前瞻性,平台可以提供推动持续成功和创新的必要工具和功能。

采用 Kubernetes 资源模型 API

应用程序编程接口是一组用于构建和与软件交互的规则和协议。

Kubernetes 资源模型 API 是在云原生环境中管理资源的行业标准。Kubernetes 充当通用控制平面,持续协调系统的期望状态和实际状态。对该模型进行标准化提供了几个关键好处:

  1. 全行业标准化:Kubernetes 已成为云原生基础设施管理的事实标准。其 API 驱动的方法被广泛采用,确保了与各种工具和服务的兼容性和易于集成。
  2. 通用控制平面:Kubernetes 充当通用控制平面,为基础设施和应用程序提供集中管理界面。这种集中化简化了操作并在各个环境中强制执行一致性。
  3. 持续协调:Kubernetes API 支持声明式管理,其中定义了资源的期望状态,并且 Kubernetes 持续协调此状态。这种自动协调减少了手动干预并确保了系统可靠性。
  4. 职责分离:平台工程师可以配置基础设施和策略,而开发者可以与更高级别的 API 交互。这种分离增强了自动化和自助服务功能,在不损害安全或合规性的情况下赋予开发者权力。
  5. 可扩展性和可扩展性:Kubernetes API 支持 REST、HTTP 和 gRPC 等传输机制,具有适应性和可扩展性。它与各种工具无缝集成,促进了平台的增长和演变。

通过利用 Kubernetes 资源模型 API,组织可以构建强大、可扩展且高效的平台,以满足现代开发环境的动态需求。

平台即产品:一种新视角

采用产品方法进行平台工程对于创建成功的内部平台至关重要。这意味着专注于为用户(开发人员和组织)提供持续的价值。它涉及了解用户需求、设计和测试解决方案、实施解决方案以及收集反馈以持续改进。

AWS、Google Cloud 和 Microsoft Azure 等云超大规模提供商就是这种方法的典范。他们构建了以用户为中心且不断更新新功能的平台,这些功能由用户反馈驱动,并可通过标准化 API 访问。这确保了它们保持相关性和价值。

对于内部平台,产品所有者项目经理等角色至关重要。他们帮助确保平台根据开发人员需求进行演变,保持可用性和有效性。通过将内部平台视为产品,您可以创建一种可持续的资源,以满足组织的独特需求。

通过云原生平台提供价值

在我们的演示视频中,我们展示了如何构建一个体现云原生关键原则的平台。这个实际示例展示了一个架构良好的云原生平台可以提供的巨大价值。以下是您可以期待的简要概述:

  • 赋能开发人员:了解平台如何为开发人员提供他们所需的工具和自主权,以便进行创新并更快地交付。
  • 云原生原则:观察我们如何利用容器化、微服务和其他云原生实践来构建一个强大且可扩展的平台。
  • API 驱动方法:了解如何使用编程 API 简化操作、增强自动化以及确保服务之间的无缝集成。
  • GitOps 工作流:了解平台如何采用 GitOps 实践将基础设施管理为代码,从而实现更高效且更可靠的部署。

观看视频以了解这些原则的实际应用,并了解它们如何结合在一起创建一个强大的、以开发人员为中心的平台。

必备工具

在演示中,您可以看到一系列工具,它们构成了云原生平台的支柱,每个工具都发挥着至关重要的作用。从作为控制平面编排器的 Kubernetes 到通过拉取请求管理 API 调用的 GitHub,这些工具共同确保了高效、可扩展且安全的 infrastructure 管理。

Tool Used as
Kubernetes 控制平面编排器和 API 机械装置
Crossplane 面向建设聚焦于基础架构的开发者平台控制平面框架
Crossplane 提供商:Kubernetes、Azure、Http、Functions
创建外部资源的机制
Port 可供开发人员创建统一 UI 的开发者入口
GitHub 通过 PR 交换 API 调用统一界面
ArgoCD GitOps编排流程
KIND 本地 Kubernetes 安装

回顾:平台组件的实际应用

让我们回顾一下我们从使用 Kubernetes 作为基础设施配置的控制平面中学到的知识:

  • 自助服务门户:开发人员访问 IDP 门户以获得统一的 UI 体验,以管理应用程序和基础设施。
  • 推送更改:开发人员通过拉取请求将更改推送到 GitOps 存储库。
  • 批准和合并:平台工程师审查、批准并合并拉取请求,更新配置。
  • 同步更改:GitOps 存储库将更改同步到 ArgoCD。
  • 部署更改:ArgoCD 将更改部署到 Kubernetes API。
  • 协调基础设施:Kubernetes API 通过 Crossplane 协调基础设施。
  • 配置基础设施:Crossplane 通过各种提供商配置基础设施。

此序列确保了一个简化且自动化的流程,用于使用 Kubernetes 和 GitOps 原则管理和配置基础设施。

结束语

云原生平台通过提供强大、可扩展且安全的环境,正在彻底改变我们开发和管理应用程序的方式。它们通过自助服务门户为开发人员赋能,通过编程 API 简化操作,并通过自动化工作流和全面的监控工具确保可靠性。通过采用这些平台,组织可以加速创新、提高生产力并维持高标准的安全性和合规性。

将平台视为产品可确保持续改进并与用户需求保持一致,使其成为当今快节奏技术领域中不可或缺的工具。无论您是平台工程师、架构师还是 DevOps 专家,利用云原生平台都可以带来显著的价值,培养效率和敏捷的文化。保持领先地位,探索云原生平台的潜力,并见证您的组织蓬勃发展。

感谢您抽出时间阅读这篇文章。我希望您觉得它有趣且内容丰富。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注