WordPress je jedan od najpopularnijih sustava za upravljanje sadržajem koji se koristi za postavljanje blogova i web stranica na internetu. Također je dostupan i kao Docker slika na DockerHub registru. Možete koristiti ovu Docker sliku za izgradnju pouzdane i skalabilne platforme za web stranice na Kubernetes klasteru. Postavljanje WordPressa na Kubernetes pomoći će vam u implementaciji CI/CD cjevovoda i smanjiti vrijeme potrebno za izdavanje novih ažuriranja. Također možete omogućiti horizontalno skaliranje WordPress web stranice kako biste se nosili s naglim porastima prometa.
Ovaj vodič će vam pokazati kako postaviti WordPress i MySQL s Persistent Volume na Kubernetes klasteru.
Preduvjeti
- Osnovno razumijevanje Kubenertesa (k8s) i njegovih objekata. Pogledajte ovaj vodič za detaljan pregled Kubernetes ekosustava.
- Kubernetes klaster je aktivan i radi. Slijedite ovaj vodič kako biste instalirali Kubernetes klaster na Ubuntu 20.04.
Provjerite Kubernetes klaster
Prije početka, preporučuje se provjeriti status Kubernetes klastera. Možete koristiti kubectl naredbu za provjeru Kubernetesa.
|
1 |
kubectl get nodes |
Ako je sve u redu, trebali biste dobiti sljedeći izlaz.

Stvorite Secret za MySQL
A Secret je objekt koji vam omogućuje pohranu osjetljivih podataka poput lozinke ili ključa. U ovom članku koristit ćemo Secret za pohranu MySQL lozinke.
Prvo stvorite base64 kodiranu lozinku pomoću sljedeće naredbe.
|
1 |
echo -n 'your_secure_password' | base64 |
Dobit ćete svoju tajnu lozinku u sljedećem izlazu.
|
1 |
eW91cl9zZWN1cmVfcGFzc3dvcmQ= |
Zatim stvorite secret.yaml datoteku za MySQL i WordPress.
|
1 |
nano secret.yaml |
Dodajte sljedeću konfiguraciju.
|
1 2 3 4 5 6 7 |
apiVersion: v1 kind: Secret metadata: name: mysql-pass type: Opaque data: password: eW91cl9zZWN1cmVfcGFzc3dvcmQ= |
Spremite i zatvorite datoteku. Zatim primijenite gornju konfiguraciju na Kubernetes klaster pomoću sljedeće naredbe.
|
1 |
kubectl apply -f secret.yaml |
Dobit ćete sljedeći izlaz.
|
1 |
secret/mysql-pass created |
Stvorite PersistentVolume za MySQL i WordPress
Također ćete morati stvoriti PersistentVolume za pohranu podataka MySQL-a i WordPressa.
Stvorimo pvc-mysql-wp.yaml datoteku.
|
1 |
nano pvc-mysql-wp.yaml |
Dodajte sljedeće konfiguracije.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: mysql-pv-claim labels: app: wordpress spec: accessModes: - ReadWriteOnce resources: requests: storage: 40Gi --- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: wp-pv-claim labels: app: wordpress spec: accessModes: - ReadWriteOnce resources: requests: storage: 40Gi |
Spremite i zatvorite datoteku kada završite.
Zatim stvorite PersistentVolumes za MySQL i WordPress na Kubernetes klasteru pomoću sljedeće naredbe.
|
1 |
kubectl apply -f pvc-mysql-wp.yaml |
Trebali biste vidjeti oba PersistentVolumea u sljedećem izlazu.
|
1 2 |
persistentvolumeclaim/mysql-pv-claim created persistentvolumeclaim/wp-pv-claim created |
Sada možete provjeriti oba PersistentVolumea pomoću sljedeće naredbe.
|
1 |
kubectl get pv |
Trebali biste vidjeti sljedeći izlaz.
|
1 2 3 |
NAZIV KAPACITET NAČINI PRISTUPA POLITIKA POVRATA STATUS ZAHTJEV KLASA POHRANE RAZLOG STAROST pvc-873a458352594103 40Gi RWO Brisanje Vezano default/wp-pv-zahtjev vaša-blok-pohrana 3s pvc-de7d7de5e53a40e8 40Gi RWO Brisanje Vezano default/mysql-pv-zahtjev vaša-blok-pohrana 3s |
Stvori MySQL deployment
Zatim stvorite konfiguracijsku datoteku za MySQL deployment kako biste preuzeli MySQL Docker sliku, stvorili spremnik i montirali PersistentVolume na /var/lib/mysql.
|
1 |
nano mysql-deployment.yaml |
Dodajte sljedeću konfiguraciju.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
apiVersion: v1 kind: Service metadata: name: wordpress-mysql labels: app: wordpress spec: ports: - port: 3306 selector: app: wordpress tier: mysql clusterIP: None --- apiVersion: apps/v1 kind: Deployment metadata: name: wordpress-mysql labels: app: wordpress spec: selector: matchLabels: app: wordpress tier: mysql strategy: type: Recreate template: metadata: labels: app: wordpress tier: mysql spec: containers: - image: mysql:5.6 name: mysql env: - name: MYSQL_ROOT_PASSWORD valueFrom: secretKeyRef: name: mysql-pass key: password ports: - containerPort: 3306 name: mysql volumeMounts: - name: mysql-persistent-storage mountPath: /var/lib/mysql volumes: - name: mysql-persistent-storage persistentVolumeClaim: claimName: mysql-pv-claim |
Spremite i zatvorite datoteku kada završite. Zatim implementirajte gornju konfiguraciju na Kubernetes klaster.
|
1 |
kubectl apply -f mysql-deployment.yaml |
Trebali biste vidjeti sljedeći izlaz.

Možete provjeriti MySQL implementaciju pomoću sljedeće naredbe.
|
1 |
kubectl get deployments |
Trebali biste vidjeti status MySQL implementacije u sljedećem izlazu.

Stvorite WordPress implementaciju
Sada stvorite konfiguracijsku datoteku za WordPress implementaciju kako biste preuzeli WordPress sliku, stvorili spremnik i montirali PersistentVolume na /var/www/html za podatkovne datoteke web stranice. Ova datoteka će također stvoriti WORDPRESS_DB_HOST i WORDPRESS_DB_PASSWORD varijable okruženja za pristup bazi podataka.
|
1 |
nano wordpress-deployment.yaml |
Dodajte sljedeću konfiguraciju.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
apiVersion: v1 kind: Service metadata: name: wordpress labels: app: wordpress spec: ports: - port: 80 selector: app: wordpress tier: frontend type: LoadBalancer --- apiVersion: apps/v1 # za verzije prije 1.9.0 koristite apps/v1beta2 kind: Deployment metadata: name: wordpress labels: app: wordpress spec: selector: matchLabels: app: wordpress tier: frontend strategy: type: Recreate template: metadata: labels: app: wordpress tier: frontend spec: containers: - image: wordpress:4.8-apache name: wordpress env: - name: WORDPRESS_DB_HOST value: wordpress-mysql - name: WORDPRESS_DB_PASSWORD valueFrom: secretKeyRef: name: mysql-pass key: password ports: - containerPort: 80 name: wordpress volumeMounts: - name: wordpress-persistent-storage mountPath: /var/www/html volumes: - name: wordpress-persistent-storage persistentVolumeClaim: claimName: wp-pv-claim |
Spremite datoteku nakon što završite. Zatim primijenite gornju konfiguraciju na Kubernetes klaster pomoću sljedeće naredbe.
|
1 |
kubectl apply -f wordpress-deployment.yaml |
U sljedećem izlazu trebali biste vidjeti poruku o uspješnoj implementaciji.
|
1 2 |
service/wordpress created deployment.apps/wordpress created |
Da biste provjerili implementaciju WordPressa, pokrenite sljedeću naredbu.
|
1 |
kubectl get deployments |
U sljedećem izlazu trebali biste vidjeti status implementacije WordPressa.

Pristup WordPress web sučelju
Za pristup nadzornoj ploči WordPressa trebat će vam vanjska IP adresa i broj porta LoadBalancera. Ove informacije možete dohvatiti pomoću sljedeće naredbe.
|
1 |
kubectl get svc |
U sljedećem izlazu dobit ćete IP adresu i port LoadBalancera.
|
1 2 3 4 |
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 29m wordpress LoadBalancer 10.100.80.70 78.141.194.181 80:31624/TCP 3m6s wordpress-mysql ClusterIP None <none> 3306/TCP 4m14s |
Da biste dobili detaljne informacije o svojim WordPress podovima, pokrenite sljedeću naredbu.
|
1 |
kubectl describe svc wordpress |
U sljedećem izlazu trebali biste dobiti detaljne informacije o WordPressu.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
Name: wordpress Namespace: default Labels: app=wordpress Annotations: <none> Selector: app=wordpress,tier=frontend Type: LoadBalancer IP Family Policy: SingleStack IP Families: IPv4 IP: 10.100.80.70 IPs: 10.100.80.70 LoadBalancer Ingress: 78.141.194.181 Port: <unset> 80/TCP TargetPort: 80/TCP NodePort: <unset> 31624/TCP Endpoints: 10.244.23.66:80 Session Affinity: None External Traffic Policy: Cluster |
Sada otvorite svoj web preglednik i pristupite stranici za instalaciju WordPressa pomoću URL-a http://78.141.194.181:3162. Trebali biste vidjeti stranicu za instalaciju WordPressa na sljedećem zaslonu.

Odaberite svoj jezik i dovršite potrebne korake kako biste završili postupak instalacije.
Zaključak
U ovom smo postu objasnili kako implementirati MySQL i WordPress s trajnim volumenom na Kubernetes klasteru. Također možete skalirati svoju WordPress implementaciju na temelju prometa na vašoj web stranici. Sada možete koristiti gornju implementaciju ovisno o vašim razvojnim potrebama.
Osim toga, pogledajte i naše ostale vodiče usmjerene na Docker i Kubernetes koje možete pronaći na našem blogu:
Komentari
Još nema komentara. Budite prvi.