[Helm] Deploy WordPress on Kubernetes Using Helm Charts

紀錄最近工作架設 WordPress 的心路歷程 (´・_・`)

[Helm] Deploy WordPress on Kubernetes Using Helm Charts
Photo by freestocks / Unsplash

看完後可以學到什麼

  • 如何使用 helm charts 去架一個 WordPress
  • 知道怎麼寫 WordPress and traefik 的 docker-compose.yaml file

前情提要

今天突然有個需求要 deploy 一個 wordpress 出來

一開始收到一份 docker-compose.yaml 差點中風

version: '3.3'
​
services:
​
   wordpress:
     image: wordpress:latest
     ports:
       - "8000:80"
     restart: always
     environment:
       WORDPRESS_DB_HOST: -
       WORDPRESS_DB_USER: -
       WORDPRESS_DB_PASSWORD: -
       WORDPRESS_DB_NAME: -
volumes:
    wp-content:

在 vm 上原本要用 docker swarm 真的是弄不起來

一直發生錯誤 頭破血流嗚嗚

後來想到那台 vm 上面有 traefik

要多加一些 lable 讓 traefik 去把流量導過來

$ docker stack deploy -c d.yaml wordpress

---
networks:
  endpoint:
    external: true
services:
  app:
    deploy:
      labels:
        - app=wordpress
        - traefik.enable=true
        - traefik.http.routers.wordpress-app.rule=Host(`-`)
        - traefik.http.routers.wordpress-app.priority=100
        - traefik.http.routers.wordpress-app.tls=false
        - traefik.http.services.wordpress-app.loadbalancer.server.port=80
      restart_policy:
        condition: on-failure
    environment:
      WORDPRESS_DB_HOST: -
      WORDPRESS_DB_NAME: -
      WORDPRESS_DB_PASSWORD: -
      WORDPRESS_DB_USER: -
    image: 'wordpress:latest'
    networks:
      - endpoint
version: '3.8'

但這篇的重點不是這個

最後使用了 wordpress 的 helm charts 去 deploy

因為之後的系統都要換成 k8s

所以新的服務就不繼續使用 docker swarm 部署了

Helm Charts to deploy WordPress in Kubernetes

WordPress Helm Charts

google 找到了這個 bitnami/wordpress

$ helm repo add bitnami https://charts.bitnami.com/bitnami

然後要弄到他 deploy 的 values.yaml

$ helm show values bitnami/wordpress | pbcopy

就可以客製化一些東西了

如果有要把資料 persistence

storageClass 都要填入資料設定好的 Storage Classes name

global.storageClass 要填
persistence.storageClass 要填

如果有建 mariadb

mariadb.primary.persistence.storageClass 要填

沒有加的話 mariadb 刪掉所有資料就不見了

ingress enable

ingress.hostname 也要打上要用的 hostname

service.type 我改成用 ClusterIP

wordpressUsername, wordpressPassword登入 admin 的 account 也可以自己先設定

Done!

Just like a piece of cake = =

建議把官方文件看一下

bitnami/charts
Helm Charts. Contribute to bitnami/charts development by creating an account on GitHub.

bitnami/wordpress doc

一樣建議寫一個 makefile 去簡單部署或者做其他操作

ns=wordpress
name=eshop
repo=bitnami/wordpress
value=values.yaml

basedir=$(shell dirname "$0")

install:
	@helm --namespace=$(ns) upgrade --install $(name) $(repo) -f $(value)