Upgrade & Secure Your Future with DevOps, SRE, DevSecOps, MLOps!

We spend hours scrolling social media and waste money on things we forget, but won’t spend 30 minutes a day earning certifications that can change our lives.
Master in DevOps, SRE, DevSecOps & MLOps by DevOpsSchool!

Learn from Guru Rajesh Kumar and double your salary in just one year.


Get Started Now!

Step-by-Step OpenShift WordPress Deployment Demo


šŸ›  Prerequisites:

  • OpenShift cluster (Local or Cloud)
  • oc CLI installed
  • Basic access (developer/admin rights)
  • DockerHub or Red Hat certified WordPress container access
  • (Optional) OpenShift Web Console access

šŸ”„ Step 1: Login to OpenShift Cluster

oc login --token=<your-token> --server=https://api.<cluster-domain>:6443
Code language: HTML, XML (xml)

Or via the Web Console.


šŸ— Step 2: Create a New Project (Namespace)

oc new-project wordpress-demo
Code language: JavaScript (javascript)

(You can also create it from Web Console: Projects > Create Project.)


šŸ“¦ Step 3: Deploy MySQL Database (for WordPress backend)

WordPress needs a database. Let’s deploy a simple MySQL Pod + Service.

a) Create a Secret for MySQL Passwords

oc create secret generic mysql-pass --from-literal=password=Wordpress@123
Code language: JavaScript (javascript)

b) Deploy MySQL using a Template or YAML

Here’s a sample YAML to create MySQL:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: mysql
spec:
  replicas: 1
  selector:
    matchLabels:
      app: mysql
  template:
    metadata:
      labels:
        app: mysql
    spec:
      containers:
      - name: mysql
        image: mysql:5.7
        env:
        - name: MYSQL_ROOT_PASSWORD
          valueFrom:
            secretKeyRef:
              name: mysql-pass
              key: password
        - name: MYSQL_DATABASE
          value: wordpress
        ports:
        - containerPort: 3306
        volumeMounts:
        - name: mysql-persistent-storage
          mountPath: /var/lib/mysql
      volumes:
      - name: mysql-persistent-storage
        emptyDir: {}
---
apiVersion: v1
kind: Service
metadata:
  name: mysql
spec:
  ports:
  - port: 3306
  selector:
    app: mysql
Code language: JavaScript (javascript)

Apply it:

oc apply -f mysql.yaml
Code language: CSS (css)

āœ… Now you have a MySQL backend running!


🌟 Step 4: Deploy WordPress Application

a) Deploy WordPress using YAML

Here’s a WordPress Deployment YAML:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: wordpress
spec:
  replicas: 1
  selector:
    matchLabels:
      app: wordpress
  template:
    metadata:
      labels:
        app: wordpress
    spec:
      containers:
      - name: wordpress
        image: wordpress:latest
        env:
        - name: WORDPRESS_DB_HOST
          value: mysql
        - name: WORDPRESS_DB_PASSWORD
          valueFrom:
            secretKeyRef:
              name: mysql-pass
              key: password
        ports:
        - containerPort: 80
        volumeMounts:
        - name: wordpress-persistent-storage
          mountPath: /var/www/html
      volumes:
      - name: wordpress-persistent-storage
        emptyDir: {}
---
apiVersion: v1
kind: Service
metadata:
  name: wordpress
spec:
  ports:
  - port: 80
  selector:
    app: wordpress
Code language: JavaScript (javascript)

Apply it:

oc apply -f wordpress.yaml
Code language: CSS (css)

āœ… Now WordPress Pod + Service are deployed!


šŸŒ Step 5: Expose WordPress to Public

Expose WordPress Service via Route (URL):

oc expose service wordpress

This will automatically create a Route.

šŸ“ You can get the URL:

oc get route wordpress
Code language: JavaScript (javascript)

Example output:

NAME        HOST/PORT                         PATH   SERVICES    PORT   TERMINATION   WILDCARD
wordpress   wordpress-demo.apps.cluster.com          wordpress   80                   None

Visit the URL in your browser — you’ll see the WordPress Installation Page šŸŽ‰


šŸ“ˆ Full Deployment Map:

ComponentDeployed AsNotes
MySQL DatabaseDeployment + Service + SecretWordPress backend
WordPress SiteDeployment + Service + RouteFrontend exposed to public

šŸ’¬ Final Words:

āœ… This is the simplest, fastest OpenShift WordPress demo. āœ… For Production:

  • Use Persistent Volumes (PVCs) instead of emptyDir.
  • Secure MySQL and WordPress (TLS, strong passwords).
  • Set Resource limits (CPU, Memory).
  • Scale Replicas.
  • Use OpenShift templates or Helm Charts.

šŸ“¦ Bonus: One-Line Deployment (S2I)

You can also deploy WordPress from Source using OpenShift templates:

oc new-app wordpress
Code language: JavaScript (javascript)

Subscribe
Notify of
guest
0 Comments
Newest
Oldest Most Voted
Inline Feedbacks
View all comments

Certification Courses

DevOpsSchool has introduced a series of professional certification courses designed to enhance your skills and expertise in cutting-edge technologies and methodologies. Whether you are aiming to excel in development, security, or operations, these certifications provide a comprehensive learning experience. Explore the following programs:

DevOps Certification, SRE Certification, and DevSecOps Certification by DevOpsSchool

Explore our DevOps Certification, SRE Certification, and DevSecOps Certification programs at DevOpsSchool. Gain the expertise needed to excel in your career with hands-on training and globally recognized certifications.

0
Would love your thoughts, please comment.x
()
x