共用方式為


使用 Helm 安裝現有的應用程式

適用於:Azure Local 22H2 上的 AKS、Windows Server 上的 AKS

本文說明如何在 Azure Arc 所啟用的 AKS 中,設定及使用 Helm 來安裝和管理 Kubernetes 叢集中的 Kubernetes 應用程式。

Helm 是開放原始碼的封裝工具,可協助您安裝和管理 Kubernetes 應用程式的生命週期。 類似於APTSumLinux套件管理員,Helm 會管理 Kubernetes 圖表,這些圖表是預先設定 Kubernetes 資源的套件。

開始之前

確認您已設定下列需求:

重要

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 文件。