Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Configuración del escalado automático basado en eventos en Amazon EKS mediante Amazon EKS Pod Identity y KEDA
Dipen Desai, Abhay Diwan, Kamal Joshi y Mahendra Revanasiddappa, Amazon Web Services
Resumen
Las plataformas de orquestación, como Amazon Elastic Kubernetes Service (Amazon EKS), han simplificado la administración del ciclo de vida de las aplicaciones basadas en contenedores. Esto ayuda a las organizaciones a centrarse en crear, proteger, operar y mantener aplicaciones basadas en contenedores. A medida que las implementaciones basadas en eventos se vuelven más comunes, las organizaciones escalan con mayor frecuencia las implementaciones de Kubernetes en función de diversos orígenes de eventos. Este método, combinado con el escalado automático, puede generar importantes ahorros de costos al proporcionar recursos de cómputo bajo demanda y un escalado eficiente que se adapta a la lógica de la aplicación.
KEDA
AWS proporciona funciones AWS Identity and Access Management (IAM) que admiten diversas opciones de implementación de Kubernetes, incluidas Amazon EKS, Amazon EKS Anywhere Red Hat OpenShift Service en AWS (ROSA) y clústeres de Kubernetes autogestionados en Amazon Elastic Compute Cloud (Amazon). EC2 Estas funciones utilizan estructuras de IAM, como los proveedores de identidad de OpenID Connect (OIDC) y las políticas de confianza de IAM, para funcionar en diferentes entornos sin depender directamente de los servicios de Amazon EKS o. APIs Para obtener más información, consulte Roles de IAM para cuentas de servicio en la documentación de Amazon EKS.
Amazon EKS Pod Identity simplifica el proceso para que las cuentas de servicio de Kubernetes asuman roles de IAM sin necesidad de proveedores de OIDC. Ofrece la posibilidad de administrar las credenciales de sus aplicaciones. En lugar de crear y distribuir tus AWS credenciales a los contenedores o usar el rol de la EC2 instancia de Amazon, asocias un rol de IAM a una cuenta de servicio de Kubernetes y configuras tus Pods para que usen la cuenta de servicio. Esto lo ayuda a utilizar un rol de IAM en varios clústeres y simplifica la administración de políticas al permitir la reutilización de las políticas de permisos en todos los roles de IAM.
Al implementar KEDA con Amazon EKS Pod Identity, las empresas pueden lograr un escalado automático eficiente basado en eventos y una administración de credenciales simplificada. Las aplicaciones se escalan en función de la demanda, lo que optimiza la utilización de los recursos y reduce los costos.
Este patrón lo ayuda a integrar Amazon EKS Pod Identity con KEDA. Muestra cómo puede utilizar la cuenta de servicio keda-operator y delegar la autenticación con TriggerAuthentication. También describe cómo configurar una relación de confianza entre un rol de IAM para el operador de KEDA y un rol de IAM para la aplicación. Esta relación de confianza permite a KEDA supervisar los mensajes de las colas de eventos y ajustar la escala de los objetos de Kubernetes de destino.
Requisitos previos y limitaciones
Requisitos previos
AWS Command Line Interface (AWS CLI) versión 2.13.17 o posterior, instalada
La versión 3.11.5 o posterior de Python instalada
AWS SDK para Python (Boto3) versión 1.34.135 o posterior, instalada
La versión 3.12.3 o posterior de Helm instalada
La versión 1.25.1 o posterior de kubectl instalada
La versión 26.1.1 o posterior de Docker Engine instalada
Un clúster de Amazon EKS (versión 1.24 o posterior) creado
Se cumplen los requisitos previos para crear el agente de Amazon EKS Pod Identity
Limitaciones
Es necesario establecer una relación de confianza entre los roles
keda-operatorykeda-identity. Las instrucciones se proporcionan en la sección Epics de este patrón.
Arquitectura
En este patrón, se crean los siguientes recursos: AWS
Repositorio de Amazon Elastic Container Registry (Amazon ECR): en este patrón, este repositorio se denomina
keda-pod-identity-registry. Este repositorio privado se usa para almacenar imágenes de Docker de la aplicación de muestra.Cola de Amazon Simple Queue Service (Amazon SQS): en este patrón, esta cola se denomina
event-messages-queue. La cola actúa como un búfer de mensajes que recopila y almacena los mensajes entrantes. KEDA supervisa las métricas de la cola, como el recuento de mensajes o la longitud de la cola, y escala automáticamente la aplicación en función de estas métricas.Rol de IAM para la aplicación: en este patrón, este rol se denomina
keda-identity. El rolkeda-operatorasume este rol. Este rol permite tener acceso a la cola de Amazon SQS.Rol de IAM para el operador KEDA: en este patrón, este rol se denomina
keda-operator. El operador KEDA usa esta función para realizar las llamadas a la AWS API necesarias. Este rol concede permisos para asumir el rolkeda-identity. Debido a la relación de confianza entre los roleskeda-operatorykeda-identity, el rolkeda-operatortiene permisos de Amazon SQS.
A través de los recursos personalizados TriggerAuthentication y ScaledObject de Kubernetes, el operador usa el rol keda-identity para conectarse con una cola de Amazon SQS. En función del tamaño de la cola, KEDA escala automáticamente la implementación de la aplicación. Añade 1 pod por cada 5 mensajes no leídos de la cola. En la configuración predeterminada, si no hay mensajes sin leer en la cola de Amazon SQS, la aplicación se reduce verticalmente a 0 pods. El operador de KEDA supervisa la cola en un intervalo especificado.
La siguiente imagen muestra cómo se utiliza Amazon EKS Pod Identity para proporcionar al rol keda-operator un acceso seguro a la cola de Amazon SQS.

En el diagrama, se muestra el siguiente flujo de trabajo:
El agente Amazon EKS Pod Identity se instala en el clúster de Amazon EKS.
El operador de KEDA se implementa en el espacio de nombres de KEDA del clúster de Amazon EKS.
Los roles
keda-operatory dekeda-identityIAM se crean en el destino. Cuenta de AWSSe establece una relación de confianza entre los roles de IAM.
La aplicación se implementa en el espacio de nombres
security.El operador de KEDA sondea los mensajes de una cola de Amazon SQS.
KEDA inicia HPA, que escala automáticamente la aplicación en función del tamaño de la cola.
Tools (Herramientas)
Servicios de AWS
Amazon Elastic Container Registry (Amazon ECR) es un servicio de registro de imágenes de contenedor administrado que es seguro, escalable y fiable.
Amazon Elastic Kubernetes Service (Amazon EKS) le ayuda a ejecutar AWS Kubernetes sin necesidad de instalar o mantener su propio plano de control o nodos de Kubernetes.
AWS Identity and Access Management (IAM) le ayuda a administrar de forma segura el acceso a sus AWS recursos al controlar quién está autenticado y autorizado a usarlos.
Amazon Simple Queue Service (Amazon SQS) ofrece una cola alojada segura, duradera y disponible que le permite integrar y desacoplar sistemas y componentes de software distribuidos.
Otras herramientas
KEDA
es un escalador automático basado en eventos que se basa en Kubernetes.
Repositorio de código
El código de este patrón está disponible en el escalado GitHub automático basado en eventos mediante EKS Pod Identity y el repositorio KEDA
Prácticas recomendadas
Recomendamos que siga las siguientes prácticas recomendadas:
Security best practices in IAM (Prácticas recomendadas de seguridad en IAM)
Epics
| Tarea | Descripción | Habilidades requeridas |
|---|---|---|
Cree el rol de IAM del operador de KEDA. |
| Administrador de AWS |
Cree un rol de IAM para la aplicación de muestra. |
| Administrador de AWS |
Crear una cola de Amazon SQS. |
| AWS general |
Cree un repositorio de Amazon ECR. |
| AWS general |
| Tarea | Descripción | Habilidades requeridas |
|---|---|---|
Implemente el agente Amazon EKS Pod Identity. | Para el clúster de Amazon EKS, configure el agente Amazon EKS Pod Identity. Siga las instrucciones de Configuración del agente Amazon EKS Pod Identity en la documentación de Amazon EKS. | AWS DevOps |
Implemente KEDA. |
| DevOps ingeniero |
Asigne el rol de IAM a la cuenta de servicio de Kubernetes. | Siga las instrucciones de Asignación de un rol de IAM a una cuenta de servicio de Kubernetes en la documentación de Amazon EKS. Use los siguientes valores:
| AWS DevOps |
Creación de un espacio de nombres de . | Introduzca el siguiente comando para crear un espacio de nombres
| DevOps ingeniero |
| Tarea | Descripción | Habilidades requeridas |
|---|---|---|
Clone los archivos de la aplicación. | Introduzca el siguiente comando para clonar el autoescalado basado en eventos mediante EKS Pod Identity y el repositorio KEDA desde
| DevOps ingeniero |
Cree la imagen de Docker. |
| DevOps ingeniero |
Envíe la imagen de Docker a Amazon ECR. |
notaPara encontrar los comandos de inserción, vaya a la página del repositorio de Amazon ECR y, a continuación, seleccione Ver comandos de inserción. | DevOps ingeniero |
Implemente la aplicación de muestra. |
| DevOps ingeniero |
Asigne el rol de IAM a la cuenta de servicio de la aplicación. | Realice una de las siguientes acciones para asociar el rol de IAM
| DevOps ingeniero |
Implemente |
| DevOps ingeniero |
| Tarea | Descripción | Habilidades requeridas |
|---|---|---|
Envíe mensajes a la cola de Amazon SQS. |
| DevOps ingeniero |
Supervise los pods de aplicaciones. |
| DevOps ingeniero |
Resolución de problemas
| Problema | Solución |
|---|---|
El operador de KEDA no puede escalar la aplicación. | Introduzca el siguiente comando para comprobar los registros del rol de IAM
Si hay un código de respuesta
Si se produce un error
|
Recursos relacionados
Configuración del agente Amazon EKS Pod Identity (documentación de Amazon EKS)
Implementación de KEDA
(documentación de KEDA) ScaledObject especificación
(documentación de KEDA) Autenticación con TriggerAuthentication
(documentación de KEDA)