Blog de Amazon Web Services (AWS)

16 ventajas de Amazon EKS a tener en cuenta al momento de elegir su implementación de Kubernetes en AWS

Gabriel Bella Martini, arquitecto de soluciones educativas, sector público de AWS Brasil
Lucas Duarte, señor.  Especialista en contenedores SA, AWS LATAM

 

Amazon Elastic Kubernetes Service (Amazon EKS) es un servicio Kubernetes totalmente administrado. Amazon EKS ejecuta y gestiona el plano de control de Kubernetes con alta disponibilidad, haciendo uso de varias zonas de disponibilidad en AWS, detecta y reemplaza automáticamente los nodos del plano de control con problemas de salud y proporciona actualizaciones y parches a demanda; y es gracias a esto ello que EKS ofrece un SLA de disponibilidad del 99,95%. Al mismo tiempo, la consola EKS proporciona observabilidad sobre todos los clústeres Kubernetes asociados a su cuenta con el fin de poder identificar y resolver problemas más rápidamente.

En este blog vamos a hablar de las diversas ventajas de usar Amazon EKS, ya que al ser una versión administrada de Kubernetes, hay varias funcionalidades que son transparentes para el cliente, facilitando así el funcionamiento de su clúster y removiendo una significa cantidad de carga operativa sobre su equipo de operaciones. Para ello traeremos los puntos importantes de una manera sencilla y directa para ayudarle a que defina cómo implementará su entorno Kubernetes.

 

Aprovisionamiento y configuración

Plano de control administrado

El Plano de control de Kubernetes tiene los componentes esenciales para el funcionamiento del clúster, y son responsables de detectar eventos y tomar acciones en el clúster. Requisitos tales como trabajar con alta disponibilidad y escalabilidad de cada uno de sus componentes son necesarios para que Kubernetes funcione adecuadamente en ambientes productivos. EKS administra automáticamente la disponibilidad en todas las zonas de disponibilidad y la escalabilidad de los componentes de capa de persistencia de la API de Kubernetes y etcd para cada clúster.

Grupos de nodo administrados

Aprovisionar, registrar, actualizar y administrar sus propios nodos (instancias de Amazon EC2) puede ser una tarea difícil. EKS le permite utilizar nodos administrados mediante la integración perfecta con Amazon EC2 Auto Scaling y la capacidad de utilizar instancias Spot, Arm e  Inf (Neuron). Esto le permitira, de forma simplificada, poder crear, registrar automáticamente en el clúster autoscaler, actualizar automáticamente o terminar nodos en el clúster con una sola operación. Por otra parte, es importante considerar el modelo de responsabilidad compartida, ya que siendo necesario comprobar y utilizar las últimas versiones de AMIs oficiales de AWS para EKS o instalar parches de seguridad si utiliza AMIs personalizadas.

Fargate

AWS Fargate es un servicio para ejecutar contenedores sin servidor (serverless). Fargate elimina la necesidad de elegir un tipo de instancia, actualizar y administrar máquinas virtuales (EC2) y escalar la capacidad del clúster, centrándose únicamente en ejecutar sus contenedores. EKS le permite utilizar nodos de tipo Fargate mediante controladores creados por AWS e instalados en el plano de control administrado por EKS, con una integración perfecta con los componentes de Kubernetes. Compruebe a través de este enlace para ver si este modelo de ejecución es el mejor para su tipo de carga de trabajo.

Consola y eksctl

AWS ofrece dos formas nativas de administrar y aprovisionar el clúster EKS. A través de la consola de AWS, puede administrar, ver y solucionar problemas en un solo lugar centralizado. También puede utilizar eksctl, una herramienta de línea de comandos (CLI) de código abierto para simplificar las operaciones de clúster, incluida la administración de nodos, el aprovisionamiento de infraestructura y los complementos.

Complementos administrados (Add-ons)

Amazon EKS le permite instalar, administrar y actualizar complementos (Add-ons) en su clúster directamente a través de la consola, CLI o API. Todos los complementos disponibles a través de la API de EKS son validados por AWS y se pueden agregar en el momento de aprovisionamiento del clúster o posterior. Un complemento de ejemplo es la CNI VPC, que discutiremos más adelante. Para comprobar los complementos disponibles hasta ahora, siga las instrucciones de este enlace.

 

Actualizar

Control de versiones del plano de control

Amazon EKS proporciona una forma prescriptiva de actualizar el Plano de control, el proceso de actualización consiste en que Amazon EKS lanza nuevos nodos del servidor API con la versión actualizada de Kubernetes para reemplazar los nodos existentes, ya que es un servicio gestionado, Amazon EKS ejecuta verificaciones de integridad en estos nuevos nodos y valida su funcionamiento antes de proceder con la actualización y mantiene los de la versión anterior en caso de que sea necesario volver atrás (rollback). Es importante tener en cuenta que la versión de los Nodos debe ser la misma que la versión del Plano de Control en el momento de actualizar la versión, más información sobre la actualización prescriptiva se puede encontrar en este enlace.

Actualizar grupos de nodos administrados

Como se informó en párrafos anteriores, el uso de grupos de nodos administrados es una forma de automatizar el aprovisionamiento y la administración del ciclo de vida de los nodos. Al utilizar Amazon EKS, sus nodos son  actualizados automáticamente, aumentando el tamaño máximo y el tamaño deseado del grupo de escalamiento automático (Autoscaling Group) hasta en dos veces el número de zona de disponibilidad, esto garantiza que al menos una nueva instancia con la nueva versión comience en todas las AZs en las que esté implementado el grupo de escalamiento automático; Por otra parte, si está utilizando una AMI optimizada de Amazon EKS, los últimos parches de seguridad y del sistema operativo se aplican automáticamente y la actualización se puede realizar a través de eksctl o también a través de la consola de AWS. Cómo actualizar un grupo de nodos administrados se puede encontrar en este enlace.

Actualizar grupos de nodos auto gestionados (Self-managed Node Groups)

El proceso de actualización de los grupos de nodos auto gestionados (nodos manejados por el cliente), es un poco más complejo, ya que los pasos que realiza Amazon EKS de forma automatizada deben ser realizados por el administrador del clúster de forma «manual», básicamente hay dos formas de realizar la actualización de la versión de un grupo de nodos auto gestionado, las cuales son:

 

Seguridad

OpenID

OpenID Connect es un protocolo de autenticación basado en OAuth 2.0, la cual agrega una capa encima de OAuth 2.0 que habilita la identificación de quién ha iniciado sesión; en Amazon EKS puede utilizar un proveedor de identidad OIDC público como Amazon o su propio proveedor de identidad.

IAM Roles para cuentas de servicio (service accounts)

Cuando se lanzó Amazon EKS, no había una forma nativa de asociar roles con objetos Kubernetes, como un POD o un Deployment. Para abordar este requisito, la comunidad inventó algunas soluciones de código abierto, como kube2iam, kiam entre otras. Ahora se puede asociar un IAM Role a una cuenta de servicio de Kubernetes, la cual provee credenciales de AWS para los contenedores de cualquier POD que use esa cuenta de servicio. Los IAM Roles para las cuentas de servicio ofrecen las siguientes ventajas:

  • Mínimo pprivilegio: al usar roles de IAM para cuentas de servicio, ya no es necesario proporcionar permisos extendidos para el rol de nodo que están ejecutando los pods.
  • Aislamiento de credenciales: un contenedor sólo puede usar las credenciales del rol de IAM asociado a su cuenta de servicio.
  • Auditoría: el registro de eventos y acceso está disponible en AWS CloudTrail.

Auditoría

Amazon EKS está integrado con AWS CloudTrail, un servicio que proporciona un registro de las acciones realizadas por un usuario, rol o servicio de AWS en Amazon EKS. CloudTrail captura todas las llamadas API de servicio de Amazon EKS como eventos, incluidas las llamadas a la consola de Amazon EKS, llamadas de código desde los clientes CLI y operaciones sobre la API de Amazon EKS. También puede enviar registros del plano de control a Amazon CloudWatch Logs, algunos tipos de registros que puede habilitar son API Server, Controller Manager y Scheduler.

Security group para pods

El uso de grupos de seguridad para pods solo es posible usando el CNI de Amazon VPC, vamos a explicar cómo funciona Amazon VPC CNI y sus beneficios en los siguientes puntos. Los security group para pods integran los ya conocidos security groups de Amazon EC2 con los pods de Kubernetes, puede utilizar los security groups de Amazon EC2 para definir reglas que permitan el tráfico de red entrante y saliente hacia y desde los pods que implementa en nodos que se ejecutan en muchos tipos de instancias de Amazon EC2.

Envelope Encryption con KMS

Amazon EKS le permite implementar Envelope Encryption de secretos de Kubernetes mediante llaves de AWS KMS para clústeres EKS existentes. El envelope encryption agrega una capa de cifrado administrado por el cliente a los secretos de aplicaciones o a los datos de usuario almacenados en un clúster de Kubernetes, aprenda a implementar el cifrado de envolventes usando eksctl en este enlace.

 

Redes

API server público y privado

El API Server es uno de los componentes del Plano de control responsable de la comunicación del clúster. Al exponer una API HTTP, se permite consultar y manipular el estado de los objetos en Kubernetes. De forma predeterminada, EKS crea un API Server público con integración con AWS IAM y RBAC  nativo de Kubernetes. Para restringir el acceso solo a través de un Amazon VPC , el clúster le permite habilitar el acceso privado. Este cambio se puede realizar en un clúster existente o puede definirse en un clúster nuevo. Si es necesario, también es posible mantener ambos tipos de comunicación, pública y privada. Puede consultar más detalles aquí

CNI VPC

Teniendo en cuenta la interfaz de red de Kubernetes, AWS admite de forma nativa el complemento CNI VPC de código abierto que permite a los pods tener direcciones IP dentro del rango de su VPC y la capacidad de utilizar de manera transparente los recursos de seguridad y red que AWS proporciona, como security groups y reglas de enrutamiento. Si desea utilizar otro complemento CNI también es posible, y se recomienda tener la experiencia de gestionar una red Kubernetes con este plugin y/o soporte comercial del plugin elegido, algunos ejemplos son Calico y  Weave Net

Nube híbrida

Amazon EKS Anywhere le permite crear y poner en funcionamiento clústeres EKS en su propio centro de datos y con las mismas herramientas que EKS en AWS. La distribución utilizada por Amazon EKS es EKS Distro , que está disponible en forma de código abierto en GitHub.

 

Conclusión

Durante  este Blogpost, se abordaron algunos puntos y ventajas del uso de Amazon EKS, ya que es un servicio gestionado por AWS, hay varias características integradas que facilitan el funcionamiento del clúster de Kubernetes, reduciendo así la sobrecarga operativa del administrador del clúster y equipos operativos. Al elegir dónde implementar el clúster, es importante tener en cuenta, además de los precios, todas las ventajas vinculadas al uso de un servicio administrado.

 

Este artículo fue traducido del Blog de AWS en Portugués

 


Sobre os autores

Gabriel Bella Martini es arquitecto de soluciones de AWS con un enfoque en los clientes de educación. Tiene experiencia en diferentes proyectos relacionados con la Inteligencia Artificial y tiene gran interés en los gráficos por ordenador.

 

 

 

 

Lucas Duarte es arquitecto de contenedores de AWS centrado en clientes LATAM. Entusiasta de la automatización, la nube y la cultura de DevOps. Con experiencia previa en proyectos enfocados en este segmento en empresas como iFood, Guiabolso y Mandic. Ha trabajado en diferentes proyectos relacionados principalmente con la orquestación de contenedores y microservicios.