更新时间:2024-09-29 GMT+08:00

通过Helm模板部署WordPress

Helm 是一个 Kubernetes 应用程序包管理器,它可以简化部署、升级和管理 Kubernetes 应用程序。Helm 使用 Charts(一种定义 Kubernetes 资源的打包格式)来封装 Kubernetes 部署的所有元素,包括应用程序代码、依赖项、配置文件和部署指令。使用 Helm,可以轻松地部署和管理复杂的 Kubernetes 应用程序,从而简化了应用程序的开发和部署过程。

本文介绍如何通过Helm部署WordPress应用。

前提条件

您需要创建一个至少包含一个4核8G节点的集群,且该节点已绑定弹性IP,用于部署WordPress从外部镜像仓库下载镜像。创建集群的方法,请参见快速创建Kubernetes集群

准备工作

  1. 下载并配置kubectl连接集群。

    登录CCE控制台,单击集群名称,在集群信息页面查看“连接信息 > kubectl ”,单击“配置”并按照指导配置kubectl。

    图1 kubectl
  2. 安装Helm 3,具体请参见https://helm.sh/zh/docs/intro/install/

部署WordPress

  1. 添加WordPress官方Repo。

    helm repo add bitnami https://charts.bitnami.com/bitnami

  2. 执行如下命令,创建WordPress应用。

    helm install myblog bitnami/wordpress \
        --set mariadb.primary.persistence.enabled=true \
        --set mariadb.primary.persistence.storageClass=csi-disk \
        --set mariadb.primary.persistence.size=10Gi \
        --set persistence.enabled=false
    • Mariadb使用持久化存储卷保存数据。持久化存储选用云硬盘,大小为10 GiB,并通过配置StorageClassName自动化创建。
    • WordPress不需要进行数据持久化,数据卷persistence.enabled配置为false。

    命令执行后回显类似如下。

    coalesce.go:223: warning: destination for mariadb.networkPolicy.egressRules.customRules is a table. Ignoring non-table value ([])
    NAME: myblog
    LAST DEPLOYED: Mon Mar 27 11:47:58 2023
    NAMESPACE: default
    STATUS: deployed
    REVISION: 1
    TEST SUITE: None
    NOTES:
    CHART NAME: wordpress
    CHART VERSION: 15.2.57
    APP VERSION: 6.1.1
    
    ** Please be patient while the chart is being deployed **
    
    Your WordPress site can be accessed through the following DNS name from within your cluster:
    
        myblog-wordpress.default.svc.cluster.local (port 80)
    
    To access your WordPress site from outside the cluster follow the steps below:
    
    1. Get the WordPress URL by running these commands:
    
      NOTE: It may take a few minutes for the LoadBalancer IP to be available.
            Watch the status with: 'kubectl get svc --namespace default -w myblog-wordpress'
    
       export SERVICE_IP=$(kubectl get svc --namespace default myblog-wordpress --template "{{ range (index .status.loadBalancer.ingress 0) }}{{ . }}{{ end }}")
       echo "WordPress URL: http://$SERVICE_IP/"
       echo "WordPress Admin URL: http://$SERVICE_IP/admin"
    
    2. Open a browser and access WordPress using the obtained URL.
    
    3. Login with the following credentials below to see your blog:
    
      echo Username: user
      echo Password: $(kubectl get secret --namespace default myblog-wordpress -o jsonpath="{.data.wordpress-password}" | base64 -d)

    回显中告诉了如何获取外部访问地址和登录WordPress后台的用户及密码。

访问WordPress

  1. 修改WordPress Service配置。

    由于CCE中使用负载均衡Service需要额外的annotation配置,而bitnami/wordpress中并无此配置,因此需要手动修改。

    kubectl edit svc myblog-wordpress

    在metadata.annotations下添加kubernetes.io/elb.autocreatekubernetes.io/elb.class两行并保存,如下所示。这两个annotation的作用是创建共享型负载均衡,这样就能通过负载均衡的弹性IP访问WordPress应用。

    apiVersion: v1
    kind: Service
    metadata:
      name: myblog-wordpress
      namespace: default
      annotations:
        kubernetes.io/elb.autocreate: '{ "type": "public", "bandwidth_name": "myblog-wordpress", "bandwidth_chargemode": "bandwidth", "bandwidth_size": 5, "bandwidth_sharetype": "PER", "eip_type": "5_bgp" }'
        kubernetes.io/elb.class: union
    spec:
      ports:
        - name: http
    ...

  2. 获取myblog-wordpress Service的公网负载均衡IP并访问。

    在服务页签先找到myblog-wordpress,在IP地址一列找到负载均衡公网IP。

    在浏览器地址栏中输入<负载均衡公网IP>:80访问WordPress。

    在浏览器地址栏中输入<负载均衡公网IP>:80/login 访问WordPress后台,用户为user,执行如下命令获取user用户的密码。

    kubectl get secret --namespace default myblog-wordpress -o jsonpath="{.data.wordpress-password}" | base64 -d

删除WordPress应用

  1. 执行如下命令可删除WordPress应用。

    helm delete myblog

    回显如下:
    release "myblog" uninstalled

  2. 删除WordPress中mariadb组件使用的存储PVC。

    kubectl delete pvc data-myblog-mariadb-0

    回显如下:
    persistentvolumeclaim "data-myblog-mariadb-0" deleted