为平台团队提供构建编排功能的工作流程和检查表。
译自 The Pillars of Platform Engineering: Part 5 — Orchestration 。
本指南概述了平台工程中六大技术领域中的开发者体验工作流程和检查表步骤。该系列分六部分发布,第一部分介绍了该系列,并着重于安全性。第五部分讨论编排。完整的 PDF 版本包含平台工程的六大大支柱的完整指导方针. 大纲和检查表,可供下载:
- 安全性(包括简介)
- 流水线(VCS. CI/CD)
- Provisioning
- 连接性
- 编排
- 可观测性(包括总结和下一步)
当您要部署应用程序时,如果采用分布式应用程序. 微服务,或者希望实现跨云基础设施的弹性,使用工作负载编排器将更容易。
Kubernetes 和 HashiCorp Nomad 等工作负载编排器比传统技术提供更多优势。实现这些优势的工作量可能不同。例如,重构为容器化和采用 Kubernetes 可能需要更高工作量,而使用像 HashiCorp Nomad 这样面向各类工作负载的编排器可能需要较少工作量。无论哪种情况,工作负载编排器可实现:
- 提高资源利用率
- 可扩展性和弹性
- 多云和混合云支持
- 开发者自助服务
- 服务发现和联网(内置或可插拔)
- 高可用性和容错能力
- 高级调度和放置控制
- 资源隔离和安全
- 成本优化
编排器提供优化算法,以最有效的方式将工作负载分配到基础设施资源中(例如装箱. 扩展. 亲和力. 反亲和力. 自动缩放. 动态应用调整大小等),这可以降低成本。它们自动化分布式计算和弹性策略,开发者不需要了解底层工作机制。
与其他平台支柱一样,主要目标是标准化工作流程,编排器是现代平台团队统一部署工作流程以消除基于工单的流程的常见方式。
选择编排器时,确保它足够灵活,能处理环境的未来扩展和异构工作流非常重要。编排器还必须能够处理多租户并轻松集成跨多个内部数据中心和多云环境。
需要注意的是,并非所有系统都可以容器化,或转移到像供应商提供的单体设备或应用等现代编排器,因此平台团队识别其他团队优化编排器参与度和自动化的机会非常重要,这符合其他平台支柱的原则。现代编排器提供广泛的本地功能。尽管不同系统之间具体实现和功能各有不同,但存在许多核心要求。
典型的编排工作流程应遵循以下八个步骤:
- 代码:开发人员提交代码。
(注:开发人员可能具有直接的网络控制平面访问权限,这取决于分配给他们的基于角色的访问控制。)
- 验证:CI/CD 平台向身份提供商提交验证请求(认证和授权)。
- 身份提供商响应:如果成功,触发流水线的常见任务(测试. 构建. 部署)。
- 请求:provisioner 执行请求的模式,如构建模块. 检索工件或根据内部和外部策略引擎验证策略,最终预配定义的资源。
- Provision:如果基础设施不可用,则设置和配置基础设施。
- 配置:provisioner 配置编排器资源。
- 作业:编排器根据定义的任务和策略在目标资源上运行作业。
- 响应:向 CI/CD 平台提供预配器请求的完成情况,以进行后续处理和/或移交给执行操作(如安全扫描或集成测试)的外部系统。
编排流程示意图
成功的编排需要:
- 服务/批处理调度程序
- 灵活的任务驱动程序
- 可插拔设备接口
- 灵活的升级和发布策略
- 集成的部署拓扑
- 弹性. 高可用的部署拓扑
- 自动缩放(动态和固定)
- 访问控制系统(IAM JWT/OIDC 和 ACL)
- 支持多种接口,面向不同人员和工作流程(GUI. API. CLI. SDK)
- 与可信身份提供商集成,支持单点登录和委派的基于角色的访问控制
- 任务的功能. 逻辑和/或物理隔离
- 原生配额系统
- 审计日志
- 基于服务级协议的企业级支持(例如全年无休7*24小时)
- 通过自动化进行配置(基础设施即代码. 运行手册)
平台工程的第六个也是最后一个支柱是可观测性:敬请期待后面的文章!