Composición de recursos con kro (Kube Resource Orchestrator) - Amazon EKS

Ayude a mejorar esta página

Para contribuir a esta guía del usuario, elija el enlace Edit this page on GitHub que se encuentra en el panel derecho de cada página.

Composición de recursos con kro (Kube Resource Orchestrator)

kro (Kube Resource Orchestrator) es un proyecto de código abierto nativo de Kubernetes que le permite definir las API de Kubernetes personalizadas mediante una configuración sencilla y directa. Con kro, puede configurar fácilmente nuevas API personalizadas que crean un grupo de objetos de Kubernetes y las operaciones lógicas entre ellos.

Con las capacidades de EKS, AWS administra kro completamente, lo que elimina la necesidad de instalar, mantener y escalar los controladores de kro en sus clústeres.

Cómo funciona kro

kro presenta una definición de recursos personalizados (CRD) llamada ResourceGraphDefinition (RGD) que permite la creación sencilla y simplificada de API de Kubernetes personalizadas. Al crear una ResourceGraphDefinition, kro utiliza extensiones nativas de Kubernetes para crear y administrar nuevas API en el clúster. A partir de esta especificación de recurso único, kro creará y registrará una nueva CRD en función de la especificación y se adaptará para administrar los recursos personalizados recién definidos.

Las RGD pueden incluir varios recursos y kro determinará las interdependencias y el orden de los recursos para que no tenga que hacerlo usted. Puede utilizar una sintaxis sencilla para inyectar la configuración de un recurso a otro, lo que simplifica considerablemente las composiciones y elimina la necesidad de utilizar operadores de “glue” en el clúster. Con kro, los recursos personalizados pueden incluir recursos nativos de Kubernetes, así como cualquier definición de recursos personalizados (CRD) instalada en el clúster.

kro admite un solo tipo de recurso principal:

  • ResourceGraphDefinition (RGD): define un recurso personalizado de Kubernetes y encapsula uno o más recursos de Kubernetes nativos o personalizados subyacentes.

Además de este recurso, kro creará y administrará el ciclo de vida de los recursos personalizados que se creen con él, así como todos los recursos que lo componen.

kro se integra sin problemas con Controladores de AWS para Kubernetes (ACK), lo que le permite componer recursos de carga de trabajo con recursos de AWS para crear abstracciones de alto nivel. Esto le permite crear sus propios componentes básicos en la nube, lo que simplifica la administración de recursos y permite crear patrones reutilizables con valores de configuración predeterminados e inmutables basados en sus estándares organizativos.

Beneficios de kro

kro permite a los equipos de plataformas crear API de Kubernetes personalizadas que componen varios recursos en abstracciones de nivel superior. Esto simplifica la administración de recursos al permitir a los desarrolladores implementar aplicaciones complejas mediante recursos personalizados sencillos, estandarizados y versionados. Definirá patrones reutilizables para las combinaciones de recursos comunes, lo que permite una creación de recursos coherente en toda la organización.

kro utiliza el lenguaje de expresión común (CEL) en Kubernetes para transferir valores entre los recursos e incorporar la lógica condicional, lo que proporciona flexibilidad en la composición de los recursos. Puede componer los recursos de Kubernetes y de AWS administrados por ACK en API personalizadas unificadas, lo que permite definir todas las aplicaciones e infraestructuras.

kro admite la configuración declarativa a través de los manifiestos de Kubernetes, lo que permite que los flujos de trabajo de GitOps y las prácticas de infraestructura como código se integren sin problemas con los procesos de desarrollo existentes. Como parte de las capacidades administradas de EKS, AWS administra kro completamente, lo que elimina la necesidad de instalar, configurar y mantener los controladores kro en sus clústeres.

Ejemplo: creación de una ResourceGraphDefinition

En el siguiente ejemplo, se muestra una ResourceGraphDefinition sencilla que crea una aplicación web con una implementación y un servicio:

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}

Cuando los usuarios crean instancias del recurso personalizado de WebApplication, kro crea automáticamente los recursos de implementación y servicio correspondientes y administra su ciclo de vida junto con el recurso personalizado.

Integración con otras capacidades administradas de EKS

kro se integra con otras capacidades administradas de EKS.

  • Controladores de AWS para Kubernetes (ACK): utilice kro para componer los recursos de ACK en abstracciones de nivel superior, lo que simplifica la administración de los recursos de AWS.

  • Argo CD: utilice Argo CD para administrar la implementación de los recursos personalizados de kro en varios clústeres, lo que activa los flujos de trabajo de GitOps para las pilas de aplicaciones y los componentes básicos de la plataforma.

Introducción a kro

Para comenzar a utilizar la capacidad de EKS para kro:

  1. Cree un recurso de capacidad de kro en su clúster de EKS a través de la consola de AWS, la AWS CLI o su infraestructura preferida como herramienta de código.

  2. Cree ResourceGraphDefinitions (RGD) que definan sus composiciones de recursos y API personalizadas.

  3. Aplique instancias de los recursos personalizados para aprovisionar y administrar los recursos de AWS y Kubernetes subyacentes.