在 Kubernetes 環境中佈署應用程式時,Helm 能夠簡化操作流程並提升效率。首先,需要準備好 Kubernetes 環境,這可以使用 Minikube 快速搭建。安裝 Minikube 後,透過 minikube start 命令即可啟動一個本地 Kubernetes 叢集。接著,安裝 Kubectl,這是 Kubernetes 的命令列工具,用於與叢集互動。然後,安裝 Helm,它是 Kubernetes 的套件管理器,用於簡化應用程式佈署。Helm 使用 Chart 來定義、安裝和升級 Kubernetes 應用程式。組態 Helm 時,可以新增倉函式庫、管理外掛和設定環境變數。安全性考量方面,建議根據最小許可權原則組態 RBAC,避免使用 cluster-admin 許可權。完成環境準備後,即可開始使用 Helm 佈署應用程式。以 WordPress 為例,首先在 Helm Hub 上找到 WordPress Chart,然後新增到本地倉函式庫。確認 Kubernetes 叢集狀態後,使用 helm install 命令安裝 WordPress Chart。佈署過程中,可以透過 --set 命令設定引數,例如資料函式庫密碼和 WordPress 管理員密碼。安裝完成後,可透過 kubectl get svc 命令取得 WordPress 服務的外部 IP 地址,即可在瀏覽器中存取 WordPress 網站。後續可以透過 helm upgrade、helm rollback 和 helm uninstall 命令來管理 WordPress 應用程式,例如升級版本、回復到先前版本或解除安裝應用程式。
Kubernetes 與 Helm 環境準備
在開始使用 Helm 之前,首先需要準備好 Kubernetes 環境,並進行適當的組態。這裡將詳細介紹如何安裝 Minikube 來建立本地 Kubernetes 叢集,並設定 Kubectl 和 Helm 客戶端,同時探討如何進行許可權管理。
安裝與組態 Minikube
Minikube 是一個輕量級的本地 Kubernetes 叢集工具,非常適合開發和測試使用。安裝過程中,Minikube 會自動組態一個完整的 Kubernetes 叢集環境。
安裝 Minikube
玄貓建議使用以下命令來安裝 Minikube:
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube
安裝完成後,可以使用以下命令啟動 Minikube:
minikube start
啟動成功後,Minikube 會自動組態一個預設的 Kubernetes 叢集,並且使用者會擁有 cluster-admin 的許可權,這在學習和實驗中是非常方便的。
安裝與組態 Kubectl
Kubectl 是 Kubernetes 的官方命令列工具,用於與 Kubernetes API 進行互動。安裝過程相對簡單:
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
chmod +x kubectl
sudo mv kubectl /usr/local/bin/
安裝完成後,可以使用 kubectl version 命令來驗證安裝是否成功。
安裝與組態 Helm
Helm 是 Kubernetes 的包管理工具,類別似於 Linux 系統中的包管理器。安裝 Helm 的過程也相對簡單:
curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash
安裝完成後,可以使用 helm version 命令來驗證安裝是否成功。
組態 Helm
Helm 的組態包括新增倉函式庫、外掛管理、環境變數設定等。以下是一些常見的組態操作:
-
新增倉函式庫:
helm repo add stable https://charts.helm.sh/stable -
更新倉函式庫:
helm repo update -
設定環境變數: Helm 使用 XDG 環境變數來組態其行為。這些變數包括:
HELM_CACHE_HOME:Helm 的快取目錄。HELM_CONFIG_HOME:Helm 的組態目錄。HELM_DATA_HOME:Helm 的資料目錄。
-
啟用 Tab 自動補全: 在終端中輸入以下命令來啟用 Helm 的 Tab 自動補全功能:
source <(helm completion bash)
認證與授權管理
認證是確認身份的過程,而授權則定義了認證後的使用者可以執行哪些操作。Kubernetes 使用角色根據存取控制(RBAC)來進行授權管理。
認證
Helm 使用 kubeconfig 檔案中的憑證進行認證。例如:
users:
- name: minikube
user:
client-certificate: /home/helm-user/.minikube/client.crt
client-key: /home/helm-user/.minikube/client.key
授權
Kubernetes 提供了多種角色來定義使用者的許可權,常見的角色包括:
- cluster-admin:允許使用者對叢集中的所有資源執行任何操作。
- edit:允許使用者在名稱空間內對大多數資源進行讀寫操作。
- view:僅允許使用者在名稱空間內讀取資源。
如果需要為 Helm 應用程式佈署提供足夠的許可權,通常需要至少 edit 角色。可以透過以下命令為使用者分配 edit 許可權:
kubectl create clusterrolebinding $USER-edit --clusterrole=edit --user=$USER
安全性考量
在生產環境中,應避免使用預設的 cluster-admin 許可權。應根據最小許可權原則來分配角色和許可權,以防止意外或惡意操作。
安裝第一個 Helm Chart
Helm 作為 Kubernetes 的包管理工具,類別似於作業系統中的包管理器。它允許使用者快速、方便地安裝各種複雜度的應用程式,並管理其依賴項。Helm Chart 是一種 Kubernetes 資源的封裝格式,包含了安裝應用程式所需的邏輯和元件。
在 Helm Hub 上找到 WordPress Chart
Helm Hub 是一個集中儲存 Helm Chart 的平台。可以透過以下命令在 Helm Hub 上搜尋 WordPress Chart:
helm search hub wordpress
找到合適的 Chart 後,可以使用以下命令將其新增到本地倉函式庫:
helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo update
建立 Kubernetes 環境
在佈署 WordPress 前,需要確保 Kubernetes 叢集已經正常執行。可以使用以下命令檢查叢集狀態:
kubectl get nodes
安裝 WordPress Chart
接下來,使用 Helm 安裝 WordPress Chart:
helm install my-wordpress bitnami/wordpress
這個命令會從 Bitnami 的倉函式庫中取得 WordPress Chart,並將其佈署到 Kubernetes 叢集中。
內容解密:
-
命令解說:
helm install my-wordpress bitnami/wordpressmy-wordpress是佈署的應用程式名稱。bitnami/wordpress是 Helm Chart 的名稱和來源。- Helml 支援一鍵式佈署方式,能夠快速完成應用程式的佈署工作。
-
引數設定:在佈署過程中,可以透過
--set命令來設定引數。例如:helm install my-wordpress bitnami/wordpress --set mariadb.rootPassword=my-secret-pw,wordpressPassword=my-password--set用於設定 Chart 中的引數值。mariadb.rootPassword和wordpressPassword是 WordPress Chart 中的引數名稱。
-
檢視佈署狀態:佈署完成後,可以使用以下命令檢視 Pod 的狀態:
kubectl get pods --namespace default -l app.kubernetes.io/name=wordpress,app.kubernetes.io/instance=my-wordpress -w-l用於根據標籤選擇 Pod。-w用於持續觀察 Pod 的狀態變化。
在 Kubernetes 上安裝第一個 Helm Chart
在 Kubernetes 上安裝第一個 Helm Chart 是一項基本但重要的操作。本文將帶領你完成安裝 WordPress Helm Chart 的完整流程,包括安裝、存取、升級、回復以及解除安裝 WordPress 應用程式。這些步驟將幫助你瞭解如何利用 Helm 簡化 Kubernetes 上的應用程式佈署。
安裝 WordPress Chart
WordPress 是一個開源的內容管理系統(CMS),廣泛用於建立網站和部落格。它有兩種主要形式:WordPress.com 和 WordPress.org。WordPress.com 是一個軟體即服務(SaaS)版本,所有的應用程式和元件都由 WordPress 託管和管理,使用者無需擔心安裝和維護。然而,WordPress.com 缺乏一些高階功能,並且使用者無法完全控制網站。
相反地,WordPress.org 是自託管版本,使用者需要自己佈署和維護 WordPress 例項。這意味著使用者需要處理資料函式庫、伺服器組態等問題。儘管如此,自託管版本提供了更多的功能和靈活性,包括外掛安裝和後端程式碼修改。
技術需求
本章節將使用以下軟體技術:
- minikube
- kubectl
- helm
我們假設這些元件已經在你的系統上安裝完成。如果需要更多關於這些工具的資訊,包括安裝和組態,請參考第二章《準備 Kubernetes 和 Helm 環境》。
在 Kubernetes 上佈署 WordPress
在 Kubernetes 上佈署 WordPress 需要一些基本的資源,包括資料函式庫、伺服器組態等。這些資源通常包括以下幾種 Kubernetes 資源:
- Secrets:用於資料函式庫和管理控制檯的驗證
- ConfigMap:用於外部化資料函式庫組態
- Services:用於網路組態
- PersistentVolumeClaim:用於資料函式庫儲存
- StatefulSet:用於以狀態方式佈署資料函式庫
- Deployment:用於佈署前端
這些資源的建立需要對 WordPress 和 Kubernetes 的深入瞭解。然而,這些步驟可以透過 Helm 來簡化。
利用 Helm Hub 做為 Helm Chart 的來源
Helm Charts 可以透過新增到倉函式庫來進行存取和分享。倉函式庫是儲存和分享封裝好的 Charts 的地方,可以是 GitHub Pages、Amazon S3 Bucket 或簡單的 Web 伺服器。
Helm Hub 是一個中央平台,專門用來聚合已知的公共 Charts Repository 和提供搜尋功能。它由 Monocular 專案驅動,旨在讓使用者更容易找到適合自己的 Charts。
命令列搜尋 WordPress Charts
Helm 提供兩個搜尋命令來幫助我們找到 Charts:
-
用來搜尋 Helm Hub 或 Monocular 應用程式中的 Charts:
helm search hub -
用來搜尋已新增 Repository 中的 Charts:
helm search repo
新增一個包含 WordPress Charts 的倉函式庫
我們可以透過以下步驟來新增一個包含 WordPress Chart 的倉函式庫:
-
首先,使用
helm search hub命令來搜尋 WordPress Chart:helm search hub wordpress -
在搜尋結果中找到適合的 Chart,然後使用
helm repo add命令來新增對應的倉函式庫:helm repo add <repository-name> <repository-url>
例如:
helm repo add bitnami https://charts.bitnami.com/bitnami
-
更新 Repository 資訊:
helm repo update -
安裝 WordPress Chart:
helm install my-wordpress bitnami/wordpress
這樣就完成了在 Kubernetes 上安裝 WordPress Chart 的基本流程。
存取 WordPress 應用程式
安裝完畢後,我們可以透過以下步驟來存取 WordPress 應用程式:
- 取得 Service 的外部 IP 地址:
kubectl get svc my-wordpress-wordpress --template "{{range .status.loadBalancer.ingress}}{{.}}{{end}}" - 在瀏覽器中輸入該 IP 地址即可存取 WordPress 網站。
升級 WordPress Release
如果需要升級 WordPress Release,可以使用以下命令:
helm upgrade my-wordpress bitnami/wordpress --set wordpressUsername=myuser,wordpressPassword=mypasswd,wordpressEmail=myemail@example.com,service.type=LoadBalancer,mariadb.password=mypassword,mariadb.rootPassword=mypassword
回復 WordPress Release
如果需要回復到之前的版本,可以使用以下命令:
helm rollback my-wordpress <revision-number>
解除安裝 WordPress Release
如果需要解除安裝已安裝的 WordPress Release,可以使用以下命令:
helm uninstall my-wordpress
檢視 Release 歷史記錄
要檢視某個 Release 的歷史記錄,可以使用以下命令:
helm history my-wordpress
這樣就完成了在 Kubernetes 上安裝、升級、回復以及解除安裝 WordPress Chart 的完整流程。希望這些步驟能幫助你更好地理解並掌握如何利用 Helm 在 Kubernetes 上進行應用程式佈署。