Step 2: Deploying WordPress
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 Step 1: Deploying MySQL. In this example, WordPress data is stored in the MySQL database.
Operations on the Console
- Log in to the CCE console.
- Click the name of the target cluster to access the cluster console.
- In the navigation pane, choose Workloads. Then, click Create Workload.
- Configure parameters as promoted.
Basic Info
- Workload Type: Select Deployment.
- Workload Name: Enter wordpress in the text box.
- Namespace: Select default.
- Pods: Set this parameter to 2 in this example.
Figure 1 Configuring the workload
Container Settings
In the Container Information area, click Basic Info and click Select Image next to Image Name. In the dialog box displayed, select Open Source Images, search for wordpress, select the wordpress image, and select php7.3 from the drop-down list for Image Tag.
Figure 2 Selecting an image tag
Add environment variables.
WordPress will get the information about the MySQL database with the following variables.
- 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 Step 1: Deploying MySQL, which is used to access MySQL.
- WORDPRESS_DB_PASSWORD: password for accessing the database. The value must be the same as that of MYSQL_PASSWORD in Step 1: Deploying MySQL.
- WORDPRESS_DB_NAME: name of the database to be accessed. The value must be the same as that of MYSQL_DATABASE in Step 1: Deploying MySQL.
Figure 3 Configuring environment variables
Service Settings
Click the plus sign (+) to create a Service for accessing the workload from an external network. This example shows how to create a LoadBalancer. Configure the following parameters in the window that slides out from the right:
- Service Name: name of the Service exposed to external networks. In this example, the Service name is wordpress.
- Service 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.
- Ports:
- 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 workload 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 access 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 name to enter its details page. On the page displayed, click the Access Mode tab, view the IP address of WordPress. The public IP address is the external access address.
Figure 6 Accessing WordPress
- Enter the external access address in the address box of a browser to access WordPress.
The following figure shows the accessed WordPress page.
Figure 7 WordPress
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 you will continue the CCE walkthroughs, retain the clusters. If the clusters used in the walkthroughs are no longer in use, perform the following steps to delete them:
- Log in to the CCE console.
- In the navigation pane, choose Clusters.
- Click next to the cluster to be deleted, select Delete Cluster, and confirm the information 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.See the reply and handling status in My Cloud VOC.
For any further questions, feel free to contact us through the chatbot.
Chatbot