跳至主要内容

在 Kubernetes 叢集上安裝/升級 Rancher

在本節中,您將學習如何使用 Helm CLI 在 Kubernetes 叢集上部署 Rancher。

前置條件​

Kubernetes 叢集​

設定 Rancher 伺服器的本地 Kubernetes 叢集。

Rancher 可以安裝在任何 Kubernetes 叢集上。此叢集可以使用上游 Kubernetes,也可以使用 Rancher 的 Kubernetes 發行版之一,或者可以是來自提供商(例如 Amazon EKS)的託管 Kubernetes 叢集。

為了幫助設定 Kubernetes 叢集,我們提供了這些教學:

  • K3s: 有關安裝 K3s Kubernetes 叢集的教學,請參閱此頁面。有關設定高可用性 K3s 叢集的基礎架構的幫助,請參閱此頁面。
  • RKE2: 有關安裝 RKE2 Kubernetes 叢集的教學,請參閱此頁面。有關設定高可用性 RKE2 叢集的基礎架構的幫助,請參閱此頁面。
  • Amazon EKS: 有關如何在 Amazon EKS 上安裝 Rancher 的詳細資訊,包括如何安裝 Ingress controller 以便可以存取 Rancher 伺服器,請參閱此頁面。
  • AKS: 有關如何使用 Azure Kubernetes Service 安裝 Rancher 的詳細資訊,包括如何安裝 Ingress controller 以便可以存取 Rancher 伺服器,請參閱此頁面。
  • GKE: 有關如何使用 Google Kubernetes Engine 安裝 Rancher 的詳細資訊,包括如何安裝 Ingress controller 以便可以存取 Rancher 伺服器,請參閱此頁面。 GKE 在建立 Kubernetes 叢集時有兩種操作模式:Autopilot 和 Standard 模式。Autopilot 模式的叢集設定對編輯 kube-system 命名空間有限制。然而,Rancher 在安裝過程中需要在 kube-system 命名空間中建立資源。因此,您將無法在以 Autopilot 模式建立的 GKE 叢集上安裝 Rancher。

Ingress Controller​

Rancher UI 和 API 是透過 Ingress 公開的。這意味著您安裝 Rancher 的 Kubernetes 叢集必須包含一個 Ingress controller。

對於 RKE2 和 K3s 安裝,您不必手動安裝 Ingress controller,因為預設會安裝一個。

對於預設不包含 Ingress Controller 的發行版,例如託管的 Kubernetes 叢集(如 EKS、GKE 或 AKS),您必須先部署一個 Ingress controller。請注意,Rancher Helm chart 預設不在 ingress 上設定 ingressClassName。因此,您必須將 Ingress controller 設定為也監視沒有 ingressClassName 的 ingress。

範例包含在上面的 Amazon EKS、AKS 和 GKE 教學中。

CLI 工具​

設定 Kubernetes 叢集需要以下 CLI 工具。請確保這些工具已安裝並在您的 $PATH 中可用。

安裝 Rancher Helm Chart​

Rancher 使用 Kubernetes 的 Helm 套件管理器進行安裝。Helm chart 為 Kubernetes YAML manifest 文件提供模板語法。使用 Helm,我們可以建立可設定的部署,而不僅僅是使用靜態檔案。

對於沒有直接網際網路存取的系統,請參閱 離線環境:Kubernetes 安裝。

要選擇要安裝的 Rancher 版本,請參閱選擇 Rancher 版本。

要選擇用於安裝 Rancher 的 Helm 版本,請參閱 Helm 版本要求

備註

安裝說明假設您使用的是 Helm 3。

要設定 Rancher,

  1. 新增 Helm chart repository
  2. 為 Rancher 建立一個命名空間
  3. 選擇您的 SSL 設定
  4. 安裝 cert-manager(除非您自帶憑證,或 TLS 將在負載平衡器上終止)
  5. 使用 Helm 和您選擇的憑證選項安裝 Rancher
  6. 驗證 Rancher 伺服器已成功部署
  7. 儲存您的選項

1. 新增 Helm Chart Repository​

使用 helm repo add 命令新增包含用於安裝 Rancher 的 chart 的 Helm chart repository。有關 repository 選擇以及哪個最適合您的使用案例的更多資訊,請參閱選擇 Rancher 版本。

  • Latest:建議用於試用最新功能
    helm repo add rancher-latest https://releases.rancher.com/server-charts/latest
  • Stable:建議用於生產環境
    helm repo add rancher-stable https://releases.rancher.com/server-charts/stable
  • Alpha:即將發布版本的實驗性預覽。
    helm repo add rancher-alpha https://releases.rancher.com/server-charts/alpha
    注意:不支援升級到 Alpha、從 Alpha 升級或在 Alpha 之間升級。

2. 為 Rancher 建立一個命名空間​

我們需要定義一個 Kubernetes 命名空間,Chart 建立的資源應該安裝在其中。這應該始終是 cattle-system:

kubectl create namespace cattle-system

3. 選擇您的 SSL 設定​

Rancher 管理伺服器設計為預設安全,並需要 SSL/TLS 設定。

備註

如果您想在外部終止 SSL/TLS,請參閱在外部負載平衡器上終止 TLS。如該頁面所述,此選項確實對 TLS 驗證有額外要求。

在 Rancher 伺服器上用於 TLS 終止的憑證來源有三個建議選項:

  • Rancher 產生的 TLS 憑證: 在這種情況下,您需要將 cert-manager 安裝到叢集中。Rancher 利用 cert-manager 來簽發和維護其憑證。Rancher 將產生自己的 CA 憑證,並使用該 CA 簽署憑證。cert-manager 然後負責管理該憑證。當 agent-tls-mode 設定為 strict 時,不需要額外的操作。有關此設定的更多資訊,請參閱 Agent TLS 強制執行。
  • Let's Encrypt: Let's Encrypt 選項也使用 cert-manager。但是,在這種情況下,cert-manager 與用於 Let's Encrypt 的特殊 Issuer 結合使用,該 Issuer 執行獲取 Let's Encrypt 簽發憑證所需的所有操作(包括請求和驗證)。此設定使用 HTTP 驗證(HTTP-01),因此負載平衡器必須具有公共 DNS 記錄並可從網際網路存取。當將 agent-tls-mode 設定為 strict 時,您還必須指定 --privateCA=true 並上傳 Let's Encrypt CA,如新增 TLS Secrets 中所述。有關此設定的更多資訊,請參閱 Agent TLS 強制執行。
  • 自帶憑證: 此選項允許您自帶公共或私有 CA 簽署的憑證。Rancher 將使用該憑證來保護 websocket 和 HTTPS 流量。在這種情況下,您必須將此憑證(及相關金鑰)作為 PEM 編碼檔案上傳,檔案名稱為 tls.crt 和 tls.key。如果您使用私有 CA,您還必須上傳該憑證。這是因為您的節點可能不信任此私有 CA。Rancher 將獲取該 CA 憑證,並從中產生校驗和,各種 Rancher 元件將使用該校驗和來驗證它們與 Rancher 的連線。如果 agent-tls-mode 設定為 strict,則必須上傳 CA,以便下游叢集可以成功連線。有關此設定的更多資訊,請參閱 Agent TLS 強制執行。
設定Helm Chart 選項需要 cert-manager
Rancher 產生的憑證(預設)ingress.tls.source=rancher是
Let's Encryptingress.tls.source=letsEncrypt是
來自檔案的憑證ingress.tls.source=secret否

4. 安裝 cert-manager​

如果您自帶憑證檔案(選項 ingress.tls.source=secret),或者您使用在外部負載平衡器上終止 TLS,則應跳過此步驟。

只有在使用 Rancher 產生的 CA 簽發的憑證(ingress.tls.source=rancher)或請求 Let's Encrypt 簽發的憑證(ingress.tls.source=letsEncrypt)時,才需要此步驟。

點擊展開
重要:

cert-manager 最近的變更需要升級。如果您正在升級 Rancher 並使用早於 v0.11.0 的 cert-manager 版本,請參閱我們的升級文件。

這些說明改編自官方 cert-manager 文件。

備註

要查看有關如何自訂 cert-manager 安裝的選項(包括叢集使用 PodSecurityPolicies 的情況),請參閱 cert-manager 文件。

# 如果您已手動安裝 CRD,而不是在 Helm 安裝命令中將 `installCRDs` 或 `crds.enabled` 設定為 `true`,則應在升級 Helm chart 之前升級 CRD 資源:
kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/<VERSION>/cert-manager.crds.yaml

# 新增 Jetstack Helm repository
helm repo add jetstack https://charts.jetstack.io

# 更新您的本地 Helm chart repository 快取
helm repo update

# 安裝 cert-manager Helm chart
helm install cert-manager jetstack/cert-manager \
--namespace cert-manager \
--create-namespace \
--set crds.enabled=true

安裝 cert-manager 後,您可以透過檢查 cert-manager 命名空間中正在執行的 pod 來驗證它是否正確部署:

kubectl get pods --namespace cert-manager

NAME READY STATUS RESTARTS AGE
cert-manager-5c6866597-zw7kh 1/1 Running 0 2m
cert-manager-cainjector-577f6d9fd7-tr77l 1/1 Running 0 2m
cert-manager-webhook-787858fcdb-nlzsq 1/1 Running 0 2m

5. 使用 Helm 和您選擇的憑證選項安裝 Rancher​

安裝 Rancher 的確切命令取決於憑證設定。

但是,無論憑證設定如何,cattle-system 命名空間中 Rancher 安裝的名稱應始終為 rancher。

測試和開發:

此安裝 Rancher 的最終命令需要一個將流量轉發到 Rancher 的網域名稱。如果您使用 Helm CLI 設定概念驗證,則可以在傳遞 hostname 選項時使用假網域名稱。假網域名稱的範例為 <IP_OF_LINUX_NODE>.sslip.io,這將在執行 Rancher 的 IP 上公開 Rancher。生產安裝將需要真實的網域名稱。

預設情況下,Rancher 產生 CA 並使用 cert-manager 來簽發用於存取 Rancher 伺服器介面的憑證。

因為 rancher 是 ingress.tls.source 的預設選項,所以在執行 helm install 命令時我們不指定 ingress.tls.source。

  • 將 hostname 設定為您指向負載平衡器的 DNS 名稱。
  • 將 bootstrapPassword 設定為 admin 使用者的唯一內容。
  • 要安裝特定的 Rancher 版本,請使用 --version 標誌,例如:--version 2.7.0
helm install rancher rancher-<CHART_REPO>/rancher \
--namespace cattle-system \
--set hostname=rancher.my.org \
--set bootstrapPassword=admin

如果您正在安裝 alpha 版本,Helm 需要在安裝命令中新增 --devel 選項:

helm install rancher rancher-alpha/rancher --devel

等待 Rancher 部署完成:

kubectl -n cattle-system rollout status deploy/rancher
Waiting for deployment "rancher" rollout to finish: 0 of 3 updated replicas are available...
deployment "rancher" successfully rolled out

Rancher chart 設定有許多選項可以自訂安裝以適合您的特定環境。以下是一些常見的進階場景。

有關選項的完整清單,請參閱 Chart 選項。

6. 驗證 Rancher 伺服器已成功部署​

新增 secret 後,檢查 Rancher 是否成功部署:

kubectl -n cattle-system rollout status deploy/rancher
Waiting for deployment "rancher" rollout to finish: 0 of 3 updated replicas are available...
deployment "rancher" successfully rolled out

如果您看到以下錯誤:error: deployment "rancher" exceeded its progress deadline,您可以透過執行以下命令檢查部署的狀態:

kubectl -n cattle-system get deploy rancher
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
rancher 3 3 3 3 3m

它應該顯示 DESIRED 和 AVAILABLE 的計數相同。

7. 儲存您的選項​

確保儲存您使用的 --set 選項。當您使用 Helm 將 Rancher 升級到新版本時,您將需要使用相同的選項。

完成​

就是這樣。您應該有一個正常運作的 Rancher 伺服器。

在網頁瀏覽器中,前往將流量轉發到負載平衡器的 DNS 名稱。然後您應該會看到色彩繽紛的登入頁面。

無法運作?請查看疑難排解頁面