\chapter{緒論}
\label{ch:intro}
本章節敘述國立陽明交通大學資工系資訊中心(以下簡稱系計中)對於網頁代管的需求起源,以及演變成 Kubernetes-as-a-Service 平台的脈絡。
\section{研究動機}
在大專院校,尤其是資訊相關科系,對於架設網頁的需求相當常見。在陽明交大資工系,我們觀察到實驗室與教授個人普遍皆有架站需求,並且每個單位使用的架站技術皆有所差異。有些單位為了方便管理自己的網頁服務,將網頁架設於放置在系上代管機房的個人伺服器上,卻常因實驗室內部交接不確實等因素,久而久之疏於管理。同時此類網頁服務通常負載極低,四散在個人伺服器的情景對於用電與機房空間管理相當不理想。針對架設網站的需求,如果能夠達到集中管理,在環境、資源運用與資訊安全等方面皆可預期有相當的好處。
關於大量網站的集中管理,常見的方案依據平台對於網站性質的彈性,由低到高大致可分為以下類別:
\begin{onehalfspacing}
\begin{itemize}
\item 靜態內容網頁代管
\item 特定內容管理系統(如 WordPress、Drupal)代管
\item 特定後端語言(如 PHP)代管
\end{itemize}
\end{onehalfspacing}
然而考量到資工系系上網頁技術的多元廣泛,以上的形式皆不足以滿足需求。其中若以特定內容管理系統或後端語言提供服務,在整個資工系的規模下,面對系統或語言本身的更迭,難免需要對部份使用者提供特定版本,以利使用者逐步進行版本更新,在管理與系統設計上負擔特別大。
我們希望提供的平台可以支援各種網頁技術,達成對程式語言的中立 (language-neutral),其中尤其是直譯式語言 (interpreted language) 因在開發迭代速度上的優勢,在網頁後端特為流行。考量到直譯式語言在執行期間需要直譯器,普遍對於環境要求較高,以容器或是虛擬機為形式提供服務最為自然。為了避開虛擬機的額外運算負擔,我們選擇相對輕量且在資源分配上較有彈性的容器技術作為平台的基本提供形式。
綜上所述,我們需要一個網頁代管平台,除了一般平台常見的配額等管理機制外,我們希望以容器作為使用者部屬網頁的基本方式。透過此平台,我們可以集中管理系上四散的網頁服務,提高資源運用效率。另外,以容器作為形式也使得平台本身具備往其他需求發展的可行性,雖設計上以架設網頁服務為主要需求,實質上可以規劃為通用型雲端運算平台。
\section{研究目標}
對於容器的大量部屬,目前最廣泛、最通用的管理技術為 Kubernetes。我們希望以 Kubernetes-as-a-Service 的型式,提供代管的 Kubernetes 平台,讓使用者能夠直接透過標準的 Kubernetes API 進行操作。平台將針對系上的大規模使用場景規劃,並且雖著重於網頁服務的架設,同時也保留 Kubernetes 本身的通用性,可以作為通用的雲端運算平台使用。對於不熟悉 Kubernetes 的使用者,我們也應提供友善的網頁界面,使其也能利用平台達成一般網頁的架設。
雲端運算技術雖然具有透過將資源池化共用,以提高資源運用效率及降低成本的優勢,但共用資源的本質也帶給其多租戶設計顯著的挑戰。我們面對的客群是整個資工系的師生與助理,整體會有上千個潛在租戶,其中租戶間是不存在任何信任的,特別是對資訊安全有興趣學生,這種平台容易成為攻擊練習目標。大量的租戶以及強烈的安全性需求為平台設計考量的兩大要點。