[Helm] Deploy WordPress on Kubernetes Using Helm Charts
紀錄最近工作架設 WordPress 的心路歷程 (´・_・`)
看完後可以學到什麼
- 如何使用 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 部署了

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/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) 
                    