1. Introducción

En este artículo, vamos a crear un clúster de Kubernetes en el servicio de EKS, con esto ya tendremos un clúster levantado y listo para poder empezar a desplegar nuestro código custom.

Es posible que no conozcas alguno de los servicios que se mencionan, así que te dejamos una breve descripción de qué hace cada uno de ellos:

¿Que es IAM y para que lo usaremos?

AWS IAM (Identity and Access Management) es un servicio de Amazon Web Services que permite gestionar el acceso a los servicios y recursos de AWS de manera segura. Se utiliza para:

  • Autenticación: Verificar la identidad de los usuarios antes de permitirles el acceso a los recursos de AWS.
  • Autorización: Asignar permisos específicos a usuarios, grupos y roles para controlar qué acciones pueden realizar en AWS.
  • Gestión de políticas: Crear políticas que definan los permisos y asociarlas a las entidades de IAM para gestionar el acceso a los recursos.

Es fundamental para la seguridad en la nube, ya que permite a los administradores de sistemas controlar quién puede hacer qué dentro de su entorno de AWS. Por ejemplo, se puede permitir a un desarrollador acceder a instancias EC2 pero no a otros servicios a los que no tendria que poder acceder, o se puede restringir el acceso a ciertos servicios solo a usuarios con autenticación multifactor.

En nuestro caso, lo usaremos para autorizar a Cloud Formation para que pueda crear los recursos necesarios, así como para dar permisos a la consola de AWS para que pueda obtener los datos necesarios para mostrar la información del estado del cluster.

¿Qué es Cloud Formation y para que se utiliza?

Cloud Formation es un servicio ofrecido por Amazon Web Services (AWS) que permite a los usuarios definir y provisionar recursos de manera programática en la nube utilizando archivos de texto JSON o YAML, en lugar de configurarlos manualmente a través de la consola de AWS, también conocido como “Infrastructure as Code” o infraestructura como código.
En pocas palabras, Cloud Formation proporciona una forma de crear y gestionar de manera automatizada la infraestructura y los servicios en la nube de AWS. Esto se logra mediante la definición de un conjunto de recursos y sus relaciones en un único archivo de plantilla, que describe la configuración deseada de la infraestructura. Estos recursos pueden incluir instancias EC2, security groups, load balancers, bases de datos RDS, colas de mensajes SQS, entre otros servicios de AWS.

Una vez que se crea una plantilla de Cloud Formation que describe la infraestructura necesaria, se puede usar esa plantilla para lanzar una pila (conocidos como stacks) de CloudFormation. Un stack es una instancia única de los recursos definidos en la plantilla, es decir, si lanzamos 2 stacks iguales, crearemos por diplicado los recursos definidos en un stack (siempre y cuando no haya conflictos). Cloud Formation se encarga de provisionar y configurar estos recursos según lo especificado en la plantilla de Cloud Formation.

¿Que és una VPC?

Una VPC (Virtual Private Cloud) es un servicio proporcionado por Amazon Web Services (AWS) que te permite crear una red virtual aislada en la nube. Para alguien que nunca ha estado en la nube, esto puede sonar un poco abstracto, así que déjame explicarlo de manera más sencilla:

Imagina que tienes una oficina física con diferentes departamentos, como recursos humanos, ventas y contabilidad. Cada departamento necesita su propio espacio para trabajar y almacenar información, pero al mismo tiempo, necesitas que estén conectados para poder comunicarte y compartir datos cuando sea necesario.

En el mundo de la nube, una VPC es como esa oficina física, pero virtual. Te permite crear diferentes “departamentos” o subredes dentro de esta red virtual. Cada subred puede tener sus propias reglas de seguridad y acceso, lo que significa que puedes controlar quién puede acceder a qué recursos y desde dónde.

Además, una VPC te permite conectar tu red virtual en la nube con tu infraestructura de TI existente, como tu red corporativa. Esto se hace a través de conexiones VPN (Redes Privadas Virtuales) o conexiones directas, lo que te permite extender tu red empresarial a la nube de manera segura.

En resumen, una VPC en AWS te proporciona un entorno virtual privado y seguro en la nube donde puedes ejecutar tus aplicaciones y servicios, al tiempo que controlas completamente la configuración de red y la seguridad.

2. ¿Cómo vamos a crear el clúster? Lo decides tú

Hay 2 formas que podemos emplear para crear nuestro clúster:

Todo y que ahora el proceso de crear un clúster en EKS desde la consola es muy fácil y amigable, no siempre ha sido así. Cuando empezamos la prueba de concepto sobre la que se basa esta serie de artículos, desde la consola de AWS no se podía ver prácticamente nada. Por eso, creemos necesario explicaros ambos procesos, y que escojáis el que más os conviene.

Si ya tienes experiencia moviéndote por AWS, te resultará más sencillo hacerlo a través de la consola. En cambio, si tienes experiencia creando clústers de Kubernetes a mano, eksctl te puede resultar más familiar.

En el caso de que no lo tengas claro, te recomendamos hacerlo desde la consola de AWS, dado que en caso de error proporciona más información.

3. Antes de nada

Con tal de aislar completamente esta prueba de concepto de cualquier recurso que puedas tener en uso en tu cuenta, te recomendamos lo siguiente:

Recalcar que es muy importante que no haya nada en esa región o en esa cuenta, ya que al final de la serie estaremos eliminando los recursos, y no queremos arriesgarnos a eliminar algo que este en uso.

4. Vamos a crear un clúster

Con el fin de avanzar rápidamente hacia nuestro objetivo, utilizaremos siempre que se pueda Infraestructura como código que os proporcionaremos nosotros.

4.1 Creemos el VPC con todos los recursos necesarios

Principalmente en AWS para cualquier aplicación que queramos tener, necesitaremos un Virtual Private Cloud, que nos permitiría tener aislados todos los recursos de una aplicación a otra.

Como este tutorial no va sobre como crear un VPC, te proporcionaremos un template de CloudFormation que te permitirá crear todos los recursos necesarios.

Si ya sabes como desplegar un template de CloudFormation, puedes desplegarlo y obviar la explicación debajo. El archivo es el siguiente.

ADVERTENCIA: Desplegar este template creará recursos que tienen coste económico.

Como crear el ROL de CloudFormation (solo primera vez)
  • Si es nuestro primer template de CloudFormation, tendremos que crear un rol AWS IAM que permita a CloudFormation asumir el rol. Para ello nos dirigiremos a la Consola de AWS, iremos al servicio IAM (a trabes del buscador de la parte superior) y vamos a seleccionar ROLES. Le daremos a “Crear”.
  • En este apartado, en el buscador resaltado buscaremos “CloudFormation”, y seleccionaremos este “Use case”.
  • Seleccionaremos la política “AmazonVPCFullAccess”. Esta política nos va a permitir que este rol pueda crear los recursos necesarios.
  • En el siguiente paso nos pedirá ponerle un nombre y una descripción.
  • En el siguiente paso será de verificación. Asegúrate de que concuerda, sobretodo los steps 1 y 2.
  • En el step 3 puedes añadir TAGS que te ayuden a identificar todos los recursos que este template ha creado.
  • Finalmente, le daremos a “create” y crearemos el ROL.
Como desplegar un template de CloudFormation
  • Para desplegar nuestro primer template tendremos que ir a CloudFormation (usa el buscador superior), iremos al apartado de Stacs y seleccionaremos “Crear Stack” y del dropdown seleccionaremos “Con nuevos recursos”.
  • En esta pantalla, seleccionaremos que el template ya esta preparado, que queremos subir un archivo, seleccionar el fichero a subir (OJO: Tiene que ser un JSON o YAML, no puede ser .ZIP ni nada más, si tienes un .ZIP extrae los ficheros). Una vez subido el fichero, dale a “Next”.
  • En el siguiente apartado nos va a preguntar por un nombre y parámetros, solo introducimos el nombre y le damos a NEXT.
  • En el apartado de Tags puedes añadir tantos tags como quieras (hasta 50). Eso sí, te recomendamos que incluyas una que indique el nombre del Stack que la ha creado.
  • En el apartado de permisions tienes que seleccionar el Rol que hemos creado anteriormente.
  • En el apartado de “Stack failure options”, dejaremos las opciones que vienen por defecto. Y finalmente le daremos a crear.
  • Esperaremos a que todos los recursos se hayan creado correctamente.

Una vez desplegado el template, ya habremos creado lo siguiente (AZ = Zona de disponibilidad):

Si no sabes que es o para qué se usa cada cosa, tranquil@, esto daría para otra serie de artículos que ahora mismo no es imprescindible para llevar a cabo el proyecto.

Para verificar que todo está correcto, ve al buscador de la consola de AWS y busca VPC, una vez dentro selecciona el VPC llamado “EKS-TEST-VPC” y ve al apartado “Resource Map” y tendria que ver algo parecido a la ultima imagen.

4.2 Creemos el cluster de EKS

Ahora viene la elección entre EKSCTL o AWS,

AWS EKS ¿Como vas a crear el clúster?
0 votes · 0 answers

Antes de nada, tendremos que crear un usuario IAM que asumirá el clúster. Para evitar que puedas tener problemas, tendrás que desplegar tal como lo hemos hecho antes este template de CloudFormation.

OJO: En el último paso tendrás que seleccionar.

4.2.1 Como crearlo desde la consola de AWS

Para crear el cluster desde la consola de AWS, seguiremos los siguentes pasos.

4.2.2 Como crearlo desde EKSCTL

4.2.2.1 Modificación del fichero de configuración

Para crear un clúster desde EKSCTL vamos a tener que modificar el fichero de configuración del cúster con los datos correctos. Aquí os proporcionamos el template:

Tendremos que hacer ciertas modificaciones. Para ello, abre el fichero con VSCode (o tu IDE preferido) y sigue los pasos.

4.2.2.2 Configuración de AWS CLI

Para poder crear nuestro clúster, tendremos que tener configurado AWS CLI. Para comprovar que lo tenemos correctamente instalado, ejecutaremos “aws configure”. Tendría que devolvernos algo así:

Haz Control + C para cancelar y en caso de que no te salga, revisa este artículo TODO donde instalábamos todo el software necesario.

Para obtener los parámetros que nos pide, tendremos que obtener claves programáticas. Si ya las tienes, usa esas. Sino ahora las crearemos.

Como crear claves programáticas para usar el AWS CLI
  • Primero, iremos a la consola de AWS y buscaremos IAM.
  • Una vez estemos en el apartado de usuarios, buscaremos nuestro usuario.
  • Seleccionaremos el usuario y nos iremos al apartado de “Security Credentials”
  • Iremos al apartado “Access keys” y le daremos a “Create Key”.
  • Una vez dentro, seleccionaremos la opción “Command Line Interface”, seleccionaremos el checkbox de la parte inferior y le daremos a “Next”.
  • En el apartado de descripción, añade algun texto que te permita identificar para que se va a usar esta clave programatica. Le daremos a “Create access key”.
  • Una vez ya hemos creado una access key y secret key, nos guardaremos los valores en un lugar seguro. ESTO ES COMO EL USUARIO Y CONTRASEÑA DE AWS, ASÍ QUE MUCHO CUIDADO DONDE LO GUARDAS.
  • Finalmente abriremos una consola o terminal. Ahí ejecutaremos “aws configure” para configurar las credenciales del usuario que va a crear el cluster.
    Es importante que pongas la region donde has creado todos los recursos anteriormente mencionados.

4.2.2.3 Creemos el clúster

Primero de todo, abriremos una consola en la carpeta donde está el template que te hemos proporcionado y que ya has adaptado a tu casuística.

Comprobaremos que eksctl funciona ejecutando “eksctl version”, y tendría que respondernos con la versión que está corriendo ahora mismo.

Ahora si, ha llegado el momento de clear el clúster. Para ello vamos a hacer lo siguiente:

5. Conclusión

En este artículo hemos creado un clúster básico de Kubernetes, y hemos configurado todo lo necesario para tener un clúster en funcionamiento. Ahora solo faltaria definir que y como va a correr dentro de nuestro clúster de kubernetes.

Hay que tener en cuenta, que los nodos master que comentavamos en el articulo 1. Fundamentos ya estan corriendo en multiples Zonas de disponibilidad dentro de la region seleccionada, por lo que nosotros no tenemos que pensar en gestionarlos, sino que se encarga AWS.

En el siguiente articulo, vamos a crear las imagenes que van a correr dentro de los pods y como subirlo a ECR (Elastic Container Repository) para que puedan ser obtenidos de allí por EKS.


Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *