¡Participa de la Maratón Behind the Code, la competencia de programación más desafiante! Inscríbete aqui

Desplegar WordPress en Kubernetes en IBM Cloud

Introducción

En este tutorial vamos a ver el potencial de un Cluster de Kubernetes en IBM Cloud y aprender a desplegar uno de los más conocidos frameworks de sitios webs como lo es WordPress. Hay que tener en cuenta que el Cluster de Kubernetes de la cuenta gratuita de IBM Cloud expira a los 30 días, tiempo suficiente para poder realizar varias pruebas y testear la tecnología.

Cada componente se ejecuta en un contenedor o grupo de contenedores por separado. WordPress representa una aplicación típica de varios niveles y cada componente tendrá sus propios contenedores. Los contenedores de WordPress serán el nivel de frontend y el contenedor MySQL será el nivel de base de datos / backend para WordPress.

Objetivos

  • Crear y definir un Volumen Persistente.
  • Crear un Secret para proteger información sensible.
  • Crear un despliegue de WordPresss.
  • Crear un despliegue de una base de datos MySQL.

Módulos de esta ruta de aprendizaje

Completa estos tutoriales para obtener las habilidades prácticas y el conocimiento.

Título Tiempo Descripción
1 Desplegar WordPress en Kubernetes en IBM Cloud 30 minutos Aprender a desplegar uno de los más conocidos frameworks de sitios webs como lo es WordPress
2 Desplegar una aplicación desde una imagen propia de Docker en Kubernetes en IBM Cloud 30 – 60 minutos Aprenderemos a crear y modificar una imágen de Docker, subirla al repositorio en Docker Hub y actualizarla
3 Ubuntu Lab: Como crear un único Pod en un Clúster de Kubernetes Menos de 30 minutos Vamos a ver cómo implementar un Pod de Ubuntu en Kubernetes en IBM Cloud, con el objetivo de tener un Laboratorio para pruebas.
4 Monitoreo en Kubernetes: Crear una instacia de Grafana en Kubernetes y acceder externamente 30 minutos Vamos a ver cómo configurar un panel de Grafana en un Clúster de Kubernetes en IBM Cloud, usando Prometheus como herramienta de análisis de datos.
5 Aplicación PHP con MongoDB en Kubernetes 30 minutos Vamos a ver cómo implementar una aplicación PHP tipo Libro de Visitas con varios niveles utilizando Kubernetes y Docker, con una instancia única de MongoDB para almacenar las entradas del libro de visitas y varias instancias de frontend web.
6 Kubernetes en lo Profundo, tres elementos importantes 30 minutos Vamos a ver tres elementos que son muy importantes para ir profundizando en el uso de Kubernetes.

Requisitos

  • Una cuenta gratuita de IBM Cloud. Te podes registrar acá si no tenes una aun.
  • Un Cluster de Kubernetes gratuito. Obtener acá
  • Tener habilitados los comandos ibmcloud y kubectl. Configurar CLI
  • Puedes encontrar el repositorio con los archivos necesarios y ejemplificativos aquí

Tiempo estimado

El tiempo estimado que puede llevar este tutorial es menos de 30 minutos

Pasos para Desplegar en IBM Cloud

  1. Configurar Secrets para MySQL
  2. Crear volumenes persistentes locales
  3. Crear los servicios de despliegue para WordPress y MySQL
  4. Acceder al link externo de WordPress

1. Configurar Secret para MySQL

Secrets en Kubernetes permiten almacenar y administrar información confidencial, como contraseñas y claves ssh, de forma segura y flexible.

Crear un Secret con el siguiente comando (cambiar por su contraseña):

kubectl create secret generic mysql-pass --from-literal=password='tucontraseniasegura'

2. Crear volumenes persistentes locales

Para guardar la información y los datos, más allá de la vida útil de cada pod de Kubernete, necesitamos crear un volumen persistente para la base de datos MySQL y la aplicación de WordPress.

Crear el volumen persistente manualmente con el siguiente comando

kubectl create -f local-volumes.yaml

3. Crear los servicios de despliegue para WordPress y MySQL

Instalar el volumen persistente en el almacenamiento local del cluster, usar los secrets y crear los servicios para MySQL y WordPress.

kubectl create -f mysql-deployment.yaml
kubectl create -f wordpress-deployment.yaml

Para verificar que los los pods estén corriendo, usar el siguiente comando para ver el nombre de los pods:

kubectl get pods

Esto debería devolver la lista de pods del Cluster de Kubernetes.

NAME READY STATUS RESTARTS AGE
wordpress-57799cb7f8-prdxt 1/1 Running 0 31s
wordpress-mysql-5896755cf4-mq5q5 1/1 Running 1 40s

Para obtener la dirección IP de su cluster siga estos pasos:

Para ver el nombre del Cluster:

ibmcloud ks cluster ls

Para ver la IP Pública:

ibmcloud ks workers --cluster <nombre_del_cluster>

El resultado es similar a este:

OK
ID Public IP Private IP Flavor State Status Zone Version
kube-c1upsl3d07j9adhlggm0-ibmkubeclou-default-00000000 169.57.43.40 10.131.75.187 free normal Ready

Para obtener el puerto:

kubectl get services wordpress

El resultado es similar a este:

NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
wordpress LoadBalancer 172.21.160.82 <pending> 80:30180/TCP 23s

Felicitaciones! Ahora podemos usar el link http://[Public IP]:[PORT] para acceder al sitio de WordPress.

Nota: Para este ejemplo, el enlace quedaría de esta forma http://169.57.43.40:30180

Resumen

En este tutorial pudimos ver el potencial de Kuberneter en IBM Cloud y aprendimos a hacer un despliegue de WordPress con una base de datos MySQL, configurar los datos sensibles usando Secrets y generar volumenes persistentes para conservar la información.

Enlaces Interesantes