目录
前 言
前面一篇《在K8S上部署WordPress博客,看这一篇干货就够了》介绍了使用Yaml文件手动部署MySQL的主从复制,使用Containerd结合Buildkitd从构建镜像到部署Deploy手动搭建起了WordPress,操作步骤复杂,从文章《Helm来了还在为写复杂的Yaml文件而烦恼吗》学习了Helm的使用,本文尝试使用Helm简化部署步骤,实现秒级部署。
本文环境继续使用文章《Helm搭桥,一键搞定Harbor部署,告别繁琐步骤》搭建的环境,包含:
两种Ingress-Controller:Cilium-Ingress和Ingress-nginx供选择使用
MetalLB为LoadBalancer类型SVC分配EXTERNAL-IP
两种存储类提供自动置备PV的能力:NFS-CSI和OpenEBS
一、Helm部署单节点MySQL
1.1、部署MySQL-Chart
helm install mysql \
--set auth.rootPassword=MageEdu \
--set primary.persistence.storageClass=nfs-client \
--set auth.database=wpdb \
--set auth.username=wpuser \
--set auth.password='12345Wp' \
oci://registry-1.docker.io/bitnamicharts/mysql \
-n blog
部署单节点MySQL时用到了NFS-CSI的存储类nfs-client,这样能自动在外置的NFS-Server上置备PV,并自动绑定MySQL的PVC,PVC的一些参数设置详见MySQL-Chart
如下截图:
这里只指定了存储类nfs-client,其他参数使用默认值
1.2、查看MySQL运行状态
~$ kubectl get all -n blog
1.3、测试MySQL连接
这时可以运行一个mysql客户端容器,测试MySQL是否可正常访问
~$ kubectl run mysql-client --rm -it --restart='Never' --image docker.io/bitnami/mysql:8.4.2-debian-12-r2 --namespace blog --command -- bash
二、Helm部署WordPress
2.1、部署WordPress-Chart
helm install wordpress \
--set mariadb.enabled=false \
--set externalDatabase.host=mysql.blog.svc.cluster.local \
--set externalDatabase.user=wpuser \
--set externalDatabase.password='12345Wp' \
--set externalDatabase.database=wpdb \
--set externalDatabase.port=3306 \
--set persistence.storageClass=nfs-client \
--set wordpressUsername=admin \
--set wordpressPassword='WordPress12345' \
oci://registry-1.docker.io/bitnamicharts/wordpress \
-n blog --create-namespace
部署WordPress时指定连接mysql的SVC,使用nfs-client存储类自动创建WordPress使用的PV,并自动绑定PVC
2.2、检查WordPress资源运行情况
~$ kubectl get pods -n blog
~$ kubectl get svc -n blog
~$ kubectl get pvc -n blog
2.3、测试结果
三、Helm部署主从复制MySQL
3.1、部署MySQL主从Chart
helm install mysql \
--set auth.rootPassword=123456@24 \
--set global.storageClass=nfs-client \
--set architecture=replication \
--set auth.database=wpdb \
--set auth.username=wpuser \
--set auth.password='12345Wp' \
--set secondary.replicaCount=1 \
--set auth.replicationPassword='replpass' \
oci://registry-1.docker.io/bitnamicharts/mysql \
-n blog --create-namespace
architecture=replication表示部署的MySQL是主从复制模式
secondary.replicaCount=1 表示部署一个从节点
auth.replicationPassword='replpass' 主从复制模式使用的用户密码
其他参数设置请参考MySQL-Chart
3.2、检查mysql的pod和service
~$ kubectl get pods -n blog
~$ kubectl get svc -n blog
3.2、测试MySQL连接
kubectl run mysql-client --rm -it --restart='Never' --image docker.io/bitnami/mysql:8.4.2-debian-12-r2 --namespace blog --command -- bash
四、Helm部署WordPress
4.1、部署WordPress-Chart
helm upgrade wordpress \
--set mariadb.enabled=false \
--set externalDatabase.host=mysql-primary.blog.svc.cluster.local \
--set externalDatabase.user=wpuser \
--set externalDatabase.password='12345Wp' \
--set externalDatabase.database=wpdb \
--set externalDatabase.port=3306 \
--set persistence.storageClass=nfs-client \
--set ingress.enabled=true \
--set ingress.tls=true \
--set ingress.tlsWwwPrefix=true \
--set ingress.selfSigned=true \
--set ingress.ingressClassName=cilium \
--set ingress.hostname=blog.jnlikai.cc \
--set ingress.pathType=Prefix \
--set wordpressUsername=admin \
--set wordpressPassword='WordPress12345' \
oci://registry-1.docker.io/bitnamicharts/wordpress \
-n blog --create-namespace
部署WordPress连接主从复制的MySQL时,指定连接mysql-primary主节点,指定使用cilium的ingress,指定wordpress的域名,指定wordpress的登录用户密码等参数
4.2、检查wordpress的pods
4.3、检查wordpress的ingress
4.4、测试web效果
欢迎关注作者的公众号,公众号每天分享运维干货文章