~xdavidwu/cskloudv3-thesis

745e91612b489f1de1fb9e3e8957cb2cf86de526 — Pinghao Wu 2 months ago 546539b
RelatedWorks: multi-tenancy model of kubernetes
2 files changed, 32 insertions(+), 1 deletions(-)

M Sections/3.RelatedWorks.tex
M ref.bib
M Sections/3.RelatedWorks.tex => Sections/3.RelatedWorks.tex +15 -1
@@ 1,7 1,7 @@
\chapter{相關研究}
\label{ch:related-works}

本章節敘述系計中對於此議題所發展出的 CScloud Platform-as-a-Service (PaaS) 雛型系統,並分析其架構優劣,作為本研究的基石。
本章節敘述系計中對於此議題所發展出的 CScloud Platform-as-a-Service (PaaS) 雛型系統,並分析其架構優劣,作為本研究的基石,另外討論 Kubernetes 上常見的多租戶模型,分析對本研究的適用性。

\section{CScloud}



@@ 28,3 28,17 @@
在安裝特定軟體的方面,因為使用的程式語言 PHP 與 Helm 所採用的 Go 不符,二代採取以執行指令操作伺服器上的 Helm CLI 達成。這種方式雖然易於實做,但也容易產生使用者能夠注入其他指令或是預期外的參數等漏洞,影響到伺服器的安全。

由於 Kubernetes 非同步的設計,狀態更新的推送顯得十分重要,而二代的網頁實做並沒有針對這點設計,而是仰賴於完整的頁面刷新,這也可能造成過度重複執行其餘資料未變更的邏輯運算,間接使得運行成本增加。

\section{Kubernetes 的多租戶模型}

CScloud 採用的基於 Namespace 的多租戶模型由於 Kubernetes 本身的設計,需要大量的額外加固開發成本以確保租戶間的獨立性。在 Kubernetes 下,由於功能面的廣泛,以及專注於單一租戶的歷史脈絡,導致實做多租戶有不同的方法與租戶隔離程度,其中依照使用場景又常分為軟、硬兩種多租戶層級\cite{k8smultitenancy}。

軟多租戶指的是租戶間擁有一定程度的信任,在租戶間的隔離與安全性上的需求較低,而專注於防止租戶間的意外狀況影響,常見於同個公司內部的不同團隊。硬多租戶則是指租戶間無法存在信任,任一租戶都必須視為可能的攻擊者,在設計上必須以隔離、安全性為優先考量。本研究欲達成的目標較偏向硬多租戶。

Kubernetes Namespaces 由於只影響 API 上能描述的 resources 相互關係,並不隱含實際工作負載的隔離,常用來實做軟多租戶。然而,透過 admission control 我們仍能為 resource 內容加以把關,強制使用者開啟對工作負載的額外隔離措施,彌補 Namespaces 在此方面的不足,使其更為貼近硬多租戶的目標。

在硬多租戶的議題下,另一個常見許多的手法是基於叢集的多租戶模型,透過給予每的租戶一個獨立的叢集,進而免除對叢集本身的大多數加固需求,以租戶的角度來看單純許多,並且能夠使用較完整的 Kubernetes 功能。

基於叢集的多租戶由於需要動態的配置多個獨立叢集與節點,因此經常透過大型虛擬機平台實做,加上 cluster API 達成相關的自動化。Cluster API 是 Kubernetes API 的延伸,透過自訂 resource 種類,將租戶叢集的管理以 controller 的方式實做,達成以一個管理用母叢集,管理多個租戶子叢集的形式,減少在維運上的負擔。有些手法另外會將叢集邏輯元件在部屬上盡可能與叢集本身抽離,以其他方式統一代管,避免租戶操作上的意外影響,提昇可靠度,並且降低多叢集在資源上的部份負擔。

雖然基於叢集的多租戶具備功能完整、架構簡潔與高度隔離的優勢,並且已有較多完整的現成解決方案,然而資源開銷較大,本研究有上千個潛在的租戶,考量到系計中的硬體資源,此方法並不實際。本研究採取基於 Namespace 的多租戶設計,並且將其加固以貼近硬多租戶,使用較低的資源成本,但仍提供可接受的安全性。

M ref.bib => ref.bib +17 -0
@@ 257,3 257,20 @@
    year	= {2019},
}

@article{lewis2002psychometric,
    title	= {Psychometric evaluation of the PSSUQ using data from five years of usability studies},
    author	= {Lewis, James R},
    journal	= {International Journal of Human-Computer Interaction},
    volume	= {14},
    number	= {3-4},
    pages	= {463--488},
    year	= {2002},
    publisher	= {Taylor \& Francis}
}

@misc{k8smultitenancy,
    title	= {{Kubernetes} - Multi-Tenancy Design Scratch Space},
    author	= {Jessie Frazelle},
    url		= {https://docs.google.com/document/d/1PjlsBmZw6Jb3XZeVyZ0781m6PV7-nSUvQrwObkvz7jg},
    urldate	= {2024-09-25},
}