[Helm] Deploy WordPress on Kubernetes Using Helm Charts
看完後可以學到什麼
- 如何使用 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 部署了
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 = =
建議把官方文件看一下
一樣建議寫一個 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)