WordPress je jedním z nejpopulárnějších redakčních systémů používaných k nasazování blogů a webových stránek na internetu. Je také k dispozici jako Docker obraz v registru DockerHub. Tento Docker obraz můžete použít k vytvoření spolehlivé a škálovatelné platformy pro webové stránky na clusteru Kubernetes. Nasazení WordPressu na Kubernetes vám pomůže implementovat CI/CD pipeline a zkrátí čas potřebný k vydávání nových aktualizací. Můžete také povolit horizontální škálování webu WordPress, abyste zvládli nápory návštěvnosti.
Tato příručka vám ukáže, jak nasadit WordPress a MySQL s Persistent Volume na clusteru Kubernetes.
Požadavky
- Základní porozumění Kubernetes (k8s) a jeho objektům. Podívejte se na tuto příručku pro podrobný přehled ekosystému Kubernetes.
- Spuštěný a funkční cluster Kubernetes. Postupujte podle tohoto návodu pro instalaci clusteru Kubernetes na Ubuntu 20.04.
Ověření clusteru Kubernetes
Před spuštěním se doporučuje ověřit stav clusteru Kubernetes. K ověření Kubernetes můžete použít příkaz kubectl.
|
1 |
kubectl get nodes |
Pokud je vše v pořádku, měli byste získat následující výstup.

Vytvoření Secret pro MySQL
Objekt Secret je objekt, který umožňuje ukládat citlivá data, jako je heslo nebo klíč. V tomto příspěvku použijeme Secret k uložení hesla pro MySQL.
Nejprve vytvořte heslo kódované v base64 pomocí následujícího příkazu.
|
1 |
echo -n 'your_secure_password' | base64 |
V následujícím výstupu získáte své tajné heslo.
|
1 |
eW91cl9zZWN1cmVfcGFzc3dvcmQ= |
Dále vytvořte soubor secret.yaml pro MySQL a WordPress.
|
1 |
nano secret.yaml |
Přidejte následující konfiguraci.
|
1 2 3 4 5 6 7 |
apiVersion: v1 kind: Secret metadata: name: mysql-pass type: Opaque data: password: eW91cl9zZWN1cmVfcGFzc3dvcmQ= |
Uložte a zavřete soubor. Poté aplikujte výše uvedenou konfiguraci na cluster Kubernetes pomocí následujícího příkazu.
|
1 |
kubectl apply -f secret.yaml |
Získáte následující výstup.
|
1 |
secret/mysql-pass created |
Vytvoření PersistentVolume pro MySQL a WordPress
Budete také muset vytvořit PersistentVolume pro ukládání dat MySQL a WordPressu.
Pojďme vytvořit soubor pvc-mysql-wp.yaml.
|
1 |
nano pvc-mysql-wp.yaml |
Přidejte následující konfigurace.
|
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í soubor uložte a zavřete.
Dále vytvořte PersistentVolumes pro MySQL i WordPress na clusteru Kubernetes pomocí následujícího příkazu.
|
1 |
kubectl apply -f pvc-mysql-wp.yaml |
V následujícím výstupu byste měli vidět oba PersistentVolumes.
|
1 2 |
persistentvolumeclaim/mysql-pv-claim created persistentvolumeclaim/wp-pv-claim created |
Nyní můžete oba PersistentVolumes ověřit pomocí následujícího příkazu.
|
1 |
kubectl get pv |
Měli byste vidět následující výstup.
|
1 2 3 |
NÁZEV KAPACITA PŘÍSTUP REŽIMY RECLAIM POLITIKA STAV POŽADAVEK STORAGECLASS DŮVOD STÁŘÍ pvc-873a458352594103 40Gi RWO Smazat Svázáno default/wp-pv-claim vaše-blokové-úložiště 3s pvc-de7d7de5e53a40e8 40Gi RWO Smazat Svázáno default/mysql-pv-claim vaše-blokové-úložiště 3s |
Vytvořit deployment MySQL
Dále vytvořte konfigurační soubor deploymentu MySQL pro stažení Docker image MySQL, vytvoření kontejneru a připojení PersistentVolume do /var/lib/mysql.
|
1 |
nano mysql-deployment.yaml |
Přidejte následující konfiguraci.
|
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í soubor uložte a zavřete. Poté nasaďte výše uvedenou konfiguraci do clusteru Kubernetes.
|
1 |
kubectl apply -f mysql-deployment.yaml |
Měli byste vidět následující výstup.

Nasazení MySQL můžete ověřit pomocí následujícího příkazu.
|
1 |
kubectl get deployments |
V následujícím výstupu byste měli vidět stav nasazení MySQL.

Vytvořit nasazení WordPressu
Nyní vytvořte konfigurační soubor pro nasazení WordPressu, který stáhne obraz WordPressu, vytvoří kontejner a připojí PersistentVolume do /var/www/html pro datové soubory webu. Tento soubor také vytvoří WORDPRESS_DB_HOST a WORDPRESS_DB_PASSWORD proměnné prostředí pro přístup k databázi.
|
1 |
nano wordpress-deployment.yaml |
Přidejte následující konfiguraci.
|
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 # pro verze starší než 1.9.0 použijte 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í soubor uložte. Poté aplikujte výše uvedenou konfiguraci na cluster Kubernetes pomocí následujícího příkazu.
|
1 |
kubectl apply -f wordpress-deployment.yaml |
V následujícím výstupu byste měli vidět zprávu o úspěšném nasazení.
|
1 2 |
service/wordpress vytvořeno deployment.apps/wordpress vytvořeno |
Pro ověření nasazení WordPressu spusťte následující příkaz.
|
1 |
kubectl get deployments |
V následujícím výstupu byste měli vidět stav nasazení WordPressu.

Přístup k webovému rozhraní WordPressu
Pro přístup k nástěnce WordPressu budete potřebovat externí IP adresu a číslo portu LoadBalanceru. Tyto informace můžete získat pomocí následujícího příkazu.
|
1 |
kubectl get svc |
V následujícím výstupu získáte IP adresu a port LoadBalanceru.
|
1 2 3 4 |
NÁZEV TYP CLUSTER-IP EXTERNÍ-IP PORT(S) STÁŘÍ 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 |
Chcete-li získat podrobné informace o svých podech WordPressu, spusťte následující příkaz.
|
1 |
kubectl describe svc wordpress |
V následujícím výstupu byste měli získat podrobné informace o WordPressu.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
Název: wordpress Namespace: default Štítky: app=wordpress Anotace: <none> Selektor: app=wordpress,tier=frontend Typ: LoadBalancer IP Rodina Politika: SingleStack IP Rodiny: IPv4 IP: 10.100.80.70 IP: 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 |
Nyní otevřete webový prohlížeč a přejděte na instalační stránku WordPressu pomocí URL http://78.141.194.181:3162. Na následující obrazovce byste měli vidět instalační stránku WordPressu.

Vyberte svůj jazyk a dokončete požadované kroky pro dokončení procesu instalace.
Závěr
V tomto příspěvku jsme si vysvětlili, jak nasadit MySQL a WordPress s persistentním svazkem na Kubernetes clusteru. Nasazení WordPressu můžete také škálovat na základě návštěvnosti vašeho webu. Výše uvedené nasazení nyní můžete použít v závislosti na vašich vývojových potřebách.
Kromě toho se podívejte na naše další návody zaměřené na Docker a Kubernetes, které najdete na našem blogu:
Komentáře
Zatím žádné komentáře. Buďte první.