mirror of
https://github.com/kubesphere/website.git
synced 2025-12-26 00:12:48 +00:00
Add wordpress quickstart
Signed-off-by: Sherlock113 <sherlockxu@yunify.com>
This commit is contained in:
parent
6741fe6821
commit
e3d108dfe8
|
|
@ -1,8 +0,0 @@
|
|||
---
|
||||
title: "Compose and deploy a Wordpress App"
|
||||
keywords: 'kubesphere, kubernetes, docker, multi-tenant'
|
||||
description: 'Compose and deploy a Wordpress App'
|
||||
|
||||
linkTitle: "Compose and deploy a Wordpress App"
|
||||
weight: 3050
|
||||
---
|
||||
|
|
@ -0,0 +1,199 @@
|
|||
---
|
||||
title: "Compose and Deploy Wordpress"
|
||||
keywords: 'KubeSphere, Kubernetes, app, Wordpress'
|
||||
description: 'Compose and deploy Wordpress.'
|
||||
|
||||
linkTitle: "Compose and Deploy Wordpress"
|
||||
weight: 3050
|
||||
---
|
||||
|
||||
## WordPress Introduction
|
||||
|
||||
WordPress is a free and open-source content management system written in PHP, allowing users to build their own websites. A complete Wordpress application includes the following Kubernetes objects with MySQL serving as the backend database.
|
||||
|
||||

|
||||
|
||||
## Objective
|
||||
|
||||
This tutorial demonstrates how to create an application (WordPress as an example) in KubeSphere and access it outside the cluster.
|
||||
|
||||
## Prerequisites
|
||||
|
||||
An account `project-regular` is needed with the role `operator` assigned in one of your projects (the user has been invited to the project). For more information, see [Create Workspace, Project, Account and Role](../create-workspace-and-project/).
|
||||
|
||||
## Estimated Time
|
||||
|
||||
About 15 minutes.
|
||||
|
||||
## Hands-on Lab
|
||||
|
||||
### Task 1: Create Secrets
|
||||
|
||||
#### Create a MySQL Secret
|
||||
|
||||
The environment variable `WORDPRESS_DB_PASSWORD` is the password to connect to the database in WordPress. In this step, you need to create a ConfigMap to store the environment variable that will be used in MySQL pod template.
|
||||
|
||||
1. Log in KubeSphere console using the account `project-regular`. Go to the detailed page of `demo-project` and navigate to **Configurations**. In **Secrets**, click **Create** on the right.
|
||||
|
||||

|
||||
|
||||
2. Enter the basic information (e.g. name it `mysql-secret`) and click **Next**. In the next page, select **Default** for **Type** and click **Add Data** to add a key-value pair. Input the Key (`MYSQL_ROOT_PASSWORD`) and Value (`123456`) as below and click `√` at the bottom right corner to confirm. When you finish, click **Create** to continue.
|
||||
|
||||

|
||||
|
||||
#### Create a WordPress Secret
|
||||
|
||||
Follow the same steps above to create a WordPress secret `wordpress-secret` with the key `WORDPRESS_DB_PASSWORD` and value `123456`. Secrets created display in the list as below:
|
||||
|
||||

|
||||
|
||||
### Task 2: Create a Volume
|
||||
|
||||
1. Go to **Volumes** under **Storage** and click **Create**.
|
||||
|
||||

|
||||
|
||||
2. Enter the basic information of the volume (e.g. name it `wordpress-pvc`) and click **Next**.
|
||||
3. In **Volume Settings**, you need to choose an available **Storage Class**, and set **Access Mode** and **Volume Capacity**. You can use the default value directly as shown below. Click **Next** to continue.
|
||||
|
||||

|
||||
|
||||
4. For **Advanced Settings**, you do not need to add extra information for this task and click **Create** to finish.
|
||||
|
||||
### Task 3: Create an Application
|
||||
|
||||
#### Add MySQL backend component
|
||||
|
||||
1. Navigate to **Applications** under **Application Workloads**, select **Composing App** and click **Create Composing Application**.
|
||||
|
||||

|
||||
|
||||
2. Enter the basic information (e.g. input `wordpress` for Application Name) and click **Next**.
|
||||
|
||||

|
||||
|
||||
3. In **Components**, click **Add Service** to set a component in the app.
|
||||
|
||||

|
||||
|
||||
4. Define a service type for the component. Select **Stateful Service** here.
|
||||
5. Enter the name for the stateful service (e.g. **mysql**) and click **Next**.
|
||||
|
||||

|
||||
|
||||
6. In **Container Image**, click **Add Container Image**.
|
||||
|
||||

|
||||
|
||||
7. Enter `mysql:5.6` in the search box, press **Enter** and click **Use Default Ports**. After that, do not click `√` at the bottom right corner as the setting is not finished yet.
|
||||
|
||||

|
||||
|
||||
{{< notice note >}}
|
||||
|
||||
In **Advanced Settings**, make sure the memory limit is no less than 1000 Mi or MySQL may fail to start due to a lack of memory.
|
||||
|
||||
{{</ notice >}}
|
||||
|
||||
8. Scroll down to **Environment Variables** and click **Use ConfigMap or Secret**. Input the name `MYSQL_ROOT_PASSWORD` and choose the resource `mysql-secret` and the key `MYSQL_ROOT_PASSWORD` created in the previous step. Click `√` after you finish and **Next** to continue.
|
||||
|
||||

|
||||
|
||||
9. Select **Add Volume Template** in **Mount Volumes**. Input the value of **Volume Name** (`mysql`) and **Mount Path** (mode: `ReadAndWrite`, path: `/var/lib/mysql`) as below:
|
||||
|
||||

|
||||
|
||||
Click `√` after you finish and click **Next** to continue.
|
||||
|
||||
10. In **Advanced Settings**, you can click **Add** directly or select other options based on your needs.
|
||||
|
||||

|
||||
|
||||
11. At this point, the MySQL component has beed added as shown below:
|
||||
|
||||

|
||||
|
||||
#### Add WordPress frontend component
|
||||
|
||||
12. Click **Add Service** again and select **Stateless Service** this time. Enter the name `wordpress` and click Next.
|
||||
|
||||

|
||||
|
||||
13. Similar to the step above, click **Add Container Image**, enter `wordpress:4.8-apache` in the search box, press **Enter** and click **Use Default Ports**.
|
||||
|
||||

|
||||
|
||||
14. Scroll down to **Environment Variables** and click **Use ConfigMap or Secret**. Two environment variables need to be added here. Enter the values according to the screenshot below.
|
||||
|
||||
- For `WORDPRESS_DB_PASSWORD`, choose `wordpress-secret` and `WORDPRESS_DB_PASSWORD` created in Task 1.
|
||||
- Click **Add Environment Variable**, and enter `WORDPRESS_DB_HOST` and `mysql` for the key and value.
|
||||
|
||||
{{< notice warning >}}
|
||||
|
||||
For the second environment variable added here, the value must be exactly the same as the name you set for MySQL in step 5. Otherwise, Wordpress cannot connect to the corresponding database of MySQL.
|
||||
|
||||
{{</ notice >}}
|
||||
|
||||

|
||||
|
||||
Click `√` to save it and **Next** to continue.
|
||||
|
||||
15. In **Mount Volumes**, click **Add Volume** and select **Choose an existing volume**.
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
16. Select `wordpress-pvc` created in the previous step, set the mode as `ReadAndWrite`, and input `/var/www/html` as its mount path. Click `√` to save it and **Next** to continue.
|
||||
|
||||

|
||||
|
||||
17. In **Advanced Settings**, you can click **Add** directly or select other options based on your needs.
|
||||
|
||||

|
||||
|
||||
18. The frontend component is also set now. Click **Next** to continue.
|
||||
|
||||

|
||||
|
||||
19. You can set route rules (Ingress) here or click **Create** directly.
|
||||
|
||||

|
||||
|
||||
20. The app will display in the list below after you create it.
|
||||
|
||||

|
||||
|
||||
### Task 4: Verify the Resources
|
||||
|
||||
In **Workloads**, check the status of `wordpress-v1` and `mysql-v1` in **Deployments** and **StatefulSets** respectively. If they are running as shown in the image below, it means WordPress has been created successfully.
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
### Task 5: Access WordPress through NodePort
|
||||
|
||||
1. To access the service outside the cluster, navigate to **Services** first. Click the three dots on the right of `wordpress` and select **Edit Internet Access**.
|
||||
|
||||

|
||||
|
||||
2. Select `NodePort` for **Access Method** and click **OK**.
|
||||
|
||||

|
||||
|
||||
3. Click the service and you can see the port exposed.
|
||||
|
||||

|
||||
|
||||
4. Access this application via `{Node IP}:{NodePort}` and you can see an image as below:
|
||||
|
||||

|
||||
|
||||
{{< notice note >}}
|
||||
|
||||
Make sure the port is opened in your security groups before you access the service.
|
||||
|
||||
{{</ notice >}}
|
||||
Loading…
Reference in New Issue