

 **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
<a name="kro-considerations"></a>

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
<a name="_when_to_use_kro"></a>

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 \$1 copia de seguridad \$1 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
<a name="_rbac_patterns"></a>

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
<a name="_platform_team_responsibilities"></a>

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](kro-permissions.md).

### Responsabilidades del equipo de aplicaciones
<a name="_application_team_responsibilities"></a>

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
<a name="_integration_with_other_eks_capabilities"></a>

### Composición de recursos de ACK
<a name="_composing_ack_resources"></a>

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

 **Patrones comunes**:
+  **Aplicación con almacenamiento**: bucket de S3 \$1 cola de SQS \$1 configuración de notificaciones
+  **Pila de base de datos**: instancia de RDS \$1 grupo de parámetros \$1 grupo de seguridad \$1 secreto de Secrets Manager
+  **Redes**: VPC \$1 subredes \$1 tablas de enrutamiento \$1 grupos de seguridad \$1 puertas de enlace de NAT
+  **Computación con almacenamiento**: instancia de EC2 \$1 volúmenes de EBS \$1 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](ack-concepts.md).

### GitOps con Argo CD
<a name="_gitops_with_argo_cd"></a>

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](working-with-argocd.md).

## Organización de ResourceGraphDefinitions
<a name="_organizing_resourcegraphdefinitions"></a>

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
<a name="_versioning_and_updates"></a>

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
<a name="_validation_and_testing"></a>

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
<a name="_upstream_documentation"></a>

Para obtener información detallada sobre el uso de kro:
+  [Introducción a kro](https://kro.run/docs/guides/getting-started): creación de ResourceGraphDefinitions
+  [Expresiones de CEL](https://kro.run/docs/concepts/cel): escritura de expresiones de CEL
+  [Guías de kro](https://kro.run/docs/guides/): patrones de composición avanzados
+  [Solución de problemas](https://kro.run/docs/troubleshooting): solución de problemas y depuración

## Siguientes pasos
<a name="_next_steps"></a>
+  [Configuración de permisos de kro](kro-permissions.md): configuración del RBAC para los equipos de plataformas y aplicaciones
+  [Conceptos de kro](kro-concepts.md): descripción de los conceptos de kro y el ciclo de vida de los recursos
+  [Solución de problemas con capacidades de kro](kro-troubleshooting.md): solución de problemas de kro
+  [Conceptos de ACK](ack-concepts.md): más información sobre los recursos de ACK para la composición
+  [Uso de Argo CD](working-with-argocd.md): implementación de instancias y RGD con GitOps