WordPress je jedným z najpopulárnejších redakčných systémov používaných na nasadenie blogov a webových stránok na internete. Je k dispozícii aj ako Docker obraz v registri DockerHub. Tento Docker obraz môžete použiť na vybudovanie spoľahlivej a škálovateľnej platformy pre webové stránky na Kubernetes klastri. Nasadenie WordPressu na Kubernetes vám pomôže implementovať CI/CD pipeline a skráti čas potrebný na vydanie nových aktualizácií. Môžete tiež povoliť horizontálne škálovanie webovej stránky WordPress, aby ste zvládli nárasty návštevnosti webu.
Tento návod vám ukáže, ako nasadiť WordPress a MySQL s Persistent Volume na klastri Kubernetes.
Požiadavky
- Základné pochopenie Kubernetes (k8s) a jeho objektov. Pozrite si túto príručku pre podrobný prehľad ekosystému Kubernetes.
- Kubernetes klaster je spustený a funkčný. Postupujte podľa tohto návodu na inštaláciu Kubernetes klastra na Ubuntu 20.04.
Overenie Kubernetes klastra
Pred spustením sa odporúča overiť stav Kubernetes klastra. Na overenie Kubernetes môžete použiť príkaz kubectl na overenie Kubernetes.
|
1 |
kubectl get nodes |
Ak je všetko v poriadku, mali by ste dostať nasledujúci výstup.

Vytvorenie Secret pre MySQL
A Secret je objekt, ktorý vám umožňuje ukladať citlivé údaje, ako je heslo alebo kľúč. V tomto príspevku použijeme Secret na uloženie hesla pre MySQL.
Najprv vytvorte base64 kódované heslo pomocou nasledujúceho príkazu.
|
1 |
echo -n 'your_secure_password' | base64 |
V nasledujúcom výstupe dostanete svoje tajné heslo.
|
1 |
eW91cl9zZWN1cmVfcGFzc3dvcmQ= |
Ďalej vytvorte secret.yaml súbor pre MySQL a WordPress.
|
1 |
nano secret.yaml |
Pridajte nasledujúcu konfiguráciu.
|
1 2 3 4 5 6 7 |
apiVersion: v1 kind: Secret metadata: name: mysql-pass type: Opaque data: password: eW91cl9zZWN1cmVfcGFzc3dvcmQ= |
Uložte a zatvorte súbor. Potom aplikujte vyššie uvedenú konfiguráciu na Kubernetes klaster pomocou nasledujúceho príkazu.
|
1 |
kubectl apply -f secret.yaml |
Dostanete nasledujúci výstup.
|
1 |
secret/mysql-pass created |
Vytvorenie PersistentVolume pre MySQL a WordPress
Budete tiež musieť vytvoriť PersistentVolume na ukladanie dát MySQL a WordPress.
Vytvorme pvc-mysql-wp.yaml súbor.
|
1 |
nano pvc-mysql-wp.yaml |
Pridajte nasledujúce konfigurácie.
|
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 |
Po dokončení súbor uložte a zatvorte.
Ďalej vytvorte PersistentVolumes pre MySQL aj WordPress na klastri Kubernetes pomocou nasledujúceho príkazu.
|
1 |
kubectl apply -f pvc-mysql-wp.yaml |
V nasledujúcom výstupe by ste mali vidieť oba PersistentVolumes.
|
1 2 |
persistentvolumeclaim/mysql-pv-claim created persistentvolumeclaim/wp-pv-claim created |
Teraz môžete overiť oba PersistentVolumes pomocou nasledujúceho príkazu.
|
1 |
kubectl get pv |
Mali by ste vidieť nasledujúci výstup.
|
1 2 3 |
NÁZOV KAPACITA PRÍSTUPOVÉ REŽIMY POLITIKA NAVRÁTENIA STAV POŽIADAVKA TRIEDA ÚLOŽISKA DÔVOD VEK pvc-873a458352594103 40Gi RWO Vymazať Viazané default/wp-pv-claim vaše-blokové-úložisko 3s pvc-de7d7de5e53a40e8 40Gi RWO Vymazať Viazané default/mysql-pv-claim vaše-blokové-úložisko 3s |
Vytvorenie nasadenia MySQL
Ďalej vytvorte konfiguračný súbor nasadenia MySQL na stiahnutie docker obrazu MySQL, vytvorenie kontajnera a pripojenie PersistentVolume do /var/lib/mysql.
|
1 |
nano mysql-deployment.yaml |
Pridajte nasledujúcu konfiguráciu.
|
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 |
Po dokončení súbor uložte a zatvorte. Potom nasaďte vyššie uvedenú konfiguráciu do klastra Kubernetes.
|
1 |
kubectl apply -f mysql-deployment.yaml |
Mali by ste vidieť nasledujúci výstup.

Nasadenie MySQL môžete overiť pomocou nasledujúceho príkazu.
|
1 |
kubectl get deployments |
V nasledujúcom výstupe by ste mali vidieť stav nasadenia MySQL.

Vytvorenie nasadenia WordPress
Teraz vytvorte konfiguračný súbor nasadenia WordPress na stiahnutie obrazu WordPress, vytvorenie kontajnera a pripojenie PersistentVolume do /var/www/html pre dátové súbory webovej lokality. Tento súbor tiež vytvorí WORDPRESS_DB_HOST a WORDPRESS_DB_PASSWORD premenné prostredia na prístup k databáze.
|
1 |
nano wordpress-deployment.yaml |
Pridajte nasledujúcu konfiguráciu.
|
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 # pre verzie staršie ako 1.9.0 použite 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 |
Po dokončení súbor uložte. Potom použite vyššie uvedenú konfiguráciu na klaster Kubernetes pomocou nasledujúceho príkazu.
|
1 |
kubectl apply -f wordpress-deployment.yaml |
V nasledujúcom výstupe by ste mali vidieť správu o úspešnom nasadení.
|
1 2 |
service/wordpress created deployment.apps/wordpress created |
Ak chcete overiť nasadenie WordPressu, spustite nasledujúci príkaz.
|
1 |
kubectl get deployments |
V nasledujúcom výstupe by ste mali vidieť stav nasadenia WordPressu.

Prístup k webovému rozhraniu WordPress
Na prístup k nástenke WordPress budete potrebovať externú IP adresu a číslo portu LoadBalancera. Tieto informácie môžete získať pomocou nasledujúceho príkazu.
|
1 |
kubectl get svc |
V nasledujúcom výstupe získate IP adresu a 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 |
Ak chcete získať podrobné informácie o vašich podoch WordPress, spustite nasledujúci príkaz.
|
1 |
kubectl describe svc wordpress |
V nasledujúcom výstupe by ste mali získať podrobné informácie o WordPresse.
|
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 |
Teraz otvorte svoj webový prehliadač a prejdite na inštalačnú stránku WordPress pomocou URL adresy http://78.141.194.181:3162. Na nasledujúcej obrazovke by ste mali vidieť inštalačnú stránku WordPress.

Vyberte svoj jazyk a vykonajte požadované kroky na dokončenie inštalačného procesu.
Záver
V tomto príspevku sme vysvetlili, ako nasadiť MySQL a WordPress s perzistentným zväzkom na klastri Kubernetes. Svoje nasadenie WordPress môžete tiež škálovať na základe návštevnosti vášho webu. Vyššie uvedené nasadenie teraz môžete použiť v závislosti od vašich vývojových potrieb.
Okrem toho sa pozrite na naše ďalšie návody zamerané na Docker a Kubernetes, ktoré nájdete na našom blogu:
Komentáre
Zatiaľ žiadne komentáre. Buďte prvý.