Lecciones

Cómo validar el estado de un cluster EKS desde CLI

Escrito por Laura Ardila Giraldo | 18 de agosto de 2020

Luego de realizar la creacion de un cluster de EKS desde Terraform, vamos a proceder con la validacion del despliegue correcto del cluster desde CLI, para lo cual vamos a instalar la utilidad de kubectl para que funcione con Amazon EKS, el autenticador de AWS IAM para Kubernetes y crear el archivo de configuración de kubectl para que lo use para la autenticación.

Pre-requisitos:

Kubectl

Es una utilidad de línea de comandos que permite realizar la comunicación con el servidor de la API del cluster. Los binarios de kubectl para Amazon EKS se encuentran disponibles para instalar en diferentes sistemas operativos (macOS, Linux, Windows)

Procedimiento para instalar kubectl en Linux

Descargue el binario de kubectl ofrecido por Amazon EKS para la versión de Kubernetes del clúster de Amazon S3. Para descargar la versión ARM, cambie amd64 a arm64 antes de ejecutar el comando.

Kubernetes 1.15

[user@pc ]# curl -o kubectl https://amazon-eks.s3.us-west-2.amazonaws.com/1.15.11/2020-07-08/bin/linux/amd64/kubectl

(Opcional) Compruebe el binario descargado con la suma SHA-256 del binario.
Descargue la suma SHA-256 de la versión de Kubernetes del clúster para Linux. Para descargar la versión ARM, cambie amd64 a arm64 antes de ejecutar el comando.

2. (Opcional) Compruebe el binario descargado con la suma SHA-256 del binario.

a) Descargue la suma SHA-256 de la versión de Kubernetes del clúster para Linux. Para descargar la versión ARM, cambie amd64 a arm64 antes de ejecutar el comando.

Kubernetes v1.15:

[user@pc ]# curl -o kubectl.sha256 https://amazon-eks.s3.us-west-2.amazonaws.com/1.15.11/2020-07-08/bin/linux/amd64/kubectl.sha256

b) Compruebe la suma SHA-256 de su binario descargado.
[user@pc ]# openssl sha1 -sha256 kubectl

c) Compare la suma SHA-256 generada en la salida del comando con su archivo SHA-256 descargado. Los dos deben coincidir.

3. Ejecute permisos de ejecución al binario. PENDIENTE

[user@pc ]# chmod +x ./kubectl

4. Copie el binario en una carpeta en PATH. Si ya ha instalado una versión de kubectl, le recomendamos que cree un $HOME/bin/kubectl y se asegure de que $HOME/bin es el primer elemento de $PATH. PENDIENTE

[user@pc ]# mkdir -p $HOME/bin && cp ./kubectl $HOME/bin/kubectl && export PATH=$PATH:$HOME/bin

5. (Opcional) Añada la ruta $HOME/bin a su archivo de inicialización del shell para que se configure al abrir un shell.

[user@pc ]# echo 'export PATH=$PATH:$HOME/bin' >> ~/.bashrc

6. Una vez instalado kubectl, puede comprobar la versión con el siguiente comando:

[user@pc ]# kubectl version --short --client

Autenticación de Cluster

aws-iam-authenticator

Es una herramienta que permite configurar las credenciales de AWS IAM para autenticarse en un clúster de Kubernetes.

Está disponible para ser instalado en diferentes sistemas operativos (macOS, Linux, Windows). En esta ocasión se va a realizar el proceso de instalación en Linux.

Procedimiento instalación aws-iam-authenticator en Linux

1. Descargue el binario Amazon EKS incluido en aws-iam-authenticator desde Amazon S3. Para descargar la versión ARM, cambie amd64 a arm64 antes de ejecutar el comando.

[user@pc ]# curl -o aws-iam-authenticator https://amazon-eks.s3.us-west-2.amazonaws.com/1.17.7/2020-07-08/bin/linux/amd64/aws-iam-authenticator

2. (Opcional) Compruebe el binario descargado con la suma SHA-256 proporcionada en el prefijo del bucket.

Descargue la suma SHA-256 de su sistema. Para descargar la versión ARM, cambie amd64 a arm64 antes de ejecutar el comando.

[user@pc ]# curl -o aws-iam-authenticator.sha256 https://amazon-eks.s3.us-west-2.amazonaws.com/1.17.7/2020-07-08/bin/linux/amd64/aws-iam-authenticator.sha256

b. Compruebe la suma SHA-256 de su binario descargado.
[user@pc ]# openssl sha1 -sha256 aws-iam-authenticator

c. Compare la suma SHA-256 generada en la salida del comando con su archivo aws-iam-authenticator.sha256 descargado. Los dos deben coincidir.

3. Asigne permisos de ejecución al binario.
[user@pc ]# chmod +x ./aws-iam-authenticator

4. Copie el binario en una carpeta en $PATH. Le recomendamos que cree $HOME/bin/aws-iam-authenticator y se asegure de que $HOME/bin viene en primer lugar en la variable $PATH.

[user@pc ]# mkdir -p $HOME/bin && cp ./aws-iam-authenticator $HOME/bin/aws-iam-authenticator && export PATH=$PATH:$HOME/bin

5. Agregue $HOME/bin a la variable de entorno PATH.
[user@pc ]# echo 'export PATH=$PATH:$HOME/bin' >> ~/.bashrc

6. Compruebe que el binario aws-iam-authenticator funciona.
[user@pc]# aws-iam-authenticator help

 

Crear el archivo kubeconfig automáticamente para Amazon EKS

Luego de tener listos los pre-requisitos mencionados en los puntos anteriores, procedemos a validar inicialmente las credenciales configuradas para la autenticación del cluster.

Nota: El autenticador de AWS IAM para Kubernetes utilizará de forma predeterminada las mismas credenciales que se devuelven con el siguiente comando:

[user@pc ]# aws sts get-caller-identity -- profile profile

1. Para crear el archivo kubeconfig con la AWS CLI, debemos validar inicialmente que se tenga instalada la version 1.16.156 o posterior

[user@pc ]# aws --version

2. Utilizamos el comando update-kubeconfig de AWS CLI para crear o actualizar el archivo kubeconfig del cluster.

Notas: El archivo de configuración se crea en la ruta de kubeconfig predeterminada (.kube/config) que se ubica en el directorio home del usuario.

Para ejecutar el comando, el usuario que se configuró debe tener habilitado el permiso eks:DescribeCluster sobre el clúster que se creó y se va a especificar para crear el archivo de configuración.

[user@pc ]# aws eks --region region-code update-kubeconfig --name cluster_name
aws eks --region us-east-1 update-kubeconfig --name prueba_eks

3. Finalizamos probando que la configuración quede correctamente y se pueda visualizar el estado del cluster de EKS que se creó desde Terraform.

[user@pc ]# kubectl get svc