Si eres un desarrollador, normalmente querrías implementar aplicaciones en contenedores en Kubernetes. Pero la pregunta es, ¿cómo? ¿Por qué no intentar usar la CLI de AWS EKS?
En este tutorial, aprenderás cómo configurar la CLI de AWS EKS para crear un clúster de Kubernetes, para que puedas centrarte en tu código en lugar de administrar la infraestructura.
Sigue leyendo y comienza a crear tu clúster hoy mismo!
Prerrequisito
Este tutorial será una demostración práctica. Si quieres seguirlo, asegúrate de tener una PC y una cuenta de AWS. Si no tienes una cuenta de AWS, está disponible una cuenta gratuitaen el nivel gratuito.
Creación de un usuario administrador
Antes de crear un clúster de Kubernetes, crearás un usuario administrador. Un usuario administrador te permite iniciar sesión en la consola de AWS para configurar tu clúster. Inicia este tutorial creando un usuario con permisos de administrador a través de la Consola de AWS.
1. Inicia sesión en tu Consola de AWS y accede a tu panel de IAM.
Haz clic en Usuarios (panel izquierdo) -> Agregar usuarios (arriba a la derecha) como se muestra a continuación para iniciar la adición de usuarios.

2. A continuación, proporciona un nombre de usuario en el campo Nombre de usuario, aquí se utiliza K8-Admin, marca la opción Clave de acceso: acceso programático y haz clic en Siguiente: Permisos.
Estás seleccionando la opción Clave de acceso: acceso programático ya que es accesible de forma programática. Como resultado, puedes usar una aplicación para comunicarte directamente con AWS sobre qué acciones tomar.

3. Haz clic en la opción Adjuntar directamente las políticas existentes, marca la política AdministratorAccess y haz clic en Siguiente: Etiquetas.
La política AdministratorAccess otorga al usuario (K8-Admin) acceso completo a AWS, y más como sigue:
- Permite al usuario usar CloudFormation
- Crear instancias de EC2 y registros de CloudWatch
- Configurar balanceadores de carga elástica.

4. Haz clic en Siguiente: Revisar para omitir la adición de etiquetas.

5. Por último, revisa los detalles del usuario y haz clic en Crear usuario para finalizar la creación del usuario administrador.

Una vez que la creación del usuario administrador esté completa, recibirás un mensaje de Éxito en la parte superior de la pantalla, como el siguiente. Toma nota de la Identificación de la clave de acceso y de la clave de acceso secreta ya que utilizarás estas claves para iniciar sesión más tarde.

Lanzando una instancia EC2
Ahora que has creado el K8-Admin, puedes crear tu primera instancia EC2. Utilizarás esta instancia como tu nodo maestro, donde ejecutarás tus comandos para crear el clúster.
1. Ve a tu panel de EC2, haz clic en EC2, luego en Lanzar instancias en la parte más a la derecha de la página. Al hacerlo, tu navegador se redireccionará a una página donde podrás elegir una Imagen de Máquina Amazon (AMI) (paso dos).

2. A continuación, haz clic en Seleccionar junto a (más a la derecha) la Amazon Linux 2 AMI (HVM) de la lista, como se muestra a continuación.
Amazon Linux 2 AMI (HVM) proporciona el kernel de Linux 5.10 ajustado para un rendimiento óptimo de la última generación de hardware. Esta AMI también tiene muchas características requeridas por los clústeres de Kubernetes a nivel de producción.

3. Deja la configuración por defecto (t2.micro) para el tipo de instancia y haz clic en Siguiente: Configurar detalles de la instancia para configurar la instancia.

4. Habilita la opción de Asignación automática de IP pública y luego Siguiente: Agregar almacenamiento. Esta opción asegura que cada uno de tus contenedores pueda acceder a la IP pública de tu nodo maestro de Kubernetes y tus instancias EC2.

5. Mantén la configuración predeterminada (Root) en la página de Agregar Almacenamiento y haz clic en Siguiente: Agregar etiquetas. El volumen Root es necesario para leer y escribir datos desde dentro de la instancia.

6. Omite la adición de etiquetas y haz clic en Siguiente: Configurar Grupo de Seguridad.

7. Mantén las opciones predeterminadas en el grupo de seguridad, como se muestra a continuación, y haz clic en Revisar y Lanzar.

8. Revisa los detalles del lanzamiento de la instancia y haz clic en Lanzar para iniciar la instancia. Aparecerá una ventana emergente donde puedes elegir seleccionar un par de claves existente o crear uno nuevo (paso nueve).

9. En la ventana emergente, configura el par de claves de la siguiente manera:
- Selecciona Crear un nuevo par de claves en el menú desplegable.
- Elige RSA como el Tipo de par de claves.
- Proporciona tu Nombre de par de claves preferido. Pero para este tutorial, el nombre del par de claves está configurado como my-nvkp.
- Haz clic en Descargar Par de Claves, luego en Lanzar Instancias.

Tu instancia puede tardar uno o dos minutos en lanzarse por completo. Una vez que la instancia esté en ejecución, la verás listada en tu panel de EC2, como se muestra a continuación.

Configuración de la Herramienta AWS CLI
Ahora que tu instancia está en ejecución, es hora de configurar las herramientas de línea de comandos (CLI). Utilizar las herramientas de CLI en conjunto con tu cuenta de AWS es esencial para crear tu clúster de Kubernetes.
1. Desde tu panel de EC2, marca la casilla para seleccionar la instancia, como se muestra a continuación. Haz clic en Connect para iniciar la conexión con la instancia.

2. A continuación, haz clic en el botón Connect para conectarte a la instancia que seleccionaste previamente en el paso uno.

Una vez que te hayas conectado a tu instancia EC2, tu navegador se redirigirá a la terminal interactiva que se muestra a continuación como tu sesión SSH temporal con tu instancia EC2.
La terminal interactiva te permite conectarte a la línea de comandos y ejecutar comandos administrativos en tu nueva instancia.

3. Ejecuta el comando aws
a continuación para verificar la versión de tu CLI.
Como puedes ver en la salida a continuación, estás ejecutando la versión 1.18.147 en tu instancia Amazon Linux 2, que está desactualizada. Necesitas descargar e instalar AWS CLI versión 2+ para asegurarte de que puedas acceder a todas las funciones de Kubernetes (paso tres).

4. Ahora, ejecuta el comando curl
a continuación para descargar la herramienta CLI v2+ y guárdala en un archivo zip llamado awscliv2.zip
.

5. Ejecuta los siguientes comandos para descomprimir el archivo descargado y determinar dónde está instalada la versión obsoleta de AWS CLI.
Como puedes ver en la salida a continuación, la versión obsoleta de AWS CLI está instalada en /usr/bin/aws. Necesitas actualizar esta ruta con la versión actualizada.

6. Ejecute el comando a continuación para realizar lo siguiente y actualizar la ruta de instalación de AWS CLI en su instancia:
- Instale las herramientas actualizadas de AWS CLI en su instancia de Amazon Linux 2 (
sudo ./aws/install
). - Establezca el directorio (
--install-dir /usr/bin/aws-cli
) donde instalar las herramientas CLI. Al hacerlo, le permite transferir la AWS CLI actualizada a otras instancias sin reinstalar las herramientas CLI. - Actualice (
--update
) su entorno de shell actual con la nueva ruta para las herramientas AWS CLI si hay una en su entorno actual.

7. Vuelva a ejecutar el comando aws --version
a continuación para verificar que la AWS CLI actualizada esté instalada correctamente.
La versión de AWS CLI instalada es 2.4.7, como se muestra a continuación, que es la última versión de AWS CLI 2.4.7 en el momento de escribir este documento.

8. A continuación, ejecute el comando aws configure
para configurar su instancia con las nuevas herramientas AWS CLI.
Ingrese los valores apropiados en los mensajes como se muestra a continuación:
- ID de clave de acceso de AWS [Ninguno] – Ingrese el ID de clave de acceso que anotó en la sección anterior “Creación de su usuario administrador”.
- Clave de acceso secreta de AWS [Ninguno] – Ingrese la clave de acceso secreta que anotó en la sección anterior “Creación de su usuario administrador”.
- Nombre de región predeterminado [Ninguno] – Seleccione una región admitida, como us-east-1.
- Formato de salida predeterminado [Ninguno] – Ingrese json, ya que el formato JSON es el estándar preferido para usar con Kubernetes.

Configuración de la Herramienta de Línea de Comandos Amazon EKS (eksctl)
Como tu objetivo es crear un clúster de Kubernetes con la CLI de AWS EKS, también configurarás la herramienta de línea de comandos Amazon EKS (eksctl). Esta herramienta te permite crear y gestionar clústeres de Kubernetes en Amazon EKS.
1. Instala la última versión de la herramienta de línea de comandos de Kubernetes (kubectl) en tu instancia de EC2. Esta herramienta te permite ejecutar comandos contra clústeres de Kubernetes.
2. A continuación, ejecuta el comando curl
a continuación para recuperar la última versión de eksctl
desde GitHub a tu directorio /tmp como un archivo .tar.gz, luego extrae el contenido del archivo en el directorio /tmp.
Ejecuta los siguientes comandos para realizar lo siguiente:
- Recuperar la última versión de
eksctl
desde GitHub (--location
) como un archivo .tar.gz ("<https://github.com/weaveworks/eksctl/releases/latest/download/eksctl_$>(uname -s)_amd64.tar.gz"
) - Extraer el contenido del archivo al directorio /tmp (
tar xz -C /tmp
), mientras que la bandera--silent
suprime la salida de progreso del comando. - Mover (
sudo mv
) el binario de eksctl (/tmp/eksctl
) al directorio donde instalaste AWS CLI (/usr/bin
)
3. Por último, ejecuta el comando a continuación para confirmar que has instalado eksctl
correctamente.
La salida a continuación confirma que has instalado eksctl correctamente.

Si eres nuevo en eksctl
, puedes ejecutar el comando a continuación para obtener una lista de todos los comandos admitidos de eksctl
y su uso.

Provisión de tu clúster de EKS
Ahora que has configurado eksctl, puedes provisionar tu primer clúster de EKS con los comandos de eksctl
.
Ejecuta el comando eksctl
a continuación para crear tu primer clúster y realizar lo siguiente:
- Crea un clúster de Kubernetes de 3 nodos llamado
dev
con un tipo de nodo comot3.micro
y región comous-east-1
. - Define un mínimo de un nodo (
--nodes-min 1
) y un máximo de cuatro nodos (--nodes-max 4
) para este grupo de nodos administrado por EKS. El grupo de nodos se llamastandard-workers
. - Crea un grupo de nodos con el nombre
standard-workers
y selecciona un tipo de máquina para el grupo de nodosstandard-workers
.

2. Ve a tu panel de CloudFormation para ver las acciones realizadas por el comando. El comando eksctl create cluster
utiliza CloudFormation para aprovisionar la infraestructura en tu cuenta de AWS.
Como puedes ver a continuación, se está creando una pila de CloudFormation llamada eksctl-dev-cluster. Este proceso puede tardar 15 minutos o más en completarse.

3. Ahora, ve a tu panel de EKS y verás un clúster llamado dev aprovisionado. Haz clic en el enlace dev para acceder al panel de control del clúster EKS de dev.

A continuación, puedes ver los detalles del clúster EKS de dev, como el Nombre del nodo, Tipo de instancia, Grupo de nodos y Estado.

4. Cambia a tu panel de EC2 y verás que hay cuatro nodos en ejecución, con tres de ellos teniendo el rol t3.micro en tu cuenta de AWS (tres nodos de trabajo y un nodo maestro).

5. Por último, ejecuta el siguiente comando para actualizar la configuración de kubectl (update-kubeconfig
) con el punto final, el certificado y las credenciales de tu clúster.

Implementación de una aplicación en el clúster EKS
Has creado tu clúster EKS y has confirmado que está funcionando perfectamente. Pero por ahora, el clúster EKS simplemente está ahí. Para esta demostración, aprovecharás el clúster EKS desplegando una aplicación NGINX.
1. Ejecute el siguiente comando yum
para instalar
git
aceptando automáticamente todas las indicaciones (-y
) durante la instalación.

2. A continuación, ejecute el comando git clone
a continuación para clonar los archivos de configuración desde el repositorio de GitHub a su directorio actual. Utilizará estos archivos para crear una implementación de NGINX en sus pods y crear un balanceador de carga (ELB).

3. Ejecute los siguientes comandos para moverse al directorio ata-elk
, y crear (kubectl apply
) un servicio para NGINX (./nginx-svc.yaml
).

4. A continuación, ejecute el comando kubectl get service
para verificar el estado de su servicio NGINX.
Como puede ver a continuación, el tipo de servicio es un balanceador de carga, y Kubernetes creó un servicio (nginx-svc), que es su implementación de NGINX. También puede ver el nombre de host DNS externo del balanceador de carga creado por EKS en la columna IP EXTERNA.
Anota el nombre de host DNS externo del balanceador de carga ya que lo necesitarás más tarde para probar el balanceador de carga.

5. Ejecute el comando kubectl
a continuación para implementar los pods de NGINX.

6. Ejecute los siguientes comandos kubectl get
para verificar el estado de su despliegue NGINX y su pod NGINX correspondiente.
Como puede ver en la salida a continuación, hay tres pods en su despliegue, y todos están en ejecución.

7. A continuación, ejecute el comando kubectl get node
para verificar el estado de sus nodos de trabajo.

8. Ahora, ejecute el comando curl
a continuación para probar su equilibrador de carga. Reemplace <LOAD_BALANCER_DNS_HOSTNAME>
con el nombre DNS que anotó anteriormente (paso cinco).
Verá la página de bienvenida de NGINX del servicio NGINX creado por EKS, como se muestra a continuación. La salida confirma que su equilibrador de carga está funcionando correctamente y que puede acceder a sus pods NGINX.

9. Finalmente, para verificar, copie y pegue el nombre DNS del equilibrador de carga en una nueva púesta del navegador.
También verá una página de bienvenida de NGINX, lo que indica que su aplicación está funcionando.

Probando el Control de Kubernetes Altamente Disponible
Ahora que tiene un clúster en ejecución, probará si el plano de control de Kubernetes es altamente disponible. La disponibilidad de su aplicación depende de esta característica. Si el plano de control no funciona, sus aplicaciones estarán inactivas y no podrán atender a los usuarios.
Con la característica de control de Kubernetes altamente disponible, aumenta la disponibilidad de su aplicación. Probará esta característica deteniendo sus nodos de trabajo de EKS y verá si Kubernetes pone en marcha nuevos nodos para reemplazar los que fallaron.
1. En su panel de EC2, detenga todas las instancias de nodos de trabajo de EKS, como se muestra a continuación.

2. A continuación, ejecuta el siguiente comando para verificar el estado del nodo obrero.
Obtendrás una mezcla de estados, como Pendiente, Ejecutando, y Terminando. ¿Por qué? Porque al intentar detener todos los nodos obreros, Kubernetes detecta la falla y rápidamente levanta otro nodo.

3. Ahora ejecuta el comando kubectl get pod
para probar la funcionalidad de control de Kubernetes altamente disponible.
Puedes ver en la salida que hay tres nuevos pods (identificados por su edad) en estado Ejecutando. Estos nuevos pods indican que la funcionalidad de control de Kubernetes altamente disponible está funcionando según lo previsto.

4. Ejecuta el comando kubectl get service
a continuación para listar todos los servicios disponibles.
Puedes ver que Kubernetes ha creado un nuevo servicio y que el nombre DNS del balanceador de carga es diferente ahora. kubectl get service

5. Por último, copia y pega el nombre DNS del balanceador de carga en tu navegador. Obtendrás la página de bienvenida de NGINX como lo hiciste en el último paso de la sección “Implementación de una Aplicación en un Clúster de EKS”.
Conclusión
A lo largo de este tutorial, has aprendido cómo crear un clúster de EKS, implementar un servicio de NGINX desde tu contenedor y probar la funcionalidad del plano de control altamente disponible.
En este punto, deberías tener una buena comprensión de cómo crear clústeres de EKS en tu entorno de AWS.
¿Qué sigue para ti? ¿Quizás aprender cómo implementar una aplicación NodeJS usando Docker y K8s en AWS?