在 K8S 中使用 Helm 快速部署 WordPress
准备条件
- Kubernetes 1.23+
- Helm 3.8.0+
- MySQL 数据库 8.0+ 或 MariaDB 10.5+
- Kubernetes Storage 存储动态供给 或 PV 存储卷
获取 Chart
在 ArtifactHUB 选择一个 WordPress 的 Chart 版本,这里使用 Chart 24.1.18,对应的 WordPress 版本为 6.7.2
添加 Chart 仓库:
helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo update
获取 24.1.18 版本的 Chart:
helm pull oci://registry-1.docker.io/bitnamicharts/wordpress --version 24.1.18
获取 24.1.18 版本的 values.yaml 文件:
部署目录下仅保留 Chart 包和 values.yaml 文件:
$ ls -l
total 232
-rw-r--r-- 1 root root 58447 Mar 10 15:25 values-wordpress.yaml
-rw-r--r-- 1 root root 173620 Mar 10 14:12 wordpress-24.1.18.tgz
配置 values.yaml 默认参数
使用外部 MySQL 数据库
首先要禁用默认的安装的 MariaDB
mariadb.enabled=false
配置外部数据库连接串:
externalDatabase.host=myexternalhost
externalDatabase.user=myuser
externalDatabase.password=mypassword
externalDatabase.database=mydatabase
externalDatabase.port=3306
Memcached 缓存(可选)
使用 Memcached 缓存数据库查询和对象,从而提高网站性能。要启用此功能,请将wordpressConfigureCache
和 memcached.enabled
参数设置为 true
启用此功能后,将使用 Bitnami Memcached 图表在您的 K8s 集群中部署 Memcached 服务器,并激活和配置 W3 Total Cache插件以使用 Memcached 服务器进行数据库缓存
wordpressConfigureCache=true
memcached.enabled=true
也可以使用外部缓存服务器,而不是在集群内部安装一个。为此,图表允许您使用参数指定外部缓存服务器的凭据 externalCache
。您还应该使用选项禁用 Memcached 安装 memcached.enabled
。
externalCache.host=myexternalcachehost
externalCache.port=11211
持久化
镜像将 WordPress 数据和配置存储在 /bitnami
容器路径中。持久卷声明用于跨部署保存数据。
persistence:
enabled: true
storageClass: "cfs" # 更改成你本地的 storageClass
accessModes:
- ReadWriteOnce
accessMode: ReadWriteOnce
size: 100Gi
NodePort 暴露服务
默认值为 LoadBlance
,修改成 NodePort
方便测试访问。
service:
type: NodePort
Ingress 暴露服务
如果集群上使用了 nginx-ingress-controller 要启用 Ingress 集成,请设置 ingress.enabled
为 true
ingress:
enabled: true # 开启 ingress
pathType: ImplementationSpecific
ingressClassName: "clb" # 更改成你本地的 ingressClassName
hostname: hostname # 修改你的域名
path: /
annotations: {}
使用 TLS 加密 ingress 流量
使用外部自定义 secret
文件绑定 TLS
ingress:
tls: true
extraTls:
- hosts:
- hostname # 修改你的域名
secretName: ssl-star-hostname # 域名对应的自定义SSL secret 名称
资源请求和限制
Chart 提供了不同的预设值容器资源(允许的值:none、nano、micro、small、medium、large、xlarge、2xlarge),可通过 resourcesPreset
自动设置
如果设置了资源,则忽略此项(建议在生产中使用资源)。
resourcesPreset: "micro"
管理员账号
wordpressUsername=admin
wordpressPassword=password # 修改你的密码
部署此项后,无法再使用 Helm 更改应用程序的访问凭据,例如用户名或密码。要在部署后更改这些应用程序凭据,请删除图表使用的任何持久卷 (PV) 并重新部署。
安装 Chart
helm -n ${NAME_SPACE} install wordpress wordpress-24.1.18.tgz -f values-wordpress.yaml
更新 release
helm -n ${NAME_SPACE} upgrade --install wordpress wordpress-24.1.18.tgz -f values-wordpress.yaml
访问 WordPress
- 用户名:admin
- 密码:
$(kubectl get secret --namespace ${NAMESPACE} wordpress -o jsonpath="{.data.wordpress-password}" | base64 -d)