帮助改进此页面
要帮助改进本用户指南,请选择位于每个页面右侧窗格中的在 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)
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,可按照以下步骤操作:
-
通过 Amazon 控制台、Amazon CLI 或您偏好的基础设施即代码工具,在 EKS 集群上创建 kro 功能资源。
-
创建 ResourceGraphDefinition(RGD),定义自己的自定义 API 与资源组合编排规则。
-
应用自定义资源实例,完成底层 Kubernetes 资源与 Amazon 资源的配置和管理。