====== WordPress Deployment ======
$ kubectl create namespace wp-system -o yaml \
--dry-run=client > namespace-wp.yaml
$ kubectl apply -f namespace-wp.yaml
namespace/wp-system created
$ cat secret-wp
password=ga3isgBT4dXG
username=userwp
passworduser=ga3isgBT4dXG
database=wpdb
$ kubectl create secret generic secret-wp -n wp-system \
--from-env-file=secret-wp -o yaml \
--dry-run=client > secret-wp.yaml
$ kubectl apply -f secret-wp.yaml
secret/secret-wp created
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: mysql-pv-claim
namespace: wp-system
spec:
storageClassName: nfs-client
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 8Gi
$ kubectl apply -f mysql-pv-claim.yaml
persistentvolumeclaim/mysql-pv-claim created
apiVersion: apps/v1
kind: Deployment
metadata:
name: mysql-wp
namespace: wp-system
spec:
selector:
matchLabels:
app: wordpress
tier: mysql
strategy:
type: Recreate
template:
metadata:
labels:
app: wordpress
tier: mysql
spec:
containers:
- image: mysql:latest
name: mysql
env:
- name: MYSQL_ROOT_PASSWORD
valueFrom:
secretKeyRef:
name: secret-wp
key: password
- name: MYSQL_USER
valueFrom:
secretKeyRef:
name: secret-wp
key: username
- name: MYSQL_PASSWORD
valueFrom:
secretKeyRef:
name: secret-wp
key: passworduser
- name: MYSQL_DATABASE
valueFrom:
secretKeyRef:
name: secret-wp
key: database
ports:
- containerPort: 3306
name: mysql
volumeMounts:
- name: persistent-storage
mountPath: /var/lib/mysql
volumes:
- name: persistent-storage
persistentVolumeClaim:
claimName: mysql-pv-claim
$ kubectl apply -f mysql-wp.yaml
deployment.apps/mysql-wp created
apiVersion: v1
kind: Service
metadata:
name: mysql-wp
namespace: wp-system
spec:
ipFamilies:
- IPv4
- IPv6
ipFamilyPolicy: PreferDualStack
ports:
- port: 3306
selector:
app: wordpress
tier: mysql
$ kubectl apply -f mysql-service.yaml
service/mysql-wp created
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: wordpress-pv-claim
namespace: wp-system
spec:
storageClassName: nfs-client
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10Gi
$ kubectl apply -f wordpress-pv-claim.yaml
persistentvolumeclaim/wordpress-pv-claim created
apiVersion: apps/v1
kind: Deployment
metadata:
name: wordpress
namespace: wp-system
spec:
selector:
matchLabels:
app: wordpress
tier: web
strategy:
type: Recreate
template:
metadata:
labels:
app: wordpress
tier: web
spec:
containers:
- image: wordpress:php8.1-apache
name: wordpress
env:
- name: WORDPRESS_DB_HOST
value: mysql-wp:3306
- name: WORDPRESS_DB_PASSWORD
valueFrom:
secretKeyRef:
name: secret-wp
key: passworduser
- name: WORDPRESS_DB_USER
valueFrom:
secretKeyRef:
name: secret-wp
key: username
- name: WORDPRESS_DB_NAME
valueFrom:
secretKeyRef:
name: secret-wp
key: database
ports:
- containerPort: 80
name: wordpress
volumeMounts:
- name: persistent-storage
mountPath: /var/www/html
volumes:
- name: persistent-storage
persistentVolumeClaim:
claimName: wordpress-pv-claim
$ kubectl apply -f wordpress.yaml
deployment.apps/wordpress created
apiVersion: v1
kind: Service
metadata:
name: wordpress
namespace: wp-system
spec:
ipFamilies:
- IPv4
- IPv6
ipFamilyPolicy: PreferDualStack
ports:
- port: 80
selector:
app: wordpress
tier: web
type: LoadBalancer
$ kubectl apply -f wordpress-service.yaml
service/wordpress created
$ kubectl get secret,pvc,svc,po -n wp-system
NAME TYPE DATA AGE
secret/default-token-vdwc6 kubernetes.io/service-account-token 3 15m
secret/secret-wp Opaque 4 10m
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
persistentvolumeclaim/mysql-pv-claim Bound pvc-4005b124-87e7-4f60-affa-42dbd0e9c62b 8Gi RWO nfs-client 7m49s
persistentvolumeclaim/wordpress-pv-claim Bound pvc-9fbc4a89-fc55-4337-94da-7bc6036fdea0 10Gi RWO nfs-client 3m41s
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/mysql-wp ClusterIP 10.96.209.235 3306/TCP 5m3s
service/wordpress LoadBalancer 10.96.228.221 172.28.128.117,2804:694:4c00:4007::117 80:32129/TCP 56s
NAME READY STATUS RESTARTS AGE
pod/mysql-wp-749d4f59cc-2l7ql 1/1 Running 0 6m8s
pod/wordpress-565685f8fc-knkvt 1/1 Running 0 2m3s
===== ReferĂȘncias =====
- [[https://sesamedisk.com/deploy-wordpress-on-k8s/|Deploy WordPress on K8s]]
- [[https://hub.docker.com/_/wordpress|wordpress]]