使用 kro(Kube Resource Orchestrator)组合编排资源 - Amazon EKS
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

帮助改进此页面

要帮助改进本用户指南,请选择位于每个页面右侧窗格中的在 GitHub 上编辑此页面链接。

使用 kro(Kube Resource Orchestrator)组合编排资源

kro(Kube Resource Orchestrator)是一个 Kubernetes 原生开源项目,支持通过简洁直观的配置来定义自定义 Kubernetes API。借助 kro,您可以轻松配置全新的自定义 API,这些 API 可用于创建一组 Kubernetes 对象,并定义对象之间的逻辑操作。

基于 EKS 功能,kro 由 Amazon 提供全托管服务,无需您在集群中安装、维护和扩缩 kro 控制器。

kro 工作原理

kro 引入了一种名为 ResourceGraphDefinition(RGD)的自定义资源定义(CRD),支持以简洁高效的方式创建自定义 Kubernetes API。在您创建 ResourceGraphDefinition 后,kro 会借助 Kubernetes 原生扩展能力,在集群中创建并管理这些新的 API。基于这份单一的资源规范,kro 会自动根据您的配置创建并注册一个全新的 CRD,同时自适应地管理您所定义的这些新自定义资源。

RGD 可包含多种资源,kro 会自动判断资源间的依赖关系与创建顺序,无需人工干预。您能够通过简单的语法,将配置信息从一个资源注入另一个资源,极大简化了资源组合编排流程,不再需要在集群中部署用于资源衔接的“粘合型”控制器。借助 kro,您所定义的自定义资源既可以包含 Kubernetes 原生资源,也能够兼容集群中已安装的任意自定义资源定义(CRD)。

kro 仅支持一种核心资源类型:

  • ResourceGraphDefinition (RGD):定义一种 Kubernetes 自定义资源,该资源可封装一个或多个底层的 Kubernetes 原生资源或自定义资源

除该核心资源外,kro 还会负责创建并管理由其生成的自定义资源的生命周期,同时管理这些自定义资源所包含的全部组成资源。

kro 可与 Amazon Controllers for Kubernetes(ACK)无缝集成,支持您将工作负载资源与 Amazon 资源进行组合,从而创建更高级别的抽象资源。此能力可帮助您构建专属的云基础设施组件,简化资源管理流程,并能基于企业标准配置默认值与不可变配置项,形成可复用的模式。

kro 优势

kro 支持平台团队创建自定义 Kubernetes API,将多个资源组合为更高级别的抽象资源。这一能力可以简化资源管理工作,开发者只需通过简洁、标准化且带版本控制的自定义资源,就能完成复杂应用的部署。您可以为常用的资源组合定义可复用模式,在企业内部实现一致化的资源创建流程。

kro 在 Kubernetes 环境中采用公共表达式语言(CEL)实现资源间的值传递与条件逻辑配置,让资源组合编排具备更强的灵活性。您既可以组合 Kubernetes 原生资源,也能将 ACK 管理的 Amazon 资源纳入其中,构建出一体化的自定义 API,从而实现应用与基础设施的完整定义。

kro 支持通过 Kubernetes 清单完成声明式配置,可无缝对接 GitOps 工作流程与基础设施即代码实践,与您现有的开发流程深度融合。作为 EKS 托管功能的一部分,kro 由 Amazon 提供全托管服务,无需您在集群中安装、配置和维护 kro 控制器。

示例:创建 ResourceGraphDefinition

以下示例展示了一个简单的 ResourceGraphDefinition 配置,用于创建一个包含 Deployment 和 Service 的 Web 应用:

apiVersion: kro.run/v1alpha1 kind: ResourceGraphDefinition metadata: name: web-application spec: schema: apiVersion: v1alpha1 kind: WebApplication spec: name: string replicas: integer | default=3 resources: - id: deployment template: apiVersion: apps/v1 kind: Deployment metadata: name: ${schema.spec.name} spec: replicas: ${schema.spec.replicas} - id: service template: apiVersion: v1 kind: Service metadata: name: ${schema.spec.name}

当用户创建 WebApplication 自定义资源实例时,kro 会自动生成对应的 Deployment 与 Service 资源,并将其生命周期与自定义资源进行统一管理。

与其他 EKS 托管功能集成

kro 与其他 EKS 托管功能集成。

  • Amazon Controllers for Kubernetes(ACK):借助 kro 将 ACK 资源组合为更高级别的抽象资源,简化 Amazon 资源的管理流程。

  • Argo CD:通过 Argo CD 管理 kro 自定义资源在多集群的部署,为平台基础设施组件与应用栈启用 GitOps 工作流程。

kro 入门

若要开始使用 EKS 托管型 kro,可按照以下步骤操作:

  1. 通过 Amazon 控制台、Amazon CLI 或您偏好的基础设施即代码工具,在 EKS 集群上创建 kro 功能资源

  2. 创建 ResourceGraphDefinition(RGD),定义自己的自定义 API 与资源组合编排规则。

  3. 应用自定义资源实例,完成底层 Kubernetes 资源与 Amazon 资源的配置和管理。