先決條件
Kubernetes 集群
設置 Rancher Server 的本地 Kubernetes 集群。Rancher 可以安裝在任何 Kubernetes 集群上。這個集群可以使用上游 Kubernetes,也可以使用 Rancher 的 Kubernetes 發行版之一,也可以是來自 Amazon EKS 等提供商的托管 Kubernetes 集群。
CLI 工具
設置 Kubernetes 集群需要以下 CLI 工具。請確保這些工具已安裝並在你的 $PATH。
- kubectl - Kubernetes 命令行工具。
- helm - Kubernetes 的軟件包管理工具。請參閱 Helm 版本要求( https://docs.rancher.cn/docs/rancher2.5/installation/resources/helm-version/_index )以選擇要安裝 Rancher 的 Helm 版本。
提示:國內用戶,可以導航到 http://mirror.cnrancher.com 下載所需資源。
Ingress Controller
適用於托管在雲廠商上的集群。RKE集群默認安裝 Nginx Ingress Controller。
Helm Chart 安裝 Rancher
1. 添加 Helm Chart 倉庫
helm repo add rancher-stable https://releases.rancher.com/server-charts/stable
提示:國內用戶,可以使用放在國內的 Rancher Chart 加速安裝:
helm repo add rancher-stable http://rancher-mirror.oss-cn-beijing.aliyuncs.com/server-charts/stable
2. 為 Rancher 創建 Namespace
kubectl create namespace cattle-system
3. 選擇你的 SSL 選項
Rancher Server 默認需要 SSL/TLS 配置來保證訪問的安全性。
你可以從以下三種證書來源中選擇一種,證書將用來在 Rancher Server 中終止 TLS:
- Rancher 生成的 TLS 證書: 在這種情況下,你需要在集群中安裝 cert-manager。 Rancher 利用 cert-manager 簽發並維護證書。Rancher 將生成自己的 CA 證書,並使用該 CA 簽署證書。然后 cert-manager 負責管理該證書。
- Let's Encrypt: Let's Encrypt 選項也需要使用 cert-manager。但是,在這種情況下,cert-manager 與 Let's Encrypt 的特殊頒發者相結合,該頒發者執行獲取 Let's Encrypt 頒發的證書所需的所有操作(包括請求和驗證)。此配置使用 HTTP 驗證(HTTP-01),因此負載均衡器必須具有可以從公網訪問的公共 DNS 記錄。
- 使用你已有的證書: 此選項使你可以使用自己的權威 CA 頒發的證書或自簽名 CA 證書。 Rancher 將使用該證書來保護 WebSocket 和 HTTPS 流量。在這種情況下,你必須上傳名稱分別為tls.crt和tls.key的 PEM 格式的證書以及相關的密鑰。如果使用私有 CA,則還必須上傳該 CA 證書。這是由於你的節點可能不信任此私有 CA。 Rancher 將獲取該 CA 證書,並從中生成一個校驗和,各種 Rancher 組件將使用該校驗和來驗證其與 Rancher 的連接。

重要:Rancher 中國技術支持團隊建議你使用“你已有的證書” ingress.tls.source=secret 這種方式,從而減少對 cert-manager 的運維成本。
4. 安裝 cert-manager
提示: 如果你使用自己的證書文件 ingress.tls.source=secret或者使用外部 TLS 負載均衡器可以跳過此步驟。
# 如果你手動安裝了CRD,而不是在Helm安裝命令中添加了`--set installCRDs=true`選項,你應該在升級Helm chart之前升級CRD資源。
kubectl apply -f https://github.com/jetstack/cert-manager/releases/download/v1.5.1/cert-manager.crds.yaml
# 添加 Jetstack Helm 倉庫
helm repo add jetstack https://charts.jetstack.io
# 更新本地 Helm chart 倉庫緩存
helm repo update
# 安裝 cert-manager Helm chart
helm install cert-manager jetstack/cert-manager \
--namespace cert-manager \
--create-namespace \
--version v1.5.1
安裝完 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. 根據你選擇的 SSL 選項,通過 Helm 安裝 Rancher
Rancher 生成的證書
默認為 Rancher 生成自簽名 CA,用於 cert-manager 頒發訪問 Rancher Server 接口的證書。
因為 rancher 是 ingress.tls.source 的默認選項,所以在運行 helm install 命令時我們沒有指定 ingress.tls.source。
- 將 hostname 設置為解析到你的負載均衡器的 DNS 記錄。Rancher HA 安裝成功后,你需要通過這個域名來訪問 Rancher Server。
- 將 replicas 設置為 Rancher 部署所使用的副本數量。默認為 3;如果集群中的節點少於 3 個,你應該相應地減少副本數量。
- 要安裝一個特定的 Rancher 版本,使用 --version 標志,例如:--version 2.3.6。
helm install rancher rancher-stable/rancher \
--namespace cattle-system \
--set hostname=kmp.my.org \
--set replicas=3
等待 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 有許多自定義選項來自定義你的安裝環境。以下是一些常見的高級方案:
- HTTP 代理
Rancher 需要 Internet 訪問才能使用某些功能 (helm charts)。使用 proxy 設置你的代理服務器。
在 noProxy 列表中添加例外的 IP。確保添加了 Pod 集群 IP 范圍(默認:10.42.0.0/16),Service 集群 IP 范圍(默認:10.43.0.0/16),內部集群域(默認:.svc, .cluster.local)和任何 worker 集群 controlplane 節點。Rancher 在這個列表中支持 CIDR 符號范圍。
--set proxy="http://<username>:<password>@<proxy_url>:<proxy_port>/"
--set noProxy="127.0.0.0/8\,10.0.0.0/8\,172.16.0.0/12\,192.168.0.0/16\,.svc\,.cluster.local"
- 私有鏡像倉庫
有關使用私有 registry 安裝 Rancher 的詳細信息,請參閱離線環境安裝指南( https://docs.rancher.cn/docs/rancher2.5/installation/other-installation-methods/air-gap/_index )。
- 外部負載均衡器上的 TLS 終止
我們建議將負載均衡器配置為 4 層均衡器,將普通 80/tcp 和 443/tcp 轉發到 Rancher 管理集群節點。集群上的 Ingress Controller 會將端口 80 上的 http 通信重定向到端口 443 上的 https。
您可以在 Rancher 集群(ingress)外部的 L7 負載均衡器上終止 SSL/TLS。使用 --set tls=external 選項,將負載均衡器指向所有 Rancher 集群節點上的端口 http 80。這將在 http 端口 80 上公開 Rancher 接口。請注意,允許直接連接到 Rancher 集群的客戶端將不會被加密。如果您選擇這樣做,我們建議您將網絡級別上的直接訪問限制為僅用於您的負載均衡器。
注意事項: 如果您使用的是專用 CA 簽名的證書,請添加 --set privateCA=true 並參閱添加 TLS 密文 - 使用私有的 CA 簽名證書來完成給 Rancher 添加 CA 證書。
您的負載均衡器必須支持長期存在的 Websocket 連接,並且需要插入代理標頭,以便 Rancher 可以正確路由鏈接。
有關選項的完整列表,請參見Chart 選項( https://docs.rancher.cn/docs/rancher2.5/installation/install-rancher-on-k8s/chart-options/_index )。
6. 驗證 Rancher Server 是否已成功部署
添加 secret 后,檢查 Rancher Server 是否運行成功:
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, 你可以通過運行以下命令來檢查 deployment 的狀態:
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 到新版本時,你將需要使用相同的選項。
8. 安裝完成
現在你應該具有一個功能正常的 Rancher Server 了。
打開瀏覽器,通過 Helm 指定的 hostname 設置的域名來訪問你的 Rancher Server。如果你的環境沒有設置公共 DNS 解析,你可以在 hosts 文件中手動映射域名和 IP 的解析記錄。接下來,你應該會看到一個色彩豐富的登錄頁面。
如果你的環境中有負載均衡器將流量轉發到 Rancher Server,則可以將域名解析為負載均衡器的 IP 地址。如果你的環境中沒有負載均衡器,這可以將域名解析為某個 Rancher Server Pod 宿主機的 IP 地址。
如果在安裝過程中碰到了問題,請查看故障排查( https://docs.rancher.cn/docs/rancher2.5/installation/resources/troubleshooting/_index )頁面。
