一、基于 Helm 部署 WordPress

1.1 方式一:通过 values.yaml 安装

1、添加WordPress chart仓库

执行以下命令添加WordPress chart仓库

[root@master01 ~]# helm repo add bitnami https://charts.bitnami.com/bitnami
[root@master01 ~]# helm repo update

创建一个名为wordpress的命名空间

[root@master01 ~]# kubectl create namespace wordpress

2、创建values.yaml文件

在本地创建一个values.yaml文件,用于配置WordPress的相关参数。以下是一个示例:

[root@master01 ~]# mkdir -p /root/3/wordpress
[root@master01 ~]# cd /root/3/wordpress
[root@master01 wordpress]# vim values.yaml
# WordPress相关配置
wordpressUsername: admin
wordpressPassword: password
wordpressEmail: admin@example.com
wordpressBlogName: My 123Blog

# Service相关配置
service:
  type: NodePort
  port: 80
  nodePorts:
    http: "32088"

#  MySQL相关配置
mysql:
  image:
    repository: bitnami/mysql
    tag: 8.0.26-debian-10-r0
    pullPolicy: IfNotPresent
  user: wordpress
  database: wordpress
  port: 3306
  persistence:
    enabled: true
    size: 8Gi
    storageClass: "nfs-storage"

# WordPress相关配置
wordpress:
  image:
    repository: bitnami/wordpress
    tag: 5.8.1-debian-10-r0
    pullPolicy: IfNotPresent
  replicaCount: 1
  persistence:
    enabled: true
    size: 8Gi
    storageClass: "nfs-storage"

3、安装WordPress

执行以下命令安装WordPress

[root@master01 ~]# cd /root/3/wordpress
[root@master01 wordpress]# helm install my-wordpress bitnami/wordpress -f values.yaml -n wordpress

其中,my-wordpress是安装的WordPress的名称,stable/wordpress是Helm官方提供的WordPress Chart,-f values.yaml指定了使用上一步创建的values.yaml文件,-n wordpress指定了安装的命名空间为wordpress

4、查看安装状态

执行以下命令查看安装状态

#查看pvc
[root@master01 wordpress]# kg pvc  -n wordpress
NAME                          STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS   AGE
data-my-wordpress-mariadb-0   Bound    pvc-be1be1d1-4357-4713-b181-2ff2e1556c28   8Gi        RWO            nfs-storage    13m
my-wordpress                  Bound    pvc-c9d4755b-c6cb-47da-b6ed-07df4dd1c6cb   10Gi       RWO            nfs-storage    13m

#查看svc
[root@master01 wordpress]# kg svc  -n wordpress
NAME                   TYPE        CLUSTER-IP    EXTERNAL-IP   PORT(S)                      AGE
my-wordpress           NodePort    10.0.25.215   <none>        80:32088/TCP,443:30050/TCP   4h44m
my-wordpress-mariadb   ClusterIP   10.0.8.162    <none>        3306/TCP                     4h44m

#查看pod
[root@master01 wordpress]# kgp -n  wordpress
NAME                            READY   STATUS    RESTARTS       AGE
my-wordpress-7cf6bc5657-ll2r6   1/1     Running   45 (11m ago)   4h42m
my-wordpress-mariadb-0          1/1     Running   0              4h42m

5、如果需要升级WordPress,可以使用以下命令

$ helm upgrade my-wordpress bitnami/wordpress -f values.yaml -n wordpress

如果需要删除WordPress,可以使用以下命令:

$ helm uninstall my-wordpress -n wordpress

6、访问

如果是NodePort,执行如下命令

# 输出WordPress的URL
[root@master01 wordpress]# echo "WordPress URL:  http://$(kubectl get nodes -o jsonpath='{.items[0].status.addresses[?(@.type=="InternalIP")].address}'):$(kubectl get svc my-wordpress -n wordpress -o jsonpath='{.spec.ports[?(@.port==80)].nodePort}')"

如果是loadBalancer,执行如下命令

# 输出WordPress的URL
echo "WordPress URL: http://$(kubectl get svc my-wordpress -n wordpress -o jsonpath='{.status.loadBalancer.ingress[0].ip}')"