Creación de una capacidad de kro mediante la AWS CLI - 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.

Creación de una capacidad de kro mediante la AWS CLI

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

Requisitos previos

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

Paso 1: creación de un rol de capacidad de IAM

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

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

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

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: * Una ResourceGraphDefinition que solo crea ConfigMaps y Secretos requiere permisos distintos a uno que crea Implementaciones y Servicios. * Una ResourceGraphDefinition que crea recursos de ACK requiere permisos para esos recursos personalizados específicos. * 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

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 y Consideraciones sobre la seguridad para las capacidades de EKS.

Paso 5: comprobación de la disponibilidad de los recursos personalizados

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