使用 Helm 安裝現有的應用程式
適用於:Azure Local 22H2 上的 AKS、Windows Server 上的 AKS
本文說明如何在 Azure Arc 所啟用的 AKS 中,設定及使用 Helm 來安裝和管理 Kubernetes 叢集中的 Kubernetes 應用程式。
Helm 是開放原始碼的封裝工具,可協助您安裝和管理 Kubernetes 應用程式的生命週期。 類似於APT和 Sum 等Linux套件管理員,Helm 會管理 Kubernetes 圖表,這些圖表是預先設定 Kubernetes 資源的套件。
開始之前
確認您已設定下列需求:
- 具有至少一個 Linux背景工作節點且正在執行中的 Kubernetes 叢集 。
- 您已將本機
kubectl
環境設定為指向叢集。 您可以使用 Get-AksHciCredential PowerShell 命令,使用kubectl
存取叢集。 - Helm v3 命令行和必要條件已安裝。
- 如果您想要使用 PowerShell,您可以使用 Azure CLI 來執行命令。
重要
Helm 的目的是要在 Linux 節點上執行。 如果您的叢集有 Windows Server 節點,您必須確定 Helm Pod 已排定只在 Linux 節點上執行。 您也必須確定您安裝的任何 Helm 圖表都已排定在正確的節點上執行。 本文中的命令會使用 節點選取器 來確保Pod已排程到正確的節點,但並非所有 Helm 圖表都會公開節點選取器。 您也可以在叢集上使用其他選項,例如 污點。
確認您的 Helm 版本
helm version
使用 命令來確認您已安裝 Helm 3:
helm version
下列範例顯示已安裝 Helm 3.5.4 版:
version.BuildInfo{Version:"v3.5.4", GitCommit:"1b5edb69df3d3a08df77c9902dc17af864ff05d1", GitTreeState:"clean", GoVersion:"go1.15.11"}
使用 Helm v3 安裝應用程式
新增 Helm 存放庫
使用 helm 存放庫命令來新增 ingress-nginx 存放庫。
helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
尋找 Helm 圖表
Helm 圖表可用來將應用程式部署到 Kubernetes 叢集。 若要搜尋預先建立的 Helm 圖表,請使用 helm 搜尋 命令:
helm search repo ingress-nginx
下列扼要範例輸出顯示一些可供使用的 Helm 圖表:
NAME CHART VERSION APP VERSION DESCRIPTION
ingress-nginx/ingress-nginx 3.30.0 0.46.0 Ingress controller for Kubernetes using NGINX a...
若要更新圖表清單,請使用 helm 存放庫更新 命令。
helm repo update
下列範例顯示成功的存放庫更新:
Hang tight while we grab the latest from your chart repositories...
...Successfully got an update from the "ingress-nginx" chart repository
Update Complete. Happy Helming!
執行 Helm 圖表
若要使用 Helm 安裝圖表,請使用 helm install 命令,並指定要安裝的發行名稱和圖表名稱。 若要查看作用中的 Helm 圖表安裝,請使用 Helm 圖表安裝基本 nginx 部署。
下列命令提供兩次、一個用於 Azure CLI,另一個用於 PowerShell 控制台:
helm install my-nginx-ingress ingress-nginx/ingress-nginx \
--set controller.nodeSelector."beta\.kubernetes\.io/os"=linux \
--set defaultBackend.nodeSelector."beta\.kubernetes\.io/os"=linux
helm install my-nginx-ingress ingress-nginx/ingress-nginx `
--set controller.nodeSelector."beta\.kubernetes\.io/os"=linux `
--set defaultBackend.nodeSelector."beta\.kubernetes\.io/os"=linux
下列扼要範例輸出顯示 Helm 圖表所建立的 Kubernetes 資源部署狀態:
> --set controller.nodeSelector."beta\.kubernetes\.io/os"=linux \
> --set defaultBackend.nodeSelector."beta\.kubernetes\.io/os"=linux
NAME: my-nginx-ingress
LAST DEPLOYED: Fri May 14 17:43:27 2021
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
The nginx-ingress controller has been installed.
It may take a few minutes for the LoadBalancer IP to be available.
You can watch the status by running 'kubectl --namespace default get services -o wide -w my-nginx-ingress-ingress-nginx-controller'
...
kubectl get services
使用 命令來取得服務的 EXTERNAL-IP:
kubectl --namespace default get services -o wide -w my-nginx-ingress-ingress-nginx-controller
例如,下列命令會顯示 my-nginx-ingress-ingress-nginx-controller 服務的 EXTERNAL-IP:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR
my-nginx-ingress-ingress-nginx-controller LoadBalancer 10.98.53.215 <EXTERNAL-IP> 80:31553/TCP,443:30784/TCP 72s app.kubernetes.io/component=controller,app.kubernetes.io/instance=my-nginx-ingress,app.kubernetes.io/name=ingress-nginx
列出版本
若要查看叢集上安裝的版本清單,請使用 helm list
命令。
helm list
下列範例顯示 上一個步驟中部署的 my-nginx-ingress 版本:
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
my-nginx-ingress default 1 2021-05-14 17:43:27.1670709 +0000 UTC deployed nginx-ingress-3.30.0 0.46.0
清除資源
部署 Helm 圖表時會建立許多 Kubernetes 資源。 這些資源包含 Pod、部署和服務。 若要清除這些資源,請使用 helm uninstall 命令並指定您的發行名稱,如上一個 helm list
命令所示:
helm uninstall my-nginx-ingress
下列範例輸出顯示已卸載 release my-nginx-ingress :
release "my-nginx-ingress" uninstalled
下一步
如需使用 Helm 管理 Kubernetes 應用程式部署的詳細資訊,請參閱 Helm 文件。