K8s集群中使用helm安装wordpress
在k8s集群中使用helm安装wordpress
前置条件
需要自己搭建一个nfs服务器作为集群的持久化存储,因为局域网中已经有一台TrueNas服务器,所以这里不再介绍nfs服务的搭建过程。
安装Helm
helm就是一个k8s集群下的包管理工具,类似与debian系统下的apt,安装方式参考:官方文档。helm需要安装在k8s的管理节点,或者master节点
使用系统的包管理工具进行安装,具体操作如下,这种方式可能需要科学上网。其实helm就是一个二进制的可执行文件,也可以参考官方文档自己使用其它方式安装。
curl https://baltocdn.com/helm/signing.asc | gpg --dearmor | sudo tee /usr/share/keyrings/helm.gpg > /dev/null
sudo apt-get install apt-transport-https --yes
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/helm.gpg] https://baltocdn.com/helm/stable/debian/ all main" | sudo tee /etc/apt/sources.list.d/helm-stable-debian.list
sudo apt-get update
sudo apt-get install helm
安装ingress-nginx
添加仓库
# 添加仓库
helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
# 导出配置文件
helm show values ingress-nginx/ingress-nginx > ingress-nginx-values.yaml
修改ingress-nginx-values.yaml如下:
controller:
name: controller
image:
registry: docker.io
image: connor147/ingress-nginx-controller
tag: "v1.7.0"
digest:
digestChroot:
kind: DaemonSet
service:
type: NodePort
nodePorts:
http: 32080
https: 32443
tcp:
8080: 32808
admissionWebhooks:
patch:
enabled: true
image:
registry: docker.io
image: connor147/ingress-nginx-kube-webhook-certgen
tag: v20230312-helm-chart-4.5.2-28-g66a760794
digest:
配置文件的修改点:
- 修改了镜像仓库地址,由于registry.k8s.io无法访问,这里重新打包了镜像到dockerhub上了。
- controller.kind 改成了DaemonSet,原来是Deployment
- controller.service.type 改成了NodePort,原来是LoadBalance
根据配置文件安装(这里创建了命名空间ingress-nginx)
helm install -f ingress-nginx-values.yaml ingress-nginx ingress-nginx/ingress-nginx --namespace ingress-nginx --create-namespace
在安装过完之后如果想要修改配置,可以使用helm update命令(需要指定命名空间)
helm -n wordpress upgrade -f ingress-nginx-values.yaml wordpress ingress-nginx/ingress-nginx
创建pv
要使用NFS持久化卷,首先要在所有的worker节点安装nfs-common(nfs的客户端),否则无法将nfs目录挂载到pv。
apt install nfs-common
新建一个pv.yaml文件,这里创建了两个pv,大小都是30G。由于大小相同为了按照我们想要的方式绑定pv,所以指定了两个不同的storageClassName。
apiVersion: v1
kind: PersistentVolume
metadata:
name: wordpress-pv
spec:
storageClassName: nfs-z590-wp-www # 注意这个字段的值,后面wordpress的配置会用到
accessModes:
- ReadWriteOnce
capacity:
storage: 30Gi
nfs:
path: /***/wordpress/www # 你自己的nfs共享路径
server: ******* # nfs服务器地址,可以是ip地址,也可以是域名
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: wordpress-mariadb-pv
spec:
storageClassName: nfs-z590-wp-mariadb # 注意这个字段的值,后面wordpress的配置会用到
accessModes:
- ReadWriteOnce
capacity:
storage: 30Gi
nfs:
path: /***/wordpress/mysql # 你自己的nfs共享路径
server: ******* # nfs服务器地址,可以是ip地址,也可以是域名
通过pv.yaml创建pv
kubectl apply -f pv.yaml
- 在k8s集群中,pv是全局的资源,所以不需要指定namespace,指定了也没用
- 挂载的nfs目录要注意权限问题,最好在服务端直接将权限改成777
安装wordpress
添加bitnami仓库
helm repo add bitnami https://charts.bitnami.com/bitnami
导出配置
helm show values bitnami/wordpress > bitnami-wordpress-values.yaml
修改配置:bitnami-wordpress-values.yaml
wordpressUsername: admin
wordpressPassword: "123456"
wordpressBlogName: K8s Wordpress!
service:
type: ClusterIP
ingress:
enabled: true
ingressClassName: "nginx"
hostname: wordpress.test.home # 外部访问需要的域名
persistence:
enabled: true
storageClass: "nfs-z590-wp-www" # 要与pv.yaml中的storageClassName相同
accessModes:
- ReadWriteOnce
accessMode: ReadWriteOnce
size: 30Gi
mariadb:
enabled: true
auth:
database: bitnami_wordpress
username: wp
password: "123456"
primary:
persistence:
enabled: true
storageClass: "nfs-z590-wp-mariadb" # 要与pv.yaml中的storageClassName相同
accessModes:
- ReadWriteOnce
size: 30Gi
externalDatabase:
host: localhost
port: 3306
user: wp
password: "123456"
database: bitnami_wordpress
memcached:
enabled: true
auth:
enabled: false
username: ""
password: ""
service:
port: 11211
externalCache:
host: localhost
port: 11211
根据配置文件进行安装(这里创建了命名空间wordpress)
helm install -f bitnami-wordpress-values.yaml wordpress bitnami/wordpress --namespace wordpress --create-namespace
在安装过完之后如果想要修改配置,可以使用helm update命令(需要指定命名空间)
helm -n wordpress upgrade -f bitnami-wordpress-values.yaml wordpress bitnami/wordpress
安装完成
访问ingress需要域名,根据之前安装wordpress配置的域名,修改本机的hosts文件
192.168.32.209 wordpress.test.home #ip地址可以是任一worker节点的ip
由于根据上面的配置文件,安装ingress-nginx时使用NodePort暴露的端口,http端口是32080,所有访问时需要加上端口号,最终效果如下

本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 喵了个咪!