跳到內容

如何用 manifest 部署 Wordpress

Trait 是應用元件的基礎特徵。不同的 trait 內容都不相同,詳細內容請參考內建特徵型別

接下來讓我們從頭開始,在先前的章節內,我們介紹了 Manifest 及 Spec,當我們想要在環境上部署 Wordpress ,Manifest 的前置內容如下方範例

apiVersion: po.rapd.app/v1beta1
kind: Application
metadata:
name: my-wordpress
spec:
version: "1.0"
revisionHistory: 3
components:
...

接下來,部署一個 wordpress,我們會需要一個 DB server,因此在這份應用的元件組成中,我們可以加入下方範例:

- type: webservice.container
name: wordpress-mysql
target: AWS_K8S
traits:
- type: container
image: mysql
ports:
- port: 3306
name: "mysql_port"
protocol: "TCP"
env:
- name: MYSQL_DATABASE
value: wp
- name: MYSQL_USER
value: user
- name: MYSQL_PASSWORD
value: passwd
- name: MYSQL_ROOT_PASSWORD
value: aaaaaa

透過 RAPD 部署後,我們在 Deployment targe 名稱為 AWS_K8S 的叢集內,會運行一個對外 port 為 3306 的 mysql container。

但我們還缺少一個最主要的 webservice: Wordpress。 所以我們可以在 component 內加入下方範例:

- type: webservice.container
name: wordpress
target: AWS_K8S
traits:
- type: container
image: wordpress
ports:
- port: 80
name: "http"
protocol: "TCP"

等等,這裡我們似乎少了什麼!!!

現在的 Component 內有 wordpress 及 mysql 兩個 container 了,但是他們彼此沒有任何關聯。 是了,wordpress 缺少 DB 的位置及帳號密碼。所以我們需要修改上方的 Trait 範例:

- type: container
image: wordpress
ports:
- port: 80
name: "http"
protocol: "TCP"
env:
- name: WORDPRESS_DB_HOST
value: my_wordpress-wordpress-mysql
- name: WORDPRESS_DB_USER
value: wpuser
- name: WORDPRESS_DB_PASSWORD
value: passwd
- name: WORDPRESS_DB_NAME
value: wp

我們可以透過這份 Manifest 讓 RAPD 在 AWS 上的 K8S Cluster 部署起這兩個 pod,讓我們馬上來使用剛部署好的 Wordpress。 打開瀏覽器輸入 http://{your-k8s-domain},但是您會發現,無法打開 Wordpress 首頁。 原來,我們的 webservice 還缺少了 routing。因此 Wordpress 這個 component 的完整範例應該如下:

- type: webservice.container
name: wordpress
target: [deployment_target_name]
traits:
- type: container
image: wordpress
ports:
- port: 80
name: "http"
protocol: "TCP"
env:
- name: WORDPRESS_DB_HOST
value: my_wordpress-wordpress-mysql
- name: WORDPRESS_DB_USER
value: wpuser
- name: WORDPRESS_DB_PASSWORD
value: passwd
- name: WORDPRESS_DB_NAME
value: wp
- type: ingressRoute
paths:
"/": 80
pathType: Prefix
name: wordpress-ingress

讓我們重新整理一下 Manifest 後重新部署,待 RAPD 部署完成後,可以發現剛剛還無法連線的 Wordpress 已經可以連上了。

恭喜您,您可以開始用 Manifest 打造個人的應用情境了,讓 RAPD 快速地替您部署在不同的環境上。