Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

WordPress and Mysql connection doesn't work with kubernetes

I have created two yaml files. One for wordpress and one for Mysql.
I can create the pods without the a problem and I can access wordpress with terminal portforwarding in my browser.
But anytime I do this it says "Error astablishing a database connection". I don’t know why and I need help

I created both files with kubectl apply -f ."filename.yaml"

and I portforwarded wordpress with kubectl port-forward wordpress 8080:80

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

wordpress.yaml:

apiVersion: v1
kind: Pod
metadata:
  name: wordpress
spec:
  containers:
  - name: app
    image: wordpress:latest
    env:
    - name: "WORDPRESS_DB_HOST"
      value: "mysql-service"  
    - name: "WORDPRESS_DB_NAME"
      value: "MysqlDB"
    - name: "WORDPRESS_DB_USER"
      value: "admin"
    - name: "WORDPRESS_DB_PASSWORD"
      value: "Test"
    ports:
    - containerPort: 80

database.yaml:

apiVersion: v1
kind: Pod
metadata:
  name: database
  labels: 
    name: mysql-pod
spec:
  containers:
  - name: database
    image: mysql:latest
    env:
      - name: "MYSQL_USER"
        value: "admin"
      - name: "MYSQL_PASSWORD"
        value: "Test"
      - name: "MYSQL_DATABASE"
        value: "MysqlDB"
      - name: "MYSQL_ROOT_PASSWORD"
        value: "TFBern_3013"  
    ports:
    - containerPort: 3306
--- # Mysql Service definiert
apiVersion: v1
kind: Service
metadata:
  name: mysql-service
spec:
  ports:
    - port: 3306
  selector:
    name: mysql-pod

I also tried ping from wordpress to database and that worked without a problem. I just haven’t figured out to ping from database to wordpress beacause I don’t know how to install the ping package on bash-5.1

>Solution :

It looks like you might be missing a Kubernetes service for your MySQL pod, which is crucial for enabling communication between your WordPress and MySQL pods. Here’s how to set up the service:

Why You Need a Service

A Kubernetes Service provides a stable IP address for your pods and handles load balancing. Without this, the hostname ‘database’ used in your WordPress configuration cannot be resolved, causing the connection error.

Update the MySQL Pod Configuration:
Add a label to your MySQL pod so it can be targeted by the service:

# Add under metadata in your database.yaml
 metadata
   name: database
   labels:
     app: database

Create a Service:
Save this as mysql-service.yaml:

apiVersion: v1
kind: Service
metadata:
  name: database
spec:
  type: ClusterIP
  ports:
  - port: 3306
    targetPort: 3306
  selector:
    app: database
  1. Apply the Configuration:
    Run these commands:

    kubectl apply -f database.yaml
    kubectl apply -f mysql-service.yaml
    

Then try again and you shouldn’t get the “Failed to establish database connection” error anymore.

If it persists, do post more details and I’ll share my thoughts.

UPDATE

Just saw that you have a mysql-service, so as David mentioned, set WORDPRESS_DB_HOST=mysql-service and you should be good.

Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading