From 060ce3c532f39de12d175e4ac515d8eb16a7d20e Mon Sep 17 00:00:00 2001 From: Pinghao Wu Date: Mon, 11 Nov 2024 22:21:08 +0800 Subject: [PATCH] hbox overflow fixes --- Sections/2.Backgrounds.tex | 1 + Sections/4.Architecture.tex | 6 +++--- Sections/5.Evaluation.tex | 3 ++- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/Sections/2.Backgrounds.tex b/Sections/2.Backgrounds.tex index ffa0c08..914b9ec 100644 --- a/Sections/2.Backgrounds.tex +++ b/Sections/2.Backgrounds.tex @@ -94,6 +94,7 @@ OpenID Connect (OIDC)\cite{oidc} 則是一個基於 OAuth 框架衍生的身份 \begin{table}[htb] \centering \caption{Kubernetes 驗證機制彙整} + \setlength{\tabcolsep}{4pt} \begin{tabular}{l || c | c | c | l} & 效期 & 撤銷 & 管理、開發成本 & 典型場景 \\ \hline\hline diff --git a/Sections/4.Architecture.tex b/Sections/4.Architecture.tex index db97694..df98a6f 100644 --- a/Sections/4.Architecture.tex +++ b/Sections/4.Architecture.tex @@ -65,7 +65,7 @@ Kubernetes 功能廣泛,有許多功能牽涉較大的作業系統權限,間 面對如此多元的安全性相關設定,以及其產生的無數組合,我們需要一個標準評判 Pod 的安全性。Kubernetes 提出了 Pod Security Standards,並且將可能的設定分為三個政策層級:privileged、baseline 與 restricted。Privileged 可以放寬隔離機制,baseline 包含未特別指定任何設定的場景,restricted 則是進一步要求提升安全性設定。對於執行這些政策檢查,Kubernetes 提供了 \verb|PodSecurity| admission controller。 -大多數政策類型的 admission controllers,包含 \verb|PodSecurity|,設計上皆能夠以 Namespace 為單位設定政策,為了確保平台安全性,我們針對使用者的 Namespaces 實施 restricted 政策。 +大多數政策類型的 admission controllers,包含 \verb|PodSecurity|,皆能夠以 Namespace 為單位設定政策,增加管理上的彈性。為了確保平台安全性,我們針對使用者的 Namespaces 實施 restricted 政策,再另外個案處理平台基礎建設所使用的 Namespaces。 \subsection{PodTolerationRestriction} \label{sec:PodTolerationRestriction} @@ -127,7 +127,7 @@ Kubernetes 中容器 images 的下載策略(\verb|imagePullPolicy| 欄位) 對於管理需求,我們在 admission control 實做保留了彈性,若操作者為管理者即不加以限制。管理者可以自行創立代表他人的 User,為其修改身份組,提供人工處理政策上例外的空間。另外,由 User 所產生的每個 resource 皆會採用 Kubernetes 的 \verb|ownerReferences| 機制。\verb|ownerReferences| 表現了一個 resource 被一個 owner resource 所管轄,當 owner resource 被刪除時,Kubernetes 的回收機制也會一併刪除此 resource。在我們的場景,由於使用者的資料皆為於個人專屬的 Namespace 底下,而 User 又為此 Namespace 的 owner resource,於是當使用者行為極端異常,管理者需要對其制裁時,只須刪除其 User 便可徹底清除此使用者的所作所為。 -在實做方面,User 種類的定義以及 controller 邏輯採用 Kubebuilder\cite{kubebuilder} 框架撰寫。Kubebuilder 採用 Go 程式語言與 \verb|sig.k8s.io/controller-runtime| 函式庫開發,由 Go 語言的資料結構定義輔以註解補充,搭配程式碼生成技術實現 Kubernetes resource 種類的定義,並且提供實做 controller 時所需的監控 resources 變更等基本邏輯。另外,\verb|sig.k8s.io/controller-runtime| 亦具備 \verb|envtest| 測試框架,自動化運行 kube-apiserver 等元件,在不需要架設完整叢集的前提下,提供 controller 較為完整的測試環境。 +在實做方面,User 種類的定義以及 controller 邏輯採用 Kubebuilder\cite{kubebuilder} 框架撰寫。Kubebuilder 採用 Go 程式語言與 \verb|sig.k8s.io/controller-runtime| 函式庫開發,由 Go 語言的資料結構定義輔以註解補充,搭配程式碼生成技術實現 Kubernetes resource 種類的定義,並且提供實做 controller 時所需的監控 resources 變更等基本邏輯。另外,\verb|sig.k8s.io/controller-runtime| 亦具備 \verb|envtest| 測試框架,實做 kube-apiserver 等元件的自動運行,在不需要架設完整叢集的前提下,提供 controller 較為完整的測試環境。 \subsection{Namespace} @@ -225,7 +225,7 @@ Helm Release 預設的 Secret 儲存方式需要經過 Base64\footnote{Base64: \caption{CSKloud v3 網頁界面實做 Helm 原理示意圖} \end{figure} -除此之外,瀏覽器執行程式碼的方式主要為單執行緒,不論 JavaScript 或 WebAssembly 邏輯皆是在與畫面繪製相同的執行緒執行,唯 JavaScript 語言上具有異步 IO 相關設計,使得一般負擔主要在 IO 與事件處理的網頁程式碼具備可接受的效能。但我們的場景不同,Helm 的模板引擎運算量較多,在執行時容易拖累到畫面繪製,造成卡頓。對此,我們進一步採用 Web Workers 技術。Web Workers 提供一個較侷限的執行環境,但在獨立的執行緒運行,可以避面上述影響繪製的窘境,使用上開發者需自行處理 Web Workers 與瀏覽器一般執行緒間的溝通。我們將安裝、升級、回滾、解除安裝的耗時的操作,包含 WebAssembly 的使用,在 Web Workers 環境下實做以改善使用者體驗。 +除此之外,瀏覽器一般以單一執行緒運行程式碼,不論 JavaScript 或 WebAssembly 邏輯皆是在與畫面繪製相同的執行緒執行,唯 JavaScript 語言上具有異步 IO 相關設計,使得一般負擔主要在 IO 與事件處理的網頁程式碼具備可接受的效能。但我們的場景不同,Helm 的模板引擎運算量較多,在執行時容易拖累到畫面繪製,造成卡頓。對此,我們進一步採用 Web Workers 技術。Web Workers 提供一個較侷限的執行環境,但在獨立的執行緒運行,可以避面上述影響繪製的窘境,使用上開發者需自行處理 Web Workers 與瀏覽器一般執行緒間的溝通。我們將安裝、升級、回滾、解除安裝的耗時的操作,包含 WebAssembly 的使用,在 Web Workers 環境下實做以改善使用者體驗。 在安裝的部份,由於我們是在瀏覽器內實做,能存取的 HTTP 服務受到對端的跨域政策影響。除非對端主動的表示允許,瀏覽器會限制網頁邏輯對其他域名服務的存取,作為增強安全性的一個手段。由於 Helm 傳統上並非在瀏覽器環境執行,Helm Repositories 大多不會特別放寬跨域政策,因此我們無法直接使用市面上大多數的 Helm Repositories。針對 CSKloud 的場景,因為可以預期部份 Charts 會受到平台加固等策略影響而無法安裝,我們採用自行架設 Helm Repositories,並只納入批量測試成功安裝的 Helm Charts,目前共提供 32 個來自 Bitnami 的 Helm Charts。 diff --git a/Sections/5.Evaluation.tex b/Sections/5.Evaluation.tex index a02cda9..498964a 100644 --- a/Sections/5.Evaluation.tex +++ b/Sections/5.Evaluation.tex @@ -8,6 +8,7 @@ \begin{table}[htb] \centering \caption{CSKloud v3 內部實驗環境} + \setlength{\tabcolsep}{5pt} \begin{tabular}{l || c | c} & Control plane & Worker nodes \\ \hline\hline @@ -54,7 +55,7 @@ PSSUQ 是常見針對軟體系統的標準問卷調查,根據歷史發展分 \begin{table}[htb] \centering \small - \setlength{\tabcolsep}{2pt} + \setlength{\tabcolsep}{1.97pt} \caption{問卷調查結果} \label{tab:survey-result} % cat *.csv | grep 2024 | cut -d ',' -f 2-25 | tr -d '"' | sed 's/,/ \& /g;s/& &/\& \\scriptsize NA \&/g;s/$/ \\\\/;s/^/\& /;=' | wl-copy -- 2.45.2