Kubernetes es ahora la forma estándar de implementar aplicaciones que son escalables y tienen alta disponibilidad. Kubernetes permite a los desarrolladores levantar y bajar instancias rápidamente según sea necesario para garantizar una entrega fluida de contenido. Para obtener más información sobre Kubernetes, siga nuestra guía detallada Conociendo Kubernetes.
Helm es un gestor de paquetes muy popular que se utiliza para instalar aplicaciones en Kubernetes. Helm tiene como objetivo implementar y administrar aplicaciones en clústeres de Kubernetes y simplificar el proceso a medida que avanzamos. También proporciona acceso a aplicaciones listas para usar para Kubernetes que están empaquetadas. Estas se denominan Charts. Estar familiarizado con Kubernetes y Helm es una adición importante al arsenal de cualquier especialista en DevOps.
WordPress es uno de los sistemas de gestión de contenidos (CMS) más populares. Combinarlo con la base de datos MySQL da como resultado aplicaciones web de alto rendimiento y altamente escalables. Mantener MySQL externo también permitirá que más aplicaciones aprovechen la misma base de datos para sus casos de uso.
En esta publicación, instalaremos WordPress en Kubernetes utilizando el gestor de paquetes Helm y los conectaremos a un servidor MySQL externo. ¡Comencemos!
Prerequisites
Se necesitará la siguiente configuración de software para completar con éxito este tutorial:
- Un clúster de Kubernetes activo y en funcionamiento. Siga este tutorial para conocer los pasos de instalación de Kubernetes en Ubuntu.
- La herramienta de línea de comandos de Kubernetes
kubectl. - Necesitará tener instalado el gestor de paquetes Helm. Si no tiene Helm listo para usar, puede descargarlo desde su página oficial de lanzamientos en GitHub – helm/helm: The Kubernetes Package Manager. Para comenzar con una guía paso a paso de Helm, también puede leer Introduction to Helm: Package Manager for Kubernetes.
- Necesitará tener instalado MySQL junto con el usuario root y la contraseña. Si es nuevo en MySQL, asegúrese de consultar How to setup MySQL on a server and MySQL basics y MySQL User – Create and Grant Permissions.
También necesita tener un clúster de Kubernetes en funcionamiento conectado con MySQL. Para los usuarios que tienen múltiples clústeres, asegúrese de conocer el clúster actual conectado con MySQL. Para ver todos los diferentes clústeres configurados en su archivo de configuración kubectl, ejecute el siguiente comando:
|
1 |
kubectl config get-contexts |
En su máquina, debería obtener la siguiente salida:
|
Actual |
Nombre |
Clúster |
AuthInfo |
Namespace |
|
* |
docker-desktop |
docker-desktop |
docker-desktop |
Dado que estamos usando Docker Desktop para ejecutar Kubernetes, verá docker-desktop en pantalla. Sus valores pueden ser diferentes. El signo de asterisco (*) indica qué clúster es actualmente el contexto predeterminado. En caso de que necesite cambiar el contexto actual, ejecute:
|
1 |
kubectl config use-context context-name |
Ahora está listo para seguir los pasos del tutorial.
Configuración de MySQL
Primero, crearemos un usuario dedicado en MySQL para conectarnos a WordPress. Esto es necesario porque nuestra instalación de WordPress residirá en un servidor separado dentro del clúster de Kubernetes. Desde el servidor MySQL, inicie sesión en MySQL con el siguiente comando:
|
1 |
mysql -u root -p |
Se le solicitará la contraseña de root. Ingrese la contraseña y se conectará.
-
Creación de una base de datos dedicada para WordPress
En MySQL puede haber cualquier cantidad de bases de datos. Además, las bases de datos se pueden compartir entre aplicaciones. WordPress también viene con su propia base de datos. Aquí tenemos que crear una base de datos dedicada para WordPress. Para crear esta base de datos dedicada, puede ejecutar la siguiente instrucción en la consola de MySQL:
|
1 |
CREATE DATABASE wordpress |
-
Creación de un usuario dedicado para WordPress
Una vez creada la base de datos, crearemos un usuario dedicado para esta base de datos. Usaremos este usuario para conectarnos a nuestra base de datos recién creada:
|
1 |
CREATE USER wordpress_user IDENTIFIED BY '<password>'; |
Introduzca una contraseña segura arriba. Aunque hemos creado el usuario para WordPress, no hemos añadido ningún privilegio hasta ahora. Necesitamos proporcionar privilegios a nuestros usuarios para el acceso y las operaciones DML (Manipulación de Datos). Para simplificar las cosas, vamos a proporcionar a nuestros usuarios todos los privilegios. Tenga cuidado, esto no se recomienda en Producción. Ejecute el siguiente comando en la consola de MySQL:
|
1 |
GRANT ALL PRIVILEGES ON wordpress.* TO wordpress_user@'%'; |
Para actualizar las tablas internas de MySQL que gestionan los permisos de acceso, utilice la siguiente sentencia:
|
1 |
FLUSH PRIVILEGES; |
Finalmente, puede cerrar el cliente MySQL ejecutando el siguiente comando en la consola de MySQL:
|
1 |
Exit; |
-
Verificación de nuestro usuario y base de datos
A continuación, tenemos que verificar que nuestro WordPress usuario pueda conectarse a la base de datos de WordPress. Para hacer esto, abra la consola de MySQL y ejecute el siguiente comando:
|
1 |
mysql -u <wordpress_user> -p |
|
1 |
show databases |
-
Permitir conexiones remotas a nuestro servidor MySQL
Hasta ahora, tenemos un usuario de WordPress y una base de datos de WordPress en funcionamiento. Sin embargo, nuestro servidor MySQL y la base de datos de WordPress están en servidores separados. Por lo tanto, debemos asegurarnos de que WordPress pueda conectarse a la base de datos MySQL. Para ello, necesitamos editar nuestra configuración de MySQL para permitir conexiones procedentes de hosts remotos. Tendrá que editar el mysqld.cnf archivo. En sistemas basados en Linux, este archivo se encuentra en:
|
1 |
/etc/mysql/mysql.conf.d/mysqld.cnf |
Después de eso, abra el archivo usando cualquier editor de texto y localice bind-address. El bind-address especifica la IP en la que MySQL puede escuchar. Por defecto, MySQL escucha solo en 127.0.0.1.. Para permitir conexiones desde hosts externos, cambie el bind-address a 0.0.0.0.. Para que estos cambios surtan efecto, reinicie el servidor MySQL ejecutando el siguiente comando:
|
1 |
systemctl restart mysql |
|
1 |
mysql -h <mysql_server_ip> -u wordpress_user -p |
mysql_server_ip al comando anterior y ejecútelo. Si puede conectarse sin errores, puede continuar.
Instalación y actualización de WordPress
WordPress por defecto utiliza MariaDB como su base de datos. No queremos usar esta base de datos, ya que queremos nuestra base de datos MySQL. Junto con este cambio, también necesitamos configurar el usuario administrador y la contraseña. Haremos esto implementando parámetros de línea de comandos.
Primero, cree una nueva carpeta llamada my blog-settings. Dentro de la carpeta, cree un nuevo archivo llamado values.yaml . Introduzca el siguiente contenido en el values.yaml archivo:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
## WordPress Settings wordpressUsername: my_user wordpressPassword: some_strong_password wordpressEmail: sample@example.com wordpressFirstName: User wordpressLastName: Last wordpressBlogName: Mi Blog! ## Database Settings externalDatabase: host: <mysql_server_ip> user: wordpress_user password: password database: wordpress ## Enable Maria DB mariadb: enabled: false |
Este archivo se explica por sí mismo. Observe que a continuación hemos desactivado MariaDB. Ahora que nuestra configuración está lista, es hora de ejecutar helm para una instalación de WordPress. Ejecute el siguiente comando en PowerShell:
|
1 |
helm install myblog -f values.yaml stable/wordpress |
myblog-wordpress. Pasará algún tiempo antes de que WordPress esté listo para ser utilizado. Para encontrar los servicios en ejecución, ejecute el siguiente comando:|
1 |
kubectl get services |
|
NAME |
TYPE |
CLUSTER-IP |
EXTERNAL-IP |
PORT |
|
myblog-wordpress |
ClusterIP |
10.96.0.1 |
<none> |
80:31403/TCP,443:30879/TCP |
Aquí tenemos información muy útil sobre los servicios en ejecución. Debemos prestar atención a la IP externa y al puerto. La IP externa es la IP en la que se está sirviendo su WordPress. Dado que estamos utilizando Docker Desktop, obtenemos none en la IP externa. Obtendrá la IP dependiendo de su sistema. Abra su navegador web e introduzca esta IP. Verá la página de inicio de sesión de WordPress:
Estas son las credenciales que hemos proporcionado en el archivo YAML anterior. Introduzca esas credenciales y estará listo para configurar su sitio web en WordPress y almacenar contenido en nuestra base de datos MySQL recién creada.
Actualizar WordPress
WordPress lanza actualizaciones para corregir vulnerabilidades de seguridad y lanzar más funciones/correcciones de errores y más. Puede actualizar la instalación de WordPress ejecutando el siguiente comando en PowerShell:
|
1 |
helm upgrade |
Antes de la actualización, si desea ver la lista de versiones lanzadas puede ejecutar el siguiente comando:
|
1 |
helm list |
Obtendrá la siguiente salida como:
|
1 2 3 |
Espere un momento mientras nosotros obtenemos lo último de sus repositorios de charts… …Omitir local repositorio de charts …Con éxito se obtuvo una actualización desde el “stable” repositorio de charts |
Si desea ver si hay una nueva versión disponible del repositorio de WordPress, puede ejecutar el siguiente comando:
|
1 |
helm inspect chart stable/wordpress |
Siempre que desee actualizar su versión de WordPress al último chart de WordPress, debe ejecutar:
|
1 |
helm upgrade -f values.yaml <su_nombre> stable/wordpress |
Tenemos que usar el mismo archivo de configuración que antes para que los valores de configuración no cambien.
Revertir una versión
Cada vez que realiza una actualización utilizando Helm, Helm crea un punto de control de la versión. Puede volver atrás si las cosas no funcionan como se esperaba. Las versiones se pueden comparar y revertir. Si el proceso de actualización sale mal debido a cualquier problema, puede revertir a la versión anterior. Para revertir, ejecute el siguiente comando:
|
1 |
helm rollback release-nombre revisión-número |
En nuestro caso, ejecute el siguiente comando para revertir a la versión anterior:
|
1 |
helm rollback myblog 1 |
Para verificar ahora que el proceso de reversión se ha completado con éxito, puede ejecutar el comando helm list .
Conclusión
En este completo tutorial, le mostramos cómo configurar MySQL e instalar WordPress con este MySQL externo. Instalamos WordPress en Kubernetes utilizando el gestor de paquetes Helm y también realizamos actualizaciones en WordPress.
Ahora que conoce la instalación en Kubernetes utilizando Helm, no se detenga aquí. No dude en revisar el blog de CloudSigma para obtener más información sobre Kubernetes:
- Implementar una aplicación PHP en un clúster de Kubernetes con Ubuntu 18.04
- Cómo crear un clúster de Kubernetes usando Kubeadm en Ubuntu 18.04
- ¿Qué es Docker? Una descripción general del ecosistema de Docker
¡Feliz computación!

Comentarios
Aún no hay comentarios. Sea el primero.