Mastering Three-Tier Architecture: Deploying WordPress and MySQL on Kubernetes

Avnish Kumar Thakur
3 min readApr 18, 2024

--

Introduction:

This guide will delve into the intricacies of setting up a three-tier architecture on Kubernetes, using WordPress as our front end and MySQL as our backend database.

Setting up MySQL:

To kickstart our journey, let’s first lay the foundation with MySQL, the backbone of our three-tier architecture. We’ll leverage Kubernetes to deploy a MySQL instance effortlessly. Using the following commands, we’ll create a deployment for MySQL and configure essential environment variables:

kubectl create deployment mysqldeployment --image=mysql
MySQL POD

The above command will give the error.

kubectl logs mysqldeployment-56fb6fd64b-vwg5h 

command for solving the above error.

kubectl set env deployment mysqldeployment MYSQL_ROOT_PASSWORD=redhat MYSQL_DATABASE=blogdb MYSQL_USER=vimal MYSQL_PASSWORD=redhat
kubectl expose deployment mysqldeployment --port 3306

Setting up WordPress:

With MySQL up and running, let’s deploy WordPress on Kubernetes. Following the steps below, we’ll create a WordPress deployment, expose it to the outside world, and ensure seamless connectivity with our MySQL database:

kubectl create deployment wpdeploy --image=wordpress:latest
kubectl expose deployment wpdeploy --type=NodePort --port=80

After exposing the WordPress, get the minikube IP and connect with the port number Given by the service.

Ip Of The Database Host

Connecting Database with WordPress:

challenge:

  1. Dynamic Pod IP Changes: In the event of a database Pod recreation, the IP address associated with it undergoes alteration, leading to disconnection from the database.
  2. Security Vulnerabilities: Unauthorized access to the command prompt exposes sensitive database details in clear text, posing a significant security risk.
  3. Data Integrity Concerns: The deletion of the database results in the loss of entire datasets, jeopardizing data integrity and business continuity.

Note: In the next blog, I will address all these challenges by leveraging various resource types and deploy the entire WordPress application using YAML files instead of commands.

Follow for more !!!

--

--

Avnish Kumar Thakur

Software Engineer | Tech Enthusiast | Linux, DevOps, ML, Python, Java, C | AWS | Generative AI | Researcher | Vlogger | Uncovering Tech's Depths