GNU/Linux >> Znalost Linux >  >> Ubuntu

Jak nasadit instanci WordPress na Kubernetes

Úvod

Jako celosvětově nejpopulárnější redakční systém WordPress provozuje weby různých velikostí, a to jak z hlediska množství obsahu, tak návštěvnosti webu. Nasazení WordPressu na Kubernetes je efektivní způsob, jak umožnit horizontální škálování webu a úspěšně zvládat nárůsty návštěvnosti webu.

Tento výukový program vysvětluje dva způsoby nasazení WordPressu na Kubernetes – použití Helmových grafů a vytvoření nasazení od začátku.

Předpoklady

  • Cluster Kubernetes s kubectl
  • Kormidlo 3
  • Administrativní práva v systému

Nasazení WordPressu na Kubernetes s Helm Chart

Grafy Helm se dodávají s předkonfigurovanými instalacemi aplikací, které lze nasadit pomocí několika jednoduchých příkazů.

  1. Přidejte úložiště obsahující graf WordPress Helm, který chcete nasadit:
helm repo add [repo-name] [repo-address]

Systém potvrdí úspěšné přidání úložiště. V příkladu je použit graf Bitnami.

2. Aktualizujte místní úložiště Helm:

helm repo update

3. Nainstalujte graf pomocí příkazu helm install.

helm install [release-name] [repo-address]

Počkejte, až bude graf nasazen.

4. Služba WordPress používá LoadBalancer jako způsob, jak službu odhalit. Pokud používáte minikube, otevřete další okno terminálu a zadejte následující příkaz pro emulaci LoadBalancer:

minikube tunnel

5. Když minikube zobrazí Spuštěno stav, minimalizujte okno a vraťte se k předchozímu.

6. Zkontrolujte připravenost nasazení zadáním:

kubectl get all

Příkaz uvádí a zobrazuje stav modulů, služeb a nasazení.

7. Jakmile jsou moduly a nasazení připraveny, pomocí následujícího příkazu exportujte SERVICE_IP proměnná prostředí:

export SERVICE_IP=$(kubectl get svc --namespace default wp-test-wordpress --template "{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}")

8. Nyní pomocí příkazu echo zobrazte IP adresu služby:

echo "WordPress URL: http://$SERVICE_IP/"

9. Zadejte adresu do adresního řádku prohlížeče. Spustí se instalace WordPress.

Nasazení WordPressu na Kubernetes s trvalými svazky

Při nasazování WordPress pomocí vlastní konfigurace je potřeba vytvořit sérii souborů YAML pro WordPress a databázi, kterou bude aplikace používat. Níže uvedený příklad používá MySQL, ale můžete se také rozhodnout pro MariaDB.

1. Pomocí textového editoru vytvořte soubor YAML pro zajištění úložiště pro databázi MySQL.

nano mysql-storage.yaml

Soubor definuje trvalý úložný svazek (PV) a tvrdí, že úložiště s PersistentVolumeClaim (PVC). V příkladu je použita následující konfigurace:

apiVersion: v1
kind: PersistentVolume
metadata:
  name: mysql-pv
  labels:
    type: local
spec:
  storageClassName: manual
  capacity:
    storage: 10Gi
  accessModes:
    - ReadWriteOnce
  hostPath:
    path: "/mnt/data"
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: mysql-pv-claim
  labels:
    app: wordpress
spec:
  storageClassName: manual
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 10Gi

Uložte soubor a ukončete.

2. Vytvořte konfiguraci nasazení MySQL YAML.

nano mysql-deployment.yaml

Soubor nasazení obsahuje data související s obrazem kontejneru a úložištěm. claimName deklarace ve spodní části by měla odpovídat názvu PVC, který jste vytvořili v Kroku 1 .

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.7
        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

Uložte soubor a ukončete.

3. Vytvořte konfiguraci služby YAML pro databázi.

nano mysql-service.yaml

Soubor určuje port, který WordPress používá k připojení ke službě:

apiVersion: v1
kind: Service
metadata:
  name: wordpress-mysql
  labels:
    app: wordpress
spec:
  ports:
    - port: 3306
  selector:
    app: wordpress
    tier: mysql
  clusterIP: None

Uložte soubor a ukončete.

4. Nyní vytvořte stejné soubory YAML pro samotný WordPress. Začněte s přidělením úložiště:

nano wordpress-storage.yaml

V příkladu je použita následující konfigurace:

apiVersion: v1
kind: PersistentVolume
metadata:
  name: wp-pv
  labels:
    type: local
spec:
  storageClassName: manual
  capacity:
    storage: 10Gi
  accessModes:
    - ReadWriteOnce
  hostPath:
    path: "/mnt/data"
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: wp-pv-claim
  labels:
    app: wordpress
spec:
  storageClassName: manual
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 10Gi

Uložte soubor a ukončete.

5. Vytvořte soubor nasazení:

nano wordpress-deployment.yaml

Soubor poskytuje obraz Docker a propojuje nasazení WordPress s PVC:

apiVersion: apps/v1
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:5.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

Uložte soubor a ukončete.

6. Vytvořte službu YAML:

nano wordpress-service.yaml

Příklad používá LoadBalancer k odhalení služby:

apiVersion: v1
kind: Service
metadata:
  name: wordpress
  labels:
    app: wordpress
spec:
  ports:
    - port: 80
  selector:
    app: wordpress
    tier: frontend
  type: LoadBalancer

Uložte soubor a ukončete.

7. Vytvořte soubor kustomization.yaml, který bude použit pro snadné použití konfigurace:

nano kustomization.yaml

Soubor obsahuje dvě části:

  • secretGenerator vytvoří tajný klíč Kubernetes, který předá přihlašovací údaje do kontejnerů.
  • resources sekce uvádí všechny soubory, které se budou podílet na konfiguraci. Seznam souborů, které jste vytvořili v předchozích krocích.
secretGenerator:
- name: mysql-pass
  literals:
  - password=test123
resources:
  - mysql-storage.yaml
  - mysql-deployment.yaml
  - mysql-service.yaml
  - wordpress-storage.yaml
  - wordpress-deployment.yaml
  - wordpress-service.yaml

Uložte soubor a ukončete.

8. Použijte soubory uvedené v kustomization.yaml pomocí následujícího příkazu:

kubectl apply -k ./

Systém potvrzuje úspěšné vytvoření tajemství, služeb, PV, PVC a nasazení:

9. Zkontrolujte, zda jsou moduly a rozmístění připraveny:

kubectl get all

10. Pokud používáte minikube, otevřete další okno terminálu a spusťte tunel minikube k zajištění emulace vyrovnávání zátěže:

minikube tunnel

Jakmile je emulace spuštěna, minimalizujte okno a vraťte se k předchozímu.

11. Zadejte následující příkaz k zobrazení adresy URL služby, kterou použijete pro přístup k nasazené instanci WordPress:

minikube service wordpress-service --url

Adresa URL se zobrazí jako výstup příkazu:

12. Zkopírujte adresu URL a vložte ji do webového prohlížeče. Spustí se instalace WordPress.


Ubuntu
  1. Jak vytvořit tabulku kormidla

  2. Jak nasadit Nginx Load Balancing na Kubernetes Cluster na Ubuntu 18.04 LTS

  3. Jak nasadit svůj první modul na clusteru Kubernetes

  1. Jak nasadit Elasticsearch na Kubernetes

  2. Jak nasadit Redis Cluster na Kubernetes

  3. Jak nasadit RabbitMQ na Kubernetes

  1. Jak nasadit PostgreSQL na Kubernetes

  2. Jak nainstalovat a používat Helm v Kubernetes

  3. Jak nasadit vícevrstvou aplikaci s Kubernetes