Kubernetes 的普及帶動了容器化應用程式的蓬勃發展,而 Helm 作為 Kubernetes 的套件管理工具,更是簡化了應用程式佈署和管理的流程。本文旨在提供一個完整的 Helm 環境建置,從 kubectl 的安裝到 Helm 的組態,涵蓋了各種實務操作和注意事項。首先,我們會介紹如何在不同作業系統上安裝 kubectl,包含使用 Minikube、套件管理工具或直接下載二進位制檔案等方式。接著,我們將引導讀者安裝 Helm,同樣提供多種安裝途徑,例如套件管理工具或官方網站下載。安裝完成後,文章將探討 Helm 的組態細節,例如 Helm 的核心概念、目錄結構、環境變數設定、終端自動補全功能,以及如何有效管理 Helm 的圖表函式庫和外掛。此外,文章也會涵蓋 Kubernetes 認證組態,讓讀者瞭解如何設定 kubeconfig 檔案,以確保 Helm 能夠正確地與 Kubernetes 叢集互動。最後,文章將總結一些 Helm 的最佳實務,幫助讀者更好地運用 Helm 管理 Kubernetes 應用程式,提升開發效率。
Kubernetes 與 Helm 環境設定
Kubernetes 已成為現代雲端運算與容器管理的核心技術,而 Helm 則是其強大的套件管理工具。本文將詳細介紹如何設定 kubectl 與 Helm,讓你能夠順利進行 Kubernetes 的操作與套件管理。
kubectl 安裝與組態
kubectl 是 Kubernetes 的指令行工具,用於與 Kubernetes 叢集進行互動。以下將介紹如何在不同環境下安裝 kubectl。
使用 Minikube 安裝 kubectl
Minikube 提供了一個簡單的方式來安裝 kubectl。你可以使用 Minikube 的子命令來下載 kubectl 二進位制檔案:
minikube kubectl version
這個命令會下載並安裝 kubectl 二進位制檔案到 $HOME/.kube/cache/v1.16.2 目錄。你可以使用以下語法來呼叫 kubectl:
minikube kubectl -- <subcommand> <flags>
例如:
minikube kubectl -- version --client
為了更方便地使用 kubectl,你可以將其複製到系統路徑中:
sudo cp ~/.kube/cache/v1.16.2/kubectl /usr/local/bin/
這樣你就可以直接使用 kubectl 命令:
kubectl version --client
直接安裝 kubectl
除了使用 Minikube 安裝 kubectl 外,你也可以透過其他方式直接安裝 kubectl。以下是一些常見的安裝方法:
-
Windows:使用 Chocolatey 安裝
choco install kubernetes-cli -
macOS:使用 Homebrew 安裝
brew install kubernetes-cli -
Debian-based Linux:使用 apt 安裝
sudo apt-get update && sudo apt-get install -y apt-transport-https gnupg2 curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add - echo 'deb https://apt.kubernetes.io/ kubernetes-xenial main' | sudo tee -a /etc/apt/sources.list.d/kubernetes.list sudo apt-get update sudo apt-get install -y kubectl -
RPM-based Linux:使用 yum 安裝
cat <<EOF > /etc/yum.repos.d/kubernetes.repo [kubernetes] name=Kubernetes baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64 enabled=1 gpgcheck=1 repo_gpgcheck=1 gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg EOF yum install -y kubectl
你也可以從官方下載連結直接下載最新版本的 kubectl。以下是一些下載連結:
- Windows:Windows 下載連結
- macOS:macOS 下載連結
- Linux:Linux 下載連結
下載完成後,將其移動到系統路徑中並賦予執行許可權:
chmod u+x kubectl
sudo mv kubectl /usr/local/bin/
完成後,你可以透過以下命令驗證安裝:
kubectl version --client
Helm 安裝與組態
Helm 是 Kubernetes 的套件管理工具,類別似於 Linux 中的 apt 或 yum。以下將介紹如何在不同環境下安裝 Helm。
使用包管理器安裝 Helm
-
Windows:使用 Chocolatey 安裝
choco install kubernetes-helm -
macOS:使用 Homebrew 安裝
brew install helm
直接下載安裝 Helm
你也可以從 Helm 的 GitHub 釋出頁面直接下載並安裝 Helm。以下是步驟:
- 存取 Helm GitHub 釋出頁面。
- 根據你的作業系統選擇相應的壓縮檔案進行下載。
例如,在 Linux 上:
wget https://get.helm.sh/helm-v3.0.0-linux-amd64.tar.gz
tar -zxvf helm-v3.0.0-linux-amd64.tar.gz
sudo mv linux-amd64/helm /usr/local/bin/
這樣你就可以直接使用 helm 命令了。
組態 Helm
Helm 是一個功能強大的 Kubernetes 套件管理工具,提供許多可供使用者自訂的組態選項。以下是組態 Helm 的一些基本步驟,包括安裝、新增圖表函式庫、管理外掛以及設定環境變數。
安裝 Helm
首先,需要下載並解壓縮 Helm 的二進位制檔案。以下是 Windows 和 Linux/Mac 系統的安裝指引:
Windows/PowerShell
在 PowerShell 中,可以使用 Expand-Archive 命令來解壓縮下載的 Helm 檔案:
Expand-Archive -Path helm-v3.0.0-windows-amd64.zip -DestinationPath $DEST
Linux 和 Mac
在 Bash 中,可以使用 tar 命令來解壓縮下載的 Helm 檔案:
tar -zxvf helm-v3.0.0-linux-amd64.tgz
解壓縮後,將 Helm 二進位制檔案移動到系統 PATH 管理的目錄中。例如,在 Linux 系統中,可以將其移動到 /usr/local/bin 目錄:
mv ~/Downloads/linux-amd64/helm /usr/local/bin
安裝完成後,可以使用 helm version 命令來驗證安裝是否成功:
helm version
如果輸出類別似以下內容,則表示 Helm 已成功安裝:
version.BuildInfo{Version:'v3.0.0', GitCommit:'e29ce2a54e96cd02ccfce88bee4f58bb6e2a28b6', GitTreeState:'clean', GoVersion:'go1.13.4'}
新增圖表函式庫
Helm 提供 repo 副命令來管理圖表函式庫。以下是一些常用的 repo 副命令:
- add:新增圖表函式庫
- list:列出已新增的圖表函式庫
- remove:移除圖表函式庫
- update:更新本地圖表函式庫的資料
- index:生成索引檔案
要新增一個圖表函式庫,可以使用 repo add 副命令:
helm repo add $REPO_NAME $REPO_URL
例如,新增 Bitnami 的圖表函式庫:
helm repo add bitnami https://charts.bitnami.com/
更新圖表函式庫
由於圖表函式庫中的圖表會定期更新,因此需要定期執行 repo update 命令來更新本地圖表函式庫的資料:
helm repo update
這樣可以確保你能夠安裝最新版本的圖表。
移除圖表函式庫
如果需要移除已新增的圖表函式庫,可以使用 repo remove 副命令:
helm repo remove bitnami
管理外掛
Helm 支援外掛來擴充套件其功能。以下是一些常用的外掛:
- helm diff:比較已佈署的釋出與提議的 Helm 升級之間的差異。
- helm secrets:幫助隱藏 Helm 圖表中的機密資訊。
- helm monitor:監控釋出並在特定事件發生時進行回復。
- helm unittest:對 Helm 圖表進行單元測試。
設定環境變數
Helm 使用環境變數來組態低層次選項。以下是一些主要的環境變數:
- XDG_CACHE_HOME:設定儲存快取檔案的替代位置。
- XDG_CONFIG_HOME:設定儲存 Helm 組態的替代位置。
- XDG_DATA_HOME:設定儲存 Helm 資料的替代位置。
- HELM_DRIVER:設定後端儲存驅動程式。
- HELM_NO_PLUGINS:停用外掛。
透過設定這些環境變數,可以靈活地調整 Helm 的行為。例如,要設定儲存快取檔案的替代位置,可以設定 XDG_CACHE_HOME 環境變數:
export XDG_CACHE_HOME=/path/to/custom/cache
以上是組態 Helm 的基本步驟。透過這些組態選項,玄貓可以更靈活地使用 Helm 來管理 Kubernetes 應用程式。
Helm 組態與 Kubernetes 環境準備
在探討 Helm 的組態之前,我們需要了解 Helm 的一些核心概念及其與 Kubernetes 的互動方式。Helm 是一個 Kubernetes 的套件管理器,幫助我們更方便地佈署和管理應用程式。以下是一些關鍵的組態與設定。
預設目錄結構
Helm 遵循 The XDG Base Directory Specification,這是一個標準化的檔案位置定義方式。根據這個標準,Helm 在每個作業系統上會自動建立三個預設目錄:
- 快取目錄:用於存放從上游倉函式庫下載的圖表。已安裝的圖表會被快取到本地機器上,以便下次參照時能更快速地安裝。使用
helm repo update命令可以更新快取。 - 組態目錄:用於存放倉函式庫資訊,這些資訊是透過
helm repo add命令新增的。當安裝未被快取的圖表時,Helm 會使用這個目錄來查詢圖表倉函式庫的 URL。 - 資料目錄:用於存放外掛。透過
helm plugin install命令安裝的外掛資料會存放在這個位置。
環境變陣列態
除了預設目錄結構外,Helm 還有一些環境變數可以進行組態:
- HELM_DRIVER:用於決定釋放狀態在 Kubernetes 中的儲存方式。預設值為
secret,這是推薦值。secret會對狀態進行 Base64 編碼並儲存在 Kubernetes Secret 中。其他選項包括configmap(將狀態儲存在純文字的 Kubernetes ConfigMap 中)和memory(將狀態儲存在本地程式的記憶體中)。後者僅適用於測試目的,不適合生產環境。 - HELM_NO_PLUGINS:用於停用外掛。預設值為
0(保持外掛啟用)。若要停用外掛,則將此變數設定為1。 - KUBECONFIG:設定用於與 Kubernetes 叢集進行身份驗證的檔案。預設值為
~/.kube/config。
終端自動補全
Bash 和 Z shell 使用者可以啟用終端自動補全功能,以簡化 Helm 的使用。自動補全功能允許 Helm 命令在按下 Tab 鍵時自動補全,從而加快任務執行速度並減少輸入錯誤。
啟用自動補全的方法如下:
$ source <(helm completion $SHELL)
其中 $SHELL 變數必須是 bash 或 zsh。請注意,自動補全僅適用於執行上述命令的終端視窗。
認證組態
Helm 需要與 Kubernetes 叢集進行身份驗證以佈署和管理應用程式。這通常透過一個 kubeconfig 檔案來實作,該檔案指定了不同的 Kubernetes 叢集及其身份驗證方法。
如果使用 Minikube,則不需要手動組態身份驗證,因為 Minikube 每次建立新叢集時都會自動組態 kubeconfig 檔案。
對於不使用 Minikube 的使用者,可能需要建立或取得一個 kubeconfig 檔案,具體取決於使用的 Kubernetes 分佈版本。
以下是建立 kubeconfig 檔案的一些 kubectl 命令:
- set-cluster:定義叢集條目。
kubectl config set-cluster <cluster-name> --server=<server-url> --certificate-authority=<ca-file> - set-credentials:定義使用者名稱及其身份驗證方法。
kubectl config set-credentials <user-name> --client-certificate=<cert-file> --client-key=<key-file> - set-context:將憑據與叢集關聯。
kubectl config set-context <context-name> --cluster=<cluster-name> --user=<user-name>
可以使用 kubectl config view 命令來檢視 kubeconfig 檔案的內容:
$ kubectl config view
apiVersion: v1
clusters:
- cluster:
certificate-authority: /home/helm-user/.minikube/ca.crt
server: https://192.168.99.102:8443
name: minikube
contexts:
- context:
cluster: minikube
user: minikube
name: minikube
current-context: minikube
kind: Config