GNU/Linux >> Belajar Linux >  >> Ubuntu

Cara Menyebarkan Instance WordPress di Kubernetes

Pendahuluan

Sebagai sistem manajemen konten paling populer secara global, WordPress menjalankan situs web dengan berbagai ukuran, baik dari segi jumlah konten maupun lalu lintas web. Menerapkan WordPress di Kubernetes adalah cara yang efisien untuk mengaktifkan penskalaan horizontal situs web dan berhasil menangani lonjakan lalu lintas situs web.

Tutorial ini menjelaskan dua metode penerapan WordPress di Kubernetes - menggunakan diagram Helm dan membuat penerapan Anda dari awal.

Prasyarat

  • Kluster Kubernetes dengan kubectl
  • Helm 3
  • Hak istimewa administratif pada sistem

Men-deploy WordPress di Kubernetes dengan Helm Chart

Bagan helm dilengkapi dengan instalasi aplikasi yang telah dikonfigurasi sebelumnya yang dapat digunakan dengan beberapa perintah sederhana.

  1. Tambahkan repositori yang berisi diagram Helm WordPress yang ingin Anda terapkan:
helm repo add [repo-name] [repo-address]

Sistem mengonfirmasi penambahan repositori yang berhasil. Contoh menggunakan grafik Bitnami.

2. Perbarui repositori Helm lokal:

helm repo update

3. Instal bagan menggunakan perintah helm install.

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

Tunggu hingga bagan di-deploy.

4. Layanan WordPress menggunakan LoadBalancer sebagai cara untuk mengekspos layanan. Jika Anda menggunakan minikube, buka jendela terminal lain dan ketik perintah berikut untuk mengemulasi LoadBalancer:

minikube tunnel

5. Saat minikube menampilkan Berjalan status, perkecil jendela dan kembali ke yang sebelumnya.

6. Periksa kesiapan penerapan dengan mengetik:

kubectl get all

Perintah tersebut mencantumkan dan menunjukkan status pod, layanan, dan penerapan.

7. Setelah Pod dan deployment siap, gunakan perintah berikut untuk mengekspor SERVICE_IP variabel lingkungan:

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

8. Sekarang gunakan perintah echo untuk menampilkan alamat IP layanan:

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

9. Ketikkan alamat tersebut ke dalam bilah alamat browser Anda. Instalasi WordPress dimulai.

Menyebarkan WordPress di Kubernetes dengan Volume Persisten

Saat menggunakan WordPress menggunakan konfigurasi khusus, Anda perlu membuat serangkaian file YAML untuk WordPress dan database yang akan digunakan aplikasi. Contoh di bawah ini menggunakan MySQL, tetapi Anda juga dapat memilih MariaDB.

1. Gunakan editor teks untuk membuat file YAML guna menyediakan penyimpanan untuk database MySQL.

nano mysql-storage.yaml

File mendefinisikan volume penyimpanan persisten (PV) dan mengklaim penyimpanan itu dengan PersistentVolumeClaim (PVC). Contoh menggunakan konfigurasi berikut:

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

Simpan file dan keluar.

2. Buat konfigurasi penerapan MySQL YAML.

nano mysql-deployment.yaml

File penerapan berisi data yang terkait dengan gambar kontainer dan penyimpanan. claimName deklarasi di bagian bawah harus sesuai dengan nama PVC yang Anda buat di Langkah 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

Simpan file dan keluar.

3. Buat konfigurasi layanan YAML untuk database.

nano mysql-service.yaml

File tersebut menentukan port yang digunakan WordPress untuk terhubung ke layanan:

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

Simpan file dan keluar.

4. Sekarang buat file YAML yang sama untuk WordPress itu sendiri. Mulailah dengan alokasi penyimpanan:

nano wordpress-storage.yaml

Contoh menggunakan konfigurasi berikut:

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

Simpan file dan keluar.

5. Buat file penerapan:

nano wordpress-deployment.yaml

File menyediakan gambar Docker dan menghubungkan penerapan WordPress dengan 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

Simpan file dan keluar.

6. Buat layanan YAML:

nano wordpress-service.yaml

Contoh menggunakan LoadBalancer untuk mengekspos layanan:

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

Simpan file dan keluar.

7. Buat file kustomization.yaml, yang akan digunakan untuk menerapkan konfigurasi dengan mudah:

nano kustomization.yaml

File berisi dua bagian:

  • secretGenerator menghasilkan rahasia Kubernetes yang meneruskan info login ke container.
  • resources bagian daftar semua file yang akan berpartisipasi dalam konfigurasi. Buat daftar file yang Anda buat di langkah sebelumnya.
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

Simpan file dan keluar.

8. Terapkan file yang terdaftar di kustomization.yaml dengan perintah berikut:

kubectl apply -k ./

Sistem mengonfirmasi keberhasilan pembuatan rahasia, layanan, PV, PVC, dan penerapan:

9. Periksa apakah pod dan penerapan sudah siap:

kubectl get all

10. Jika Anda menggunakan minikube, buka jendela terminal lain dan mulai minikube tunnel untuk menyediakan emulasi penyeimbangan beban:

minikube tunnel

Setelah emulasi berjalan, perkecil jendela dan kembali ke yang sebelumnya.

11. Ketik perintah berikut untuk mengekspos URL layanan yang akan Anda gunakan untuk mengakses instance WordPress yang diterapkan:

minikube service wordpress-service --url

URL ditampilkan sebagai output perintah:

12. Salin URL dan tempel ke browser web Anda. Instalasi WordPress dimulai.


Ubuntu
  1. Cara Membuat Bagan Helm

  2. Cara Menyebarkan Load Balancing Nginx di Cluster Kubernetes di Ubuntu 18.04 LTS

  3. Cara men-deploy pod pertama Anda di Cluster Kubernetes

  1. Cara Menyebarkan Elasticsearch di Kubernetes

  2. Cara Menyebarkan Cluster Redis di Kubernetes

  3. Cara Menyebarkan RabbitMQ di Kubernetes

  1. Cara Menyebarkan PostgreSQL di Kubernetes

  2. Cara Memasang dan Menggunakan Helm di Kubernetes

  3. Cara Men-deploy Aplikasi Multi-Tier dengan Kubernetes