Skip to main content

在 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 缓存数据库查询和对象,从而提高网站性能。要启用此功能,请将wordpressConfigureCachememcached.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.enabledtrue

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

首页:https://hostname/

管理后台:https://hostname/admin

  • 用户名:admin
  • 密码:$(kubectl get secret --namespace ${NAMESPACE} wordpress -o jsonpath="{.data.wordpress-password}" | base64 -d)

参考文档