Consideraciones sobre kro para EKS - 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.

Consideraciones sobre kro para EKS

En este tema, se tratan aspectos importantes al utilizar la capacidad de EKS para kro, lo que incluye cuándo se utilizan la composición de recursos, los patrones de RBAC y la integración con otras capacidades de EKS.

Cuándo se utiliza kro

kro está diseñado para crear patrones de infraestructura reutilizables y API personalizadas que simplifiquen la administración de recursos complejos.

Utilice kro cuando en los siguientes casos:

  • Para la creación de plataformas de autoservicio con API simplificadas para los equipos de aplicaciones

  • Para la estandarización de los patrones de infraestructura en todos los equipos (base de datos + copia de seguridad + supervisión)

  • Para la administración de dependencias de los recursos y para la transferencia de valores entre recursos

  • Para la creación de abstracciones personalizadas que oculten la complejidad de la implementación

  • Para la composición de varios recursos de ACK en componentes de nivel superior

  • Para la activación de flujos de trabajo de GitOps para pilas de infraestructuras complejas

No utilice kro en los siguientes casos:

  • Para la administración de recursos simples e independientes (utilice directamente los recursos de ACK o Kubernetes)

  • Para cuando necesite una lógica dinámica en tiempo de ejecución (kro es declarativo, no imperativo)

  • Para cuando los recursos no tengan dependencias ni configuración compartida

kro destaca por crear “rutas pavimentadas”: patrones obstinados y reutilizables que facilitan a los equipos la implementación correcta de infraestructuras complejas.

Patrones de RBAC

kro permite separar las preocupaciones entre los equipos de plataformas que crean ResourceGraphDefinitions y los equipos de aplicaciones que crean instancias.

Responsabilidades del equipo de plataformas

Los equipos de plataformas crean y mantienen ResourceGraphDefinitions (RGD) que definen las API personalizadas.

Permisos necesarios:

  • Creación, actualización y eliminación de ResourceGraphDefinitions

  • Administración de los tipos de recursos subyacentes (implementaciones, servicios, recursos de ACK)

  • Acceso a todos los espacios de nombres en los que se utilizarán las RGD

Ejemplo de ClusterRole para el equipo de plataformas:

apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: platform-kro-admin rules: - apiGroups: ["kro.run"] resources: ["resourcegraphdefinitions"] verbs: ["*"] - apiGroups: ["*"] resources: ["*"] verbs: ["get", "list", "watch"]

Para obtener una configuración de RBAC detallada, consulte Configuración de permisos de kro.

Responsabilidades del equipo de aplicaciones

Los equipos de aplicaciones crean instancias de recursos personalizados definidas por las RGD sin necesidad de comprender la complejidad subyacente.

Permisos necesarios:

  • Creación, actualización y eliminación de instancias de recursos personalizados

  • Acceso de lectura a su espacio de nombres

  • Sin acceso a recursos subyacentes o las RGD

Ventajas:

  • Uso de API sencillas y de alto nivel por parte de los equipos

  • Control de los detalles de la implementación por parte de los equipos

  • Menor riesgo de errores de configuración

  • Incorporación más rápida de los nuevos miembros del equipo

Integración con otras capacidades de EKS

Composición de recursos de ACK

kro es particularmente eficaz cuando se combina con ACK para crear patrones de infraestructura.

Patrones comunes:

  • Aplicación con almacenamiento: bucket de S3 + cola de SQS + configuración de notificaciones

  • Pila de base de datos: instancia de RDS + grupo de parámetros + grupo de seguridad + secreto de Secrets Manager

  • Redes: VPC + subredes + tablas de enrutamiento + grupos de seguridad + puertas de enlace de NAT

  • Computación con almacenamiento: instancia de EC2 + volúmenes de EBS + perfil de instancia de IAM

kro gestiona el orden de las dependencias, transfiere valores entre los recursos (como los ARN y las cadenas de conexión) y administra todo el ciclo de vida como una sola unidad.

Para ver ejemplos de composición de recursos de ACK, consulte Conceptos de ACK.

GitOps con Argo CD

Utilice la capacidad de EKS para Argo CD para implementar tanto las RGD como las instancias de los repositorios de Git.

Organización de repositorios:

  • Repositorio de plataformas: contiene ResourceGraphDefinitions administradas por el equipo de plataformas

  • Repositorios de aplicaciones: contienen instancias de recursos personalizados administradas por los equipos de aplicaciones

  • Repositorio compartido: contiene tanto RGD como instancias para organizaciones más pequeñas

Consideraciones:

  • Implemente las RGD antes que las instancias (las ondas de sincronización de Argo CD pueden ayudarlo).

  • Utilice proyectos de Argo CD independientes para los equipos de plataformas y aplicaciones.

  • El equipo de plataformas controla el acceso al repositorio de RGD.

  • Los equipos de aplicaciones tienen acceso de solo lectura a las definiciones de RGD.

Para obtener más información sobre Argo CD, consulte Uso de Argo CD.

Organización de ResourceGraphDefinitions

Organice las RGD por propósito, complejidad y propiedad.

Por propósito:

  • Infraestructura: pilas de bases de datos, redes, almacenamiento

  • Aplicación: aplicaciones web, API, trabajos por lotes

  • Plataforma: servicios compartidos, supervisión, registro

Por complejidad:

  • Sencilla: de 2 a 3 recursos con dependencias mínimas

  • Moderada: de 5 a 10 recursos con algunas dependencias

  • Compleja: más de 10 recursos con dependencias complejas

Convenciones de nomenclatura:

  • Utilice nombres descriptivos: webapp-with-database, s3-notification-queue.

  • Incluya la versión en el nombre para los cambios bruscos: webapp-v2.

  • Utilice prefijos coherentes para las RGD relacionadas: platform- , app-

Estrategia de espacio de nombres:

  • Las RGD tienen un ámbito de clúster (no tienen espacios de nombres).

  • Las instancias tienen espacios de nombres.

  • Utilice selectores de espacios de nombres en las RGD para controlar dónde se pueden crear las instancias.

Control de versiones y actualizaciones

Planifique la evolución de RGD y la migración de instancias.

Actualizaciones de RGD:

  • Cambios no bruscos: actualice la RGD (agregue campos opcionales y nuevos recursos con includeWhen).

  • Cambios bruscos: cree una nueva RGD con un nombre diferente (webapp-v2).

  • Obsolescencia: marque las RGD antiguos con anotaciones y comunique la programación de migración.

Migración de instancias:

  • Cree nuevas instancias con la RGD actualizada.

  • Valide que las nuevas instancias funcionen correctamente.

  • Elimine las instancias antiguas.

  • kro gestiona automáticamente las actualizaciones de los recursos subyacentes.

Prácticas recomendadas:

  • Pruebe antes los cambios de RGD en entornos que no sean de producción.

  • Utilice el control de versiones semántico en los nombres de RGD para cambios importantes.

  • Documente los cambios bruscos y las rutas de migración.

  • Proporcione ejemplos de migración para los equipos de aplicaciones.

Validación y pruebas

Valide las RGD antes de implementarlas en producción.

Estrategias de validación:

  • Validación de esquema: kro valida la estructura de RGD automáticamente.

  • Instancias de prueba: cree instancias de prueba en los espacios de nombres de desarrollo.

  • Pruebas de integración: compruebe que los recursos compuestos funcionen juntos

  • Aplicación de políticas: utilice controladores de admisión para hacer cumplir los estándares organizativos

Problemas comunes que se deben probar:

  • Dependencias y orden de los recursos

  • Transferencia de valores entre recursos (expresiones de CEL)

  • Inclusión condicional de recursos (includeWhen)

  • Propagación del estado a partir de los recursos subyacentes

  • Permisos de RBAC para la creación de instancias

Documentación ascendente

Para obtener información detallada sobre el uso de kro:

Siguientes pasos