在今天的文章中,我們將探討如何使用 Helm 來管理 Kubernetes 應用程式的佈署與管理。Helm 是 Kubernetes 中最受歡迎的套件管理工具之一,它能讓我們輕鬆地打包、分享及佈署應用程式,並提供強大的版本控制和佈署管理功能。
Helm 是 Kubernetes 的套件管理工具,類似於 Linux 系統中的 apt 或 yum。透過 Helm,我們可以將應用程式定義為一個 Helm Chart,並使用它來佈署、更新和管理應用程式。Helm 簡化了 Kubernetes 應用的佈署過程,尤其是當應用程式包含多個 Kubernetes 資源時 (如 Deployment、Service、ConfigMap 等)。
Helm 的主要功能包括:
Helm 提供了以下幾個主要優點:
# 安裝 Helm (macOS 使用 Homebrew)
brew install helm
# 安裝 Helm (Linux)
curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash
安裝 Chocolatey
可以通過以下 PowerShell 命令來安裝 Chocolatey(參考官方文件):
Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))
使用 Chocolatey 安裝 Helm
安裝完 Chocolatey 之後,可以使用以下命令來安裝 Helm:
choco install kubernetes-helm
安裝完成後,可以通過以下命令確認 Helm 是否安裝成功:
helm version
helm create myapp
這將會生成一個名為 myapp
的新 Helm Chart,內含應用所需的模板與配置檔案。
myapp/
├── charts/ # 子 Chart 目錄
├── templates/ # Kubernetes 資源的模板文件 (如 Deployment、Service 等)
│ └── _helpers.tpl # 輔助模板
├── values.yaml # Chart 參數配置文件
├── Chart.yaml # Chart 的基本資訊 (如名稱、版本等)
└── README.md # Chart 的說明文件
我們可以修改 values.yaml
來定義應用程式的默認配置。
replicaCount: 2
image:
repository: myregistry.azurecr.io/myapp
tag: "v1"
pullPolicy: IfNotPresent
service:
type: ClusterIP
port: 80
resources:
limits:
cpu: 500m
memory: 512Mi
replicaCount
:定義應用的副本數。image
:定義應用的容器映像及其標籤版本。service
:定義應用的服務類型與連接埠。resources
:設定容器的資源限制。編寫好 Chart 後,我們可以使用 Helm 將應用佈署到 Kubernetes 叢集:
helm install myapp ./myapp
myapp
:Release 的名稱。./myapp
:我們剛剛創建的 Helm Chart 路徑。佈署完成後,我們可以使用 helm list
查看已佈署的 Helm Release:
helm list
當我們需要更新應用時,只需修改 values.yaml
並使用 upgrade
命令進行更新:
helm upgrade myapp ./myapp
若更新過程中出現問題,我們可以使用 rollback
命令回復到先前的版本:
# 1 是 Release 的版本號
helm rollback myapp 1
values.yaml
文件進行不同的配置管理,方便應用在不同環境中佈署。看到這邊,可能會產生 Helm
跟 kubectl
好像差不多的想法,但事實上它們在 Kubernetes 中扮演著不同的角色:
kubectl:
kubectl apply -f deployment.yaml
Helm:
helm install myapp stable/myapp
kubectl:
Helm:
helm rollback myapp 1
今天我們介紹了如何使用 Helm 來管理 Kubernetes 的應用程式佈署。Helm 不僅簡化了 Kubernetes 應用的佈署過程,還提供了靈活的版本控制、配置管理和應用回復功能。透過 Helm,我們能夠更輕鬆地管理應用的生命週期,無論是在開發環境還是正式環境中,都能提高應用的穩定性與可維護性。
明天,我們將開始進行 Kubernetes 應用的基礎監控,學習如何使用 Prometheus 來收集、監控應用程式的性能數據,幫助我們及時發現問題並提升應用的穩定性!敬請期吧~