如何用 manifest 部署 Wordpress
Trait 是應用元件的基礎特徵。不同的 trait 內容都不相同,詳細內容請參考內建特徵型別。
接下來讓我們從頭開始,在先前的章節內,我們介紹了 Manifest 及 Spec,當我們想要在環境上部署 Wordpress ,Manifest 的前置內容如下方範例
apiVersion: po.rapd.app/v1beta1kind: Applicationmetadata: name: my-wordpressspec: 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 快速地替您部署在不同的環境上。