

 **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.

# Creación de una capacidad de kro
<a name="create-kro-capability"></a>

En este tema, se explica cómo crear una capacidad de kro en un clúster de Amazon EKS.

## Requisitos previos
<a name="_prerequisites"></a>

Antes de crear una capacidad de kro, asegúrese de que disponga de lo siguiente:
+ Un clúster de Amazon EKS existente que ejecute una versión de Kubernetes compatible (se admiten todas las versiones con soporte estándar y ampliado)
+ Permisos de IAM suficientes para crear recursos de capacidad en los clústeres de EKS
+ (Para la CLI o eksctl) La herramienta de la CLI adecuada instalada y configurada

**nota**  
A diferencia de ACK y Argo CD, kro no necesita permisos de IAM adicionales más allá de la política de confianza. kro opera completamente dentro de su clúster y no hace llamadas a la API de AWS. Sin embargo, debe proporcionar igualmente un rol de capacidad de IAM con la política de confianza adecuada. Para obtener información acerca de la configuración de permisos de RBAC de Kubernetes para kro, consulte [Configuración de permisos de kro](kro-permissions.md).

## Elección de la herramienta
<a name="_choose_your_tool"></a>

Puede crear una capacidad de kro mediante la Consola de administración de AWS, la AWS CLI o eksctl:
+  [Creación de una capacidad de kro mediante la consola](kro-create-console.md): uso de la consola para una experiencia guiada
+  [Creación de una capacidad de kro mediante la AWS CLI](kro-create-cli.md): uso de la AWS CLI para scripts y automatización
+  [Creación de una capacidad de kro mediante eksctl](kro-create-eksctl.md): uso de eksctl para una experiencia nativa de Kubernetes

## Qué ocurre cuando se crea una capacidad de kro
<a name="_what_happens_when_you_create_a_kro_capability"></a>

Al crear una capacidad de kro:

1. EKS crea el servicio de capacidad de kro y lo configura para supervisar y administrar los recursos del clúster.

1. Las definiciones de recursos personalizados (CRD) de Kubernetes se instalan en el clúster.

1. Se crea automáticamente una entrada de acceso para el rol de capacidad de IAM con `AmazonEKSKROPolicy`, que concede permisos para administrar ResourceGraphDefinitions y sus instancias (consulte [Consideraciones sobre la seguridad para las capacidades de EKS](capabilities-security.md))

1. La capacidad asume el rol de capacidad de IAM que proporcione (se utiliza solo para la relación de confianza).

1. kro comienza a supervisar los recursos de `ResourceGraphDefinition` y sus instancias.

1. El estado de la capacidad cambia de `CREATING` a `ACTIVE`. 

Una vez activo, puede crear ResourceGraphDefinitions para definir las API personalizadas y crear instancias de esas API.

**nota**  
La entrada de acceso creada automáticamente incluye `AmazonEKSKROPolicy`, que concede a kro permisos para administrar ResourceGraphDefinitions y sus instancias. Para permitir que kro cree los recursos subyacentes de Kubernetes definidos en las ResourceGraphDefinitions (como Implementaciones, Servicios o recursos de ACK), debe configurar políticas adicionales de entrada de acceso. Para obtener más información sobre las entradas de acceso y cómo configurar permisos adicionales, consulte [Configuración de permisos de kro](kro-permissions.md) y [Consideraciones sobre la seguridad para las capacidades de EKS](capabilities-security.md).

## Siguientes pasos
<a name="_next_steps"></a>

Después de crear la capacidad de kro:
+  [Conceptos de kro](kro-concepts.md): descripción de los conceptos de kro y la composición de recursos
+  [Conceptos de kro](kro-concepts.md): más información sobre SimpleSchema, las expresiones de CEL y los patrones de composición de recursos

# Creación de una capacidad de kro mediante la consola
<a name="kro-create-console"></a>

En este tema, se describe cómo crear una capacidad de kro (Kube Resource Orchestrator) mediante la Consola de administración de AWS.

## Creación de la capacidad de kro
<a name="_create_the_kro_capability"></a>

1. Abra la consola de Amazon EKS en https://console.aws.amazon.com/eks/home\$1/clusters.

1. Seleccione el nombre del clúster para abrir la página de detalles del clúster.

1. Elija la pestaña **Capacidades**.

1. En el menú de navegación izquierdo, seleccione **kro (Kube Resource Orchestrator)**.

1. Elija **Crear capacidad de kro**.

1. Para el **rol de capacidad de IAM**:
   + Si ya tiene un rol de capacidad de IAM, selecciónelo en el menú desplegable.
   + Si necesita crear un rol, elija **Crear rol de kro**. 

     De este modo, se abre la consola de IAM en una nueva pestaña con la política de confianza rellenada previamente. El rol no necesita permisos de IAM adicionales, ya que kro opera completamente dentro del clúster.

     Después de crear el rol, regrese a la consola de EKS y el rol se seleccionará automáticamente.
**nota**  
A diferencia de ACK y Argo CD, kro no necesita permisos de IAM adicionales más allá de la política de confianza. kro opera completamente dentro de su clúster y no hace llamadas a la API de AWS.

1. Seleccione **Crear**.

Comenzará el proceso de creación de la capacidad.

## Comprobación de la activación de la capacidad
<a name="_verify_the_capability_is_active"></a>

1. En la pestaña **Capacidades**, consulte el estado de la capacidad de kro.

1. Espere a que el estado cambie de `CREATING` a `ACTIVE`.

1. Una vez activa, la capacidad está lista para usarse.

Para obtener información sobre los estados de la capacidad y la solución de problemas, consulte [Uso de recursos de capacidades](working-with-capabilities.md).

## Concesión de permisos para administrar los recursos de Kubernetes
<a name="_grant_permissions_to_manage_kubernetes_resources"></a>

Cuando crea una capacidad de kro, se crea automáticamente una entrada de acceso de EKS con la `AmazonEKSKROPolicy`, lo que permite a kro administrar ResourceGraphDefinitions y sus instancias. Sin embargo, no se conceden permisos de forma predeterminada para crear los recursos subyacentes de Kubernetes (como Implementaciones, Servicios, ConfigMaps, etc.) definidos en las ResourceGraphDefinitions.

Este diseño intencional sigue el principio de privilegio mínimo: diferentes ResourceGraphDefinitions requieren distintos permisos. Debe configurar explícitamente los permisos que kro necesita según los recursos que administrarán las ResourceGraphDefinitions.

Para comenzar rápidamente, realizar pruebas o trabajar en entornos de desarrollo, utilice `AmazonEKSClusterAdminPolicy`:

1. En la consola de EKS, vaya a la pestaña **Acceso** del clúster.

1. En **Entradas de acceso**, busque la entrada para el rol de capacidad de kro (tendrá el ARN del rol que creó anteriormente).

1. Elija la entrada de acceso para abrir sus detalles.

1. En la sección **Políticas de acceso**, elija **Asociar política de acceso**.

1. Seleccione `AmazonEKSClusterAdminPolicy` en la lista de políticas.

1. En **Ámbito de acceso**, seleccione **Clúster**.

1. Elija **Asociar**.

**importante**  
Esta `AmazonEKSClusterAdminPolicy` concede amplios permisos para crear y administrar todos los recursos de Kubernetes, incluida la capacidad de crear cualquier tipo de recurso en todos los espacios de nombres. Esto resulta conveniente para desarrollo y pruebas de concepto, pero no se debe utilizar en producción. Para producción, cree políticas de control de acceso basado en roles personalizadas que concedan únicamente los permisos necesarios para los recursos específicos que administrarán las ResourceGraphDefinitions. Para obtener orientación sobre cómo configurar los permisos de privilegio mínimo, consulte [Configuración de permisos de kro](kro-permissions.md) y [Consideraciones sobre la seguridad para las capacidades de EKS](capabilities-security.md).

## Comprobación de la disponibilidad de los recursos personalizados
<a name="_verify_custom_resources_are_available"></a>

Una vez que la capacidad esté activa, compruebe que los recursos personalizados de kro estén disponibles en el clúster.

 **Uso de la consola** 

1. Vaya a su clúster en la consola de Amazon EKS.

1. Elija la pestaña **Recursos**.

1. Elija **Extensiones**. 

1. Elija **CustomResourceDefinitions**. 

Debería ver el tipo de recursos `ResourceGraphDefinition` en la lista.

 **Uso de kubectl** 

```
kubectl api-resources | grep kro.run
```

Debería ver el tipo de recursos `ResourceGraphDefinition` en la lista.

## Siguientes pasos
<a name="_next_steps"></a>
+  [Conceptos de kro](kro-concepts.md): descripción de los conceptos de kro y la composición de recursos
+  [Conceptos de kro](kro-concepts.md): más información sobre SimpleSchema, las expresiones de CEL y los patrones de composición
+  [Uso de recursos de capacidades](working-with-capabilities.md): administración del recurso de la capacidad de kro

# Creación de una capacidad de kro mediante la AWS CLI
<a name="kro-create-cli"></a>

En este tema, se describe cómo crear una capacidad de kro (Kube Resource Orchestrator) mediante la AWS CLI.

## Requisitos previos
<a name="_prerequisites"></a>
+  **AWS CLI**: versión `2.12.3` o posterior. Para comprobar la versión, ejecute `aws --version`. Para obtener más información, consulte [Instalación](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-install.html) en la Guía del usuario de la interfaz de la línea de comandos de AWS.
+  ** `kubectl` ** – una herramienta de línea de comandos para trabajar con clústeres de Kubernetes. Para obtener más información, consulte [Configuración de `kubectl` y `eksctl`](install-kubectl.md).

## Paso 1: creación de un rol de capacidad de IAM
<a name="_step_1_create_an_iam_capability_role"></a>

Cree un archivo de política de confianza:

```
cat > kro-trust-policy.json << 'EOF'
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "capabilities.eks.amazonaws.com"
      },
      "Action": [
        "sts:AssumeRole",
        "sts:TagSession"
      ]
    }
  ]
}
EOF
```

Cree el rol de IAM:

```
aws iam create-role \
  --role-name KROCapabilityRole \
  --assume-role-policy-document file://kro-trust-policy.json
```

**nota**  
A diferencia de ACK y Argo CD, kro no necesita permisos de IAM adicionales. kro opera completamente dentro de su clúster y no hace llamadas a la API de AWS. El rol solo es necesario para establecer una relación de confianza con el servicio de capacidades de EKS.

## Paso 2: creación de la capacidad de kro
<a name="_step_2_create_the_kro_capability"></a>

Cree el recurso de la capacidad de kro en su clúster. Reemplace *region-code* por la región de AWS en la que se encuentra el clúster (como `us-west-2`) y *my-cluster* por el nombre del clúster.

```
aws eks create-capability \
  --region region-code \
  --cluster-name my-cluster \
  --capability-name my-kro \
  --type KRO \
  --role-arn arn:aws:iam::$(aws sts get-caller-identity --query Account --output text):role/KROCapabilityRole \
  --delete-propagation-policy RETAIN
```

El comando devuelve una respuesta inmediatamente, pero la capacidad tarda algún tiempo en activarse mientras EKS crea la infraestructura y los componentes de la capacidad necesarios. EKS instalará las definiciones de recursos personalizados de Kubernetes relacionadas con esta capacidad en el clúster según se vaya creando.

**nota**  
Si recibe un error que indica que el clúster no existe o que no tiene permisos, compruebe lo siguiente:  
El nombre del clúster es correcto
La AWS CLI está configurada para la región correcta
Dispone de los permisos de IAM necesarios

## Paso 3: comprobación de la activación de la capacidad
<a name="_step_3_verify_the_capability_is_active"></a>

Espere a que se active la capacidad. Reemplace *region-code* por la región de AWS donde creó el clúster y *my-cluster* por el nombre de su clúster.

```
aws eks describe-capability \
  --region region-code \
  --cluster-name my-cluster \
  --capability-name my-kro \
  --query 'capability.status' \
  --output text
```

La capacidad estará lista cuando aparezca el estado `ACTIVE`.

También puede ver todos los detalles de la capacidad:

```
aws eks describe-capability \
  --region region-code \
  --cluster-name my-cluster \
  --capability-name my-kro
```

## Paso 4: concesión de permisos para administrar los recursos de Kubernetes
<a name="_step_4_grant_permissions_to_manage_kubernetes_resources"></a>

Cuando crea una capacidad de kro, se crea automáticamente una entrada de acceso de EKS con la `AmazonEKSKROPolicy`, lo que permite a kro administrar ResourceGraphDefinitions y sus instancias. Sin embargo, no se conceden permisos de forma predeterminada para crear los recursos subyacentes de Kubernetes (como Implementaciones, Servicios, ConfigMaps, etc.) definidos en las ResourceGraphDefinitions.

Este diseño intencional sigue el principio de privilegio mínimo: diferentes ResourceGraphDefinitions requieren distintos permisos. Por ejemplo: \$1 Una ResourceGraphDefinition que solo crea ConfigMaps y Secretos requiere permisos distintos a uno que crea Implementaciones y Servicios. \$1 Una ResourceGraphDefinition que crea recursos de ACK requiere permisos para esos recursos personalizados específicos. \$1 Algunas ResourceGraphDefinitions pueden limitarse a leer recursos existentes sin crear otros nuevos.

Debe configurar explícitamente los permisos que kro necesita según los recursos que administrarán las ResourceGraphDefinitions.

### Configuración rápida
<a name="_quick_setup"></a>

Para comenzar rápidamente, realizar pruebas o trabajar en entornos de desarrollo, utilice `AmazonEKSClusterAdminPolicy`:

Obtenga el ARN del rol de capacidad:

```
CAPABILITY_ROLE_ARN=$(aws eks describe-capability \
  --region region-code \
  --cluster-name my-cluster \
  --capability-name my-kro \
  --query 'capability.roleArn' \
  --output text)
```

Asocie la política de administración del clúster:

```
aws eks associate-access-policy \
  --region region-code \
  --cluster-name my-cluster \
  --principal-arn $CAPABILITY_ROLE_ARN \
  --policy-arn arn:aws:eks::aws:cluster-access-policy/AmazonEKSClusterAdminPolicy \
  --access-scope type=cluster
```

**importante**  
Esta `AmazonEKSClusterAdminPolicy` concede amplios permisos para crear y administrar todos los recursos de Kubernetes, incluida la capacidad de crear cualquier tipo de recurso en todos los espacios de nombres. Esto resulta conveniente para desarrollo y pruebas de concepto, pero no se debe utilizar en producción. Para producción, cree políticas de control de acceso basado en roles personalizadas que concedan únicamente los permisos necesarios para los recursos específicos que administrarán las ResourceGraphDefinitions. Para obtener orientación sobre cómo configurar los permisos de privilegio mínimo, consulte [Configuración de permisos de kro](kro-permissions.md) y [Consideraciones sobre la seguridad para las capacidades de EKS](capabilities-security.md).

## Paso 5: comprobación de la disponibilidad de los recursos personalizados
<a name="_step_5_verify_custom_resources_are_available"></a>

Una vez que la capacidad esté activa, compruebe que los recursos personalizados de kro estén disponibles en el clúster:

```
kubectl api-resources | grep kro.run
```

Debería ver el tipo de recursos `ResourceGraphDefinition` en la lista.

## Siguientes pasos
<a name="_next_steps"></a>
+  [Conceptos de kro](kro-concepts.md): descripción de los conceptos de kro y la composición de recursos
+  [Conceptos de kro](kro-concepts.md): más información sobre SimpleSchema, las expresiones de CEL y los patrones de composición
+  [Uso de recursos de capacidades](working-with-capabilities.md): administración del recurso de la capacidad de kro

# Creación de una capacidad de kro mediante eksctl
<a name="kro-create-eksctl"></a>

En este tema, se describe cómo crear una capacidad de kro (Kube Resource Orchestrator) mediante eksctl.

**nota**  
Los siguientes pasos requieren la versión `0.220.0` o posterior de eksctl. Para comprobar la versión, ejecute `eksctl version`.

## Paso 1: creación de un rol de capacidad de IAM
<a name="_step_1_create_an_iam_capability_role"></a>

Cree un archivo de política de confianza:

```
cat > kro-trust-policy.json << 'EOF'
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "capabilities.eks.amazonaws.com"
      },
      "Action": [
        "sts:AssumeRole",
        "sts:TagSession"
      ]
    }
  ]
}
EOF
```

Cree el rol de IAM:

```
aws iam create-role \
  --role-name KROCapabilityRole \
  --assume-role-policy-document file://kro-trust-policy.json
```

**nota**  
A diferencia de ACK y Argo CD, kro no necesita permisos de IAM adicionales más allá de la política de confianza. kro opera completamente dentro de su clúster y no hace llamadas a la API de AWS.

## Paso 2: creación de la capacidad de kro
<a name="_step_2_create_the_kro_capability"></a>

Cree la capacidad de kro mediante eksctl. Reemplace *region-code* por la región de AWS donde creó el clúster y *my-cluster* por el nombre de su clúster.

```
eksctl create capability \
  --region region-code \
  --cluster my-cluster \
  --name my-kro \
  --type KRO \
  --role-arn arn:aws:iam::[.replaceable]111122223333:role/KROCapabilityRole
```

El comando vuelve inmediatamente, pero la capacidad tarda algún tiempo en activarse.

## Paso 3: comprobación de la activación de la capacidad
<a name="_step_3_verify_the_capability_is_active"></a>

Compruebe el estado de la capacidad. Reemplace *region-code* por la región de AWS donde creó el clúster y *my-cluster* por el nombre de su clúster.

```
eksctl get capability \
  --region region-code \
  --cluster my-cluster \
  --name my-kro
```

La capacidad estará lista cuando aparezca el estado `ACTIVE`.

## Paso 4: concesión de permisos para administrar los recursos de Kubernetes
<a name="_step_4_grant_permissions_to_manage_kubernetes_resources"></a>

De forma predeterminada, kro solo puede crear y administrar ResourceGraphDefinitions y sus instancias. Para permitir que kro cree y administre los recursos de Kubernetes subyacentes definidos en su ResourceGraphDefinitions, asocie la política de acceso `AmazonEKSClusterAdminPolicy` a la entrada de acceso de la capacidad.

Obtenga el ARN del rol de capacidad:

```
CAPABILITY_ROLE_ARN=$(aws eks describe-capability \
  --region region-code \
  --cluster my-cluster \
  --name my-kro \
  --query 'capability.roleArn' \
  --output text)
```

Asocie la política de administración del clúster:

```
aws eks associate-access-policy \
  --region region-code \
  --cluster my-cluster \
  --principal-arn $CAPABILITY_ROLE_ARN \
  --policy-arn arn:aws:eks::aws:cluster-access-policy/AmazonEKSClusterAdminPolicy \
  --access-scope type=cluster
```

**importante**  
La `AmazonEKSClusterAdminPolicy` otorga amplios permisos para crear y administrar todos los recursos de Kubernetes y su objetivo es simplificar la puesta en marcha. Para su uso en producción, cree políticas de RBAC más restrictivas que otorguen solo los permisos necesarios para los recursos específicos que administrará su ResourceGraphDefinitions. Para obtener orientación sobre cómo configurar los permisos de privilegio mínimo, consulte [Configuración de permisos de kro](kro-permissions.md) y [Consideraciones sobre la seguridad para las capacidades de EKS](capabilities-security.md).

## Paso 5: comprobación de la disponibilidad de los recursos personalizados
<a name="_step_5_verify_custom_resources_are_available"></a>

Una vez que la capacidad esté activa, compruebe que los recursos personalizados de kro estén disponibles en el clúster:

```
kubectl api-resources | grep kro.run
```

Debería ver el tipo de recursos `ResourceGraphDefinition` en la lista.

## Siguientes pasos
<a name="_next_steps"></a>
+  [Conceptos de kro](kro-concepts.md): descripción de los conceptos de kro y la composición de recursos
+  [Conceptos de kro](kro-concepts.md): más información sobre SimpleSchema, las expresiones de CEL y los patrones de composición
+  [Uso de recursos de capacidades](working-with-capabilities.md): administración del recurso de la capacidad de kro