Introducción a EKS (WordPress Helm)

Introducción

Proporciona la solución a la utilización de los servicios de un proveedor cloud y a su vez permitir a los usuarios crear rápidamente y fácil un cluster de Kubernetes en el cloud.

En la siguiente entrada se muestra una introducción a Amazon EKS, crear un cluster Kubernetes y desplegar un WordPress con helm. Esto proporciona un WordPress pre configurado.

Importante: EKS solo esta disponible a fecha de escritura de esta entrada en las regiones: us-west2 y us-east-1. Por lo tanto los siguientes procedimientos deben realizarse en una de estas regiones.

En esta entrada se asume que:

  • Dispone de una cuenta en AWS con la capacidad de iniciar sesión en ella.
  • Tiene instalado la última versión de la interfaz de linea de comandos de AWS. Más información.
  • Tiene instalado la última versión kubectlMás información.
  • Tiene las Access Keys generadas a partir de su IAM User en AWS y configuradas en su máquina.

 

Pre requisitos

Instalar heptio-authenticator-aws

Descargar el binario de heptio-authenticator-aws includo en Amazon EKS desde Amazon S3:

Dar permisos de ejecución al binario:

Copiar el binario en una carpeta en $PATH, crear $HOME/bin/heptio-authenticator-aws y asegurar que $HOME/bin esta situada en primer lugar en la variable $PATH:

Agregar $HOME/bin a la variable de entorno PATH:

Comprobar que funciona el binario:

 

Paso 1: Crear un IAM Service Role

Es necesario crear un “service role” que interactuará con el cluster de EKS, para poder hacerlo:

  • Una vez iniciada la sesión en la consola de AWS, navegar a esta página.
  • Pinchar en el botón “Create role” y elegir AWS service, posteriormente EKS y finalmente hacer click en el botón “Next: Permissions”.
  • En la ventana posterior a la imagen siguiente, hacer click en el botón “Next: Review”

  • Asignar un nombre al rol, por ejemplo: eks-role.

 

Paso 2: Generar un par de claves en AWS para los Worker Nodes

  • Navegar hasta el servicio EC2, dentro de la consola de AWS.
  • En el dashboard de Amazon EC2, seleccionar la opción “Key Pairs” en el apartado de “Network & Security”.
  • Click en el botón “Create Key Pair”. En la ventana emergente introducir un nombre para dicho par de claves y hacer clic en el botón “Create”.

  • Un “Key Pair” consiste básicamente de una clave pública SSH y una clave privada. Al hacer click en “Create” se descargará automáticamente la clave privada SSH.

Paso 3: Crear una VPC

Amazon EKS tambien necesita una VPC (Virtual Private Cloud) en la que poder desplegarse el cluster. Para crear dicha VPC:

  • Navegar al servicio de AWS CloudFormation en la consola, click en el botón “Create Stack”
  • En la página “Select Template”, elegir la opción de “Specify an Amazon S3 template URL” e introducir lo siguiente:
    • https://amazon-eks.s3-us-west-2.amazonaws.com/1.10.3/2018-06-05/amazon-eks-vpc-sample.yaml
  • En la página “Specify Details”, introducir un nombre: eks-vpc.
  • En la página “Options”, dejar los valores por defecto y hacer click en “Next”.
  • En la página “Review”, confirmar que los detalles del stack son los correctos.

El proceso de creación de los recursos del stack tardará pocos minutos.

 

Paso 4: Crear y conectar con el Amazon EKS Cluster

Ahora es posible proceder a la creación del cluster, para hacer esto:

  • Navegar a la consola de Amazon EKS.
  • Hacer click en el botón de “Create Cluster”.
  • Rellenar la siguiente información con los recursos creados en el stack:
    • En el campo “Cluster name”, introducir un nombre descriptivo. El nombre se requerirá posteriormente.
    • En el campo “Role ARN”, introducir el “IAM service role” creado en el paso 1.
    • En el campo “VPC”, introducir el identificador de la VPC creada en el paso 3.
    • En el campo “Subnets”, introducir las subnets asociadas a la VPC creadas en el paso 3.
    • En el campo “Security Groups”, seleccionar el identificador del security group creado en el paso 3.
  • Y hacer click en “Create”.

UnsupportedAvailabilityZoneException

El mensaje de error nos indica que no hay suficiente capacidad en la zona de disponibilidad “us-east-1a”, así que hay que cambiar en el template del stack e indicar que la Subnet 01, utilice la AZ us-east-1d.

 

El siguiente paso es configurar kubectl para que sea capaz de reconocer el nuevo cluster, para ello hay que:

  • Seleccionar el nuevo cluster en la consola de Amazon EKS. Y a partir de la página de detalles de dicho cluster, anotar el API server endpoint y el Certificate authority.
  • Crear un fichero de configuración de kubectl:

  • Añadir el fichero a la variable de entorno $KUBECONFIG, para que sea capaz de encontrarlo:

  • Rellenar el fichero con el siguiente contenido:
    • Reemplazar el placeholder “API-SERVER_ENDPOINT” con el endpoint obtenido en la página de detalles del cluster.
    • Reemplazar el placeholder “CA-DATA” con la información de “certificate authority” obtenido anteriormente.
    • Reemplazar el placeholder “CLUSTER-NAME” con el nombre del Amazon EKS cluster.
    • Reemplazar el placeholder “PROFILE-NAME” con el nombre del perfil usado en el fichero “~/.aws/credentials”.Por defecto, default.

Contenido del fichero: config-eks

  • Ejecutar el siguiente comando para comprobar que kubectl es capaz de comunicarse con el cluster:

Paso 5: Añadir Workers Nodes al cluster de EKS

Una vez se tiene el panel de control del cluster activado, el siguiente paso es añadirle nodos.Para ellos:

  • En la consola de AWS CloudFormation, hacer click en el botón “Create Stack”.
  • Y utilizar la opción de Amazon S3 template URL, introducir el siguiente valor:
    • https://amazon-eks.s3-us-west-2.amazonaws.com/1.10.3/2018-06-05/amazon-eks-nodegroup.yaml
  • En la página de “Specify Details”, introducir los siguientes detalles:
    • En el campo “Stack name”, introducir un nombre descriptivo para dicho stack. Ej: eks-worker-nodes
    • En el campo “Cluster name”, introducir el nombre del cluster especificado en el paso 4.
    • En el campo “ClusterControlPlaneSecurityGroup”, seleccionar el identificador del security group creado en el paso 3.
    • En el campo “NodeGroupName”, introducir un nombre descriptivo para el grupo de nodos. Ej: eks-nodegroup
    • En los campos “NodeAutoScalingGroupMinSize” “NodeAutoScalingGroupMaxSize”, introducir el número máximo y mínimo de nodos que debería tener el cluster.
    • En el campo “NodeInstanceType”, elegir el tipo de instancia para los nodos del cluster.
    • En el campo “NodeImageId”, elegir la AMI que utilizarán dichos nodos, existe una AMI especifica que depende de la región que se utilice actualmente:
      • us-west-2: ami-73a6e20b
      • us-east-1: ami-dea4d5a1
    • En el campo “Key Name”, elegir el key pair que se creó en el paso 2.
    • En el campo “VpcId”, seleccionar el identificador de la vpc creada en el paso 3.
    • En el campo “Subnets”, seleccionar los identificadores de las subnets creadas en el paso 3.
  • En la página “Options”, dejar los valores por defecto. Y hacer clic en “Next”.
  • En la página “Review”, confirmar que los detalles son los correctos y hacer clic en el botón “Create”.

A la hora de crear el stack anterior, es necesario marcar la última casilla para que cree un IAM Role para dichas instancias.

Una vez se cree el stack anterior, seleccionar la pestaña de “Outputs” y anotar el valor de la key “NodeInstanceRole”.

Posteriormente cambiar el valor ARN-ROLE por el valor obtenido en el siguiente fichero yaml.

auth.yaml

Ejecutar la siguiente instrucción para crear el recurso “ConfigMap”:

En este momento se debe poder listar los nodos del cluster:

Paso 6: Añadir un Storage Class al Amazon EKS Cluster

Por defecto, Amazon EKS no crea un “storage class” para el cluster. La mayoría de aplicaciones requieren de volumenes persistentes para el almacenamiento. Un storage class es requerido para proveer volumenes del servicio EBS a las aplicaciones. Para ello es necesario:

  • En nuestro sistema local, crear un fichero denominado storage-class.yaml y rellenarlo con la siguiente definición:

  • Aplicar los cambios:

  • Para comprobar que se ha aprovisionado el storage class, utilizar el siguiente comando:

 

Paso 7: Instalar Helm y Tiller

Helm es el camino más fácil para controlar las aplicaciones en un cluster de Kubernetes. Nos permite operaciones clave como la instalación, actualización o eliminación.

Helm se compone de dos partes: Helm (el cliente) y Tiller (el servidor). Para instalarlos, seguir los siguientes pasos:

  • Descargar e instalar Helm:

  • Instalar Tiller:

 

Paso 8:  Desplegar el WordPress Helm Chart

Una vez Helm este instalado. estas listo para desplegar WordPress utilizando el Bitnami WordPress Helm chart.

  • Añadir el repositorio chart de Bitnami a Helm:

  • Instalar el WordPress Helm chart:

 

  • Comprobar que ambos pods esten corriendo, para proceder a obtener los accesos:

  • Obtener el hostname del balanceador público para acceder a la aplicación:

 

  • Obtener las credenciales para acceder al blog:

 

Paso 9: Iniciar sesión y empezar a usar WordPress

  • Navegar hasta la url http://ELB-DNS/wp-admin e iniciar sesión con las credenciales obtenidas anteriormente.

 

 

Autor entrada: CharlieJ

Deja un comentario

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