WordPress to jeden z najpopularniejszych systemów zarządzania treścią używanych do wdrażania blogów i stron internetowych w internecie. Jest on również dostępny jako Docker obraz w rejestrze DockerHub. Możesz użyć tego obrazu Docker do zbudowania niezawodnej i skalowalnej platformy internetowej w klastrze Kubernetes. Wdrożenie WordPressa na Kubernetes pomoże Ci wdrożyć potok CI/CD i skróci czas potrzebny na wydawanie nowych aktualizacji. Możesz także włączyć poziome skalowanie strony WordPress, aby radzić sobie ze skokami ruchu na stronie.
Ten przewodnik pokaże Ci, jak wdrożyć WordPressa i MySQL z Persistent Volume w klastrze Kubernetes.
Wymagania wstępne
- Podstawowa znajomość Kubernetes (k8s) i jego obiektów. Zapoznaj się z tym przewodnikiem, aby uzyskać szczegółowy przegląd ekosystemu Kubernetes.
- Klaster Kubernetes jest uruchomiony i działa. Postępuj zgodnie z tym samouczkiem, aby zainstalować klaster Kubernetes na Ubuntu 20.04.
Weryfikacja klastra Kubernetes
Przed rozpoczęciem zaleca się zweryfikowanie stanu klastra Kubernetes. Możesz użyć polecenia kubectl, aby zweryfikować Kubernetes.
|
1 |
kubectl get nodes |
Jeśli wszystko jest w porządku, powinieneś otrzymać następujący wynik.

Tworzenie obiektu Secret dla MySQL
A Secret to obiekt, który pozwala na przechowywanie poufnych danych, takich jak hasło lub klucz. W tym wpisie użyjemy obiektu Secret do przechowywania hasła MySQL.
Najpierw utwórz zakodowane w base64 hasło za pomocą następującego polecenia.
|
1 |
echo -n 'your_secure_password' | base64 |
W poniższym wyniku otrzymasz swoje tajne hasło.
|
1 |
eW91cl9zZWN1cmVfcGFzc3dvcmQ= |
Następnie utwórz plik secret.yaml dla MySQL i WordPress.
|
1 |
nano secret.yaml |
Dodaj następującą konfigurację.
|
1 2 3 4 5 6 7 |
apiVersion: v1 kind: Secret metadata: name: mysql-pass type: Opaque data: password: eW91cl9zZWN1cmVfcGFzc3dvcmQ= |
Zapisz i zamknij plik. Następnie zastosuj powyższą konfigurację w klastrze Kubernetes za pomocą następującego polecenia.
|
1 |
kubectl apply -f secret.yaml |
Otrzymasz następujący wynik.
|
1 |
secret/mysql-pass created |
Tworzenie PersistentVolume dla MySQL i WordPress
Będziesz także musiał utworzyć PersistentVolume do przechowywania danych MySQL i WordPress.
Utwórzmy plik pvc-mysql-wp.yaml .
|
1 |
nano pvc-mysql-wp.yaml |
Dodaj następujące konfiguracje.
|
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 zakończeniu zapisz i zamknij plik.
Następnie utwórz PersistentVolumes dla MySQL i WordPress w klastrze Kubernetes za pomocą następującego polecenia.
|
1 |
kubectl apply -f pvc-mysql-wp.yaml |
W poniższym wyniku powinieneś zobaczyć oba PersistentVolumes.
|
1 2 |
persistentvolumeclaim/mysql-pv-claim created persistentvolumeclaim/wp-pv-claim created |
Możesz teraz zweryfikować oba PersistentVolumes za pomocą następującego polecenia.
|
1 |
kubectl get pv |
Powinieneś zobaczyć następujący wynik.
|
1 2 3 |
NAZWA POJEMNOŚĆ DOSTĘP TRYBY ODZYSKIWANIE POLITYKA STATUS ŻĄDANIE KLASA PAMIĘCI POWÓD WIEK pvc-873a458352594103 40Gi RWO Delete Bound default/wp-pv-claim twój-blok-magazyn 3s pvc-de7d7de5e53a40e8 40Gi RWO Delete Bound default/mysql-pv-claim twój-blok-magazyn 3s |
Utwórz wdrożenie MySQL
Następnie utwórz plik konfiguracyjny wdrożenia MySQL, aby pobrać obraz dockera MySQL, utworzyć kontener i zamontować PersistentVolume w /var/lib/mysql.
|
1 |
nano mysql-deployment.yaml |
Dodaj następującą konfigurację.
|
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 |
Zapisz i zamknij plik po zakończeniu. Następnie wdrożyj powyższą konfigurację w klastrze Kubernetes.
|
1 |
kubectl apply -f mysql-deployment.yaml |
Powinieneś zobaczyć następujący wynik.

Możesz zweryfikować wdrożenie MySQL za pomocą następującego polecenia.
|
1 |
kubectl get deployments |
W poniższym wyniku powinieneś zobaczyć status wdrożenia MySQL.

Utwórz wdrożenie WordPress
Teraz utwórz plik konfiguracyjny wdrożenia WordPress, aby pobrać obraz WordPress, utworzyć kontener i zamontować PersistentVolume w /var/www/html dla plików danych witryny. Ten plik utworzy również WORDPRESS_DB_HOST i WORDPRESS_DB_PASSWORD zmienne środowiskowe, aby uzyskać dostęp do bazy danych.
|
1 |
nano wordpress-deployment.yaml |
Dodaj następującą konfigurację.
|
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 # dla wersji starszych niż 1.9.0 użyj 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 |
Zapisz plik po zakończeniu. Następnie zastosuj powyższą konfigurację do klastra Kubernetes za pomocą następującego polecenia.
|
1 |
kubectl apply -f wordpress-deployment.yaml |
W poniższym wyniku powinieneś zobaczyć komunikat o pomyślnym wdrożeniu.
|
1 2 |
service/wordpress created deployment.apps/wordpress created |
Aby zweryfikować wdrożenie WordPress, uruchom następujące polecenie.
|
1 |
kubectl get deployments |
W poniższym wyniku powinieneś zobaczyć status wdrożenia WordPress.

Dostęp do Web UI WordPress
Aby uzyskać dostęp do kokpitu WordPress, będziesz potrzebować zewnętrznego adresu IP i numeru portu LoadBalancera. Możesz pobrać te informacje za pomocą następującego polecenia.
|
1 |
kubectl get svc |
W poniższym wyniku otrzymasz adres IP 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 |
Aby uzyskać szczegółowe informacje o podach WordPress, uruchom następujące polecenie.
|
1 |
kubectl describe svc wordpress |
W poniższym wyniku powinieneś otrzymać szczegółowe informacje o WordPress.
|
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 otwórz przeglądarkę internetową i przejdź do strony instalacji WordPress, używając adresu URL http://78.141.194.181:3162. Na kolejnym ekranie powinna pojawić się strona instalacji WordPress.

Wybierz język i wykonaj wymagane kroki, aby zakończyć proces instalacji.
Podsumowanie
W tym wpisie wyjaśniliśmy, jak wdrożyć MySQL i WordPress z trwałym wolumenem w klastrze Kubernetes. Możesz również skalować swoje wdrożenie WordPress w zależności od ruchu na stronie internetowej. Możesz teraz korzystać z powyższego wdrożenia w zależności od swoich potrzeb programistycznych.
Ponadto zapoznaj się z naszymi innymi poradnikami dotyczącymi Docker i Kubernetes, które znajdziesz na naszym blogu:
Komentarze
Brak komentarzy. Bądź pierwszy.