通过Helm模板部署WordPress
Helm 是一个 Kubernetes 应用程序包管理器,它可以简化部署、升级和管理 Kubernetes 应用程序。Helm 使用 Charts(一种定义 Kubernetes 资源的打包格式)来封装 Kubernetes 部署的所有元素,包括应用程序代码、依赖项、配置文件和部署指令。使用 Helm,可以轻松地部署和管理复杂的 Kubernetes 应用程序,从而简化了应用程序的开发和部署过程。
本文介绍如何通过Helm部署WordPress应用。
前提条件
您需要创建一个至少包含一个4核8G节点的集群,且该节点已绑定弹性IP,用于部署WordPress从外部镜像仓库下载镜像。创建集群的方法,请参见快速创建Kubernetes集群。
准备工作
- 下载并配置kubectl连接集群。
登录CCE控制台,单击集群名称,在集群信息页面查看“连接信息 > kubectl ”,单击“配置”并按照指导配置kubectl。
图1 kubectl
- 安装Helm 3,具体请参见https://helm.sh/zh/docs/intro/install/。
部署WordPress
- 添加WordPress官方Repo。
helm repo add bitnami https://charts.bitnami.com/bitnami
- 执行如下命令,创建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
- 修改WordPress Service配置。
由于CCE中使用负载均衡Service需要额外的annotation配置,而bitnami/wordpress中并无此配置,因此需要手动修改。
kubectl edit svc myblog-wordpress
在metadata.annotations下添加kubernetes.io/elb.autocreate和kubernetes.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 ...
- 获取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应用
- 执行如下命令可删除WordPress应用。
helm delete myblog
回显如下:release "myblog" uninstalled
- 删除WordPress中mariadb组件使用的存储PVC。
kubectl delete pvc data-myblog-mariadb-0
回显如下:persistentvolumeclaim "data-myblog-mariadb-0" deleted