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:
-
Introducción a kro
: creación de ResourceGraphDefinitions -
Expresiones de CEL
: escritura de expresiones de CEL -
Guías de kro
: patrones de composición avanzados -
Solución de problemas
: solución de problemas y depuración
Siguientes pasos
-
Configuración de permisos de kro: configuración del RBAC para los equipos de plataformas y aplicaciones
-
Conceptos de kro: descripción de los conceptos de kro y el ciclo de vida de los recursos
-
Solución de problemas con capacidades de kro: solución de problemas de kro
-
Conceptos de ACK: más información sobre los recursos de ACK para la composición
-
Uso de Argo CD: implementación de instancias y RGD con GitOps