Creating a WordPress Workload
WordPress was originally a blog platform based on PHP and MySQL. It is gradually evolved into a content management system. You can set up your own blog website on any server that supports PHP and MySQL. Thousands of plug-ins and countless theme templates are available for WordPress and easy to install.
This section describes how to create a public WordPress website from images.
Prerequisites
- You have created a CCE cluster that contains a node with 4 vCPUs and 8 GiB memory. For details on how to create a cluster, see Creating a Kubernetes Cluster.
- The MySQL database has been created by following the instructions in Creating a MySQL Workload. In this example, WordPress data is stored in the MySQL database.
Operations on the Console
- Log in to the CCE console.
- Choose the target cluster.
- In the navigation pane, choose Workloads. Then, click Create Workload.
- Set workload parameters.
Basic Info
- Workload Type: Select Deployment.
- Workload Name: Set it to wordpress.
- Namespace: Select default.
- Pods: Set this parameter to 2 in this example.
Figure 1 Setting the basic information about the workload
Container Settings
In the Basic Info area, click Select Image. In the dialog box displayed, select Open Source Images, search for wordpress, select the wordpress image, and set the image tag to php7.3.
Figure 2 Selecting an image tag
Add the following environment variables:
(These variables let WordPress know the information about the MySQL database.)
- WORDPRESS_DB_HOST: address for accessing the database, which can be found in the Service (on the Services tab page) of the MySQL workload. You can use the internal domain name mysql.default.svc.cluster.local:3306 to access the database, or use only mysql:3306 omitting .default.svc.cluster.local.
- WORDPRESS_DB_USER: username for accessing the database. The value must be the same as that of MYSQL_USER in Creating a MySQL Workload, which is used to connect to MySQL.
- WORDPRESS_DB_PASSWORD: password for accessing the database. The value must be the same as that of MYSQL_PASSWORD in Creating a MySQL Workload.
- WORDPRESS_DB_NAME: name of the database to be accessed. The value must be the same as that of MYSQL_DATABASE in Creating a MySQL Workload.
Figure 3 Setting environment variables
Service Settings
Click the plus sign (+) to create a Service for accessing the workload from an external network. In this example, create a LoadBalancer Service. Configure the following parameters:
- Service Name: name of the Service exposed to external networks. In this example, the Service name is wordpress.
- Access Type: Select LoadBalancer.
- Service Affinity: Retain the default value.
- Load Balancer: If a load balancer is available, select an existing load balancer. If not, click Create Load Balancer to create one on the ELB console.
- Port:
- Protocol: Select TCP.
- Service Port: Set this parameter to 80, which is mapped to the container port.
- Container Port: port on which the application listens. For containers created using the wordpress image, set this parameter to 80. For other applications, set this parameter to the port of the application.
Figure 4 Creating a Service
- Click Create Workload.
Wait until the workload is created.
The created Deployment will be displayed on the Deployments tab.
Figure 5 Workload created successfully
Operations Through kubectl
This section describes how to use kubectl to create a Deployment and expose the Deployment to the Internet through a LoadBalancer Service.
- Use kubectl to connect to the cluster. For details, see Connecting to a Cluster Using kubectl.
- Create a description file named wordpress-deployment.yaml. wordpress-deployment.yaml is an example file name. You can rename it as required.
vi wordpress-deployment.yaml
apiVersion: apps/v1 kind: Deployment metadata: name: wordpress namespace: default spec: replicas: 2 selector: matchLabels: app: wordpress version: v1 template: metadata: labels: app: wordpress version: v1 spec: containers: - name: container-1 image: wordpress:php7.3 env: - name: WORDPRESS_DB_HOST value: mysql:3306 - name: WORDPRESS_DB_USER value: db_user - name: WORDPRESS_DB_PASSWORD value: password@123 - name: WORDPRESS_DB_NAME value: database resources: requests: cpu: 250m memory: 128Mi limits: cpu: 250m memory: 128Mi imagePullSecrets: - name: default-secret
- Create a WordPress workload.
kubectl apply -f wordpress-deployment.yaml
If the following information is displayed, the Deployment is being created.
deployment "wordpress" created
Check the Deployment.
kubectl get deployment
If the following information is displayed, the Deployment is running.
NAME READY UP-TO-DATE AVAILABLE AGE wordpress 1/1 1 1 4m5s
- Create a description file named wordpress-service.yaml. wordpress-service.yaml is an example file name. You can rename it as required.
vi wordpress-service.yaml
apiVersion: v1 kind: Service metadata: name: wordpress namespace: default annotations: kubernetes.io/elb.class: union kubernetes.io/elb.autocreate: '{ "type": "public", "bandwidth_name": "cce-wordpress", "bandwidth_chargemode": "bandwidth", "bandwidth_size": 5, "bandwidth_sharetype": "PER", "eip_type": "5_bgp" }' spec: selector: app: wordpress externalTrafficPolicy: Cluster ports: - name: cce-service-0 targetPort: 80 nodePort: 0 port: 80 protocol: TCP type: LoadBalancer
- Create a Service.
kubectl create -f wordpress-service.yaml
If information similar to the following is displayed, the Service has been created.
service/wordpress created
kubectl get svc
If information similar to the following is displayed, the access type has been configured, and the workload is accessible.
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes ClusterIP 10.247.0.1 <none> 443/TCP 3d mysql ClusterIP 10.247.202.20 <none> 3306/TCP 8m wordpress LoadBalancer 10.247.130.196 **.**.**.** 80:31540/TCP 51s
Accessing WordPress
- Obtain the external access address of WordPress.
Click the wordpress workload to enter its details page. On the Access Mode tab page, view the IP address of WordPress. The load balancer IP address is the external access address.
Figure 6 Accessing WordPress
- Enter the external access address in the address box of a browser to connect to the workload.
The following figure shows the accessed WordPress page.
Figure 7 WordPress workload
Figure 8 WordPress
Deleting Resources
Until now, you have completed all the Getting Started walkthroughs and have understood how to use CCE. Fees are incurred while nodes are running. If the clusters used in the Getting Started walkthroughs are no longer in use, perform the following steps to delete them. If you will continue the CCE walkthroughs, retain the clusters.
- Log in to the CCE console.
- In the navigation pane on the left, choose Clusters.
- Click next to a cluster and delete the cluster as prompted.
Figure 9 Deleting a cluster
Feedback
Was this page helpful?
Provide feedbackThank you very much for your feedback. We will continue working to improve the documentation.