跳至主要内容

Rancher Helm Chart 選項

本頁面是 Rancher Helm chart 的配置參考。

有關選擇 Helm chart 版本的協助,請參閱此頁面。

有關啟用實驗性功能的資訊,請參閱此頁面。

常見選項​

選項預設值說明
bootstrapPassword" "string - 為第一個管理員使用者設定啟動密碼。登入後,管理員應該重設密碼。如果未設定此值,則使用隨機生成的啟動密碼。
hostname" "string - 你的 Rancher Server 的完整網域名稱
ingress.tls.source"rancher"string - ingress 憑證的來源 - "rancher, letsEncrypt, secret"
letsEncrypt.email" "string - 你的電子郵件地址
letsEncrypt.environment"production"string - 有效選項:"staging, production"
privateCAfalsebool - 如果你的憑證由私有 CA 簽署,則設為 true

進階選項​

選項預設值說明
additionalTrustedCAsfalsebool - 參見額外的受信任 CA
addLocal"true"string - 讓 Rancher 偵測並匯入 "local"(上游)Rancher 伺服器叢集。注意:此選項在 v2.5.0 中已不再可用。請考慮使用 restrictedAdmin 選項來防止使用者修改本機叢集。
agentTLSMode""string - 可為 system-store 或 strict。參見 Agent TLS 強制
antiAffinity"preferred"string - Rancher Pod 的 AntiAffinity 規則 - "preferred, required"
auditLog.destination"sidecar"string - 串流至 sidecar 容器主控台或 hostPath volume - "sidecar, hostPath"
auditLog.hostPath"/var/log/rancher/audit"string - 主機上的日誌檔案目的地(僅在 auditLog.destination 設為 hostPath 時適用)
auditLog.enabledfalsebool - 啟用 / 停用稽核日誌記錄。
auditLog.level0int - 設定 API 稽核日誌級別 [0-3]。
auditLog.maxAge1int - 保留舊稽核日誌檔案的最大天數(僅在 auditLog.destination 設為 hostPath 時適用)
auditLog.maxBackup1int - 保留的最大稽核日誌檔案數量(僅在 auditLog.destination 設為 hostPath 時適用)
auditLog.maxSize100int - 稽核日誌檔案輪替前的最大大小(MB)(僅在 auditLog.destination 設為 hostPath 時適用)
auditLog.image.repository"registry.suse.com/bci/bci-micro"string - 用於收集稽核日誌的映像檔位置。
auditLog.image.tag"15.4.14.3"string - 用於收集稽核日誌的映像檔標籤。
auditLog.image.pullPolicy"IfNotPresent"string - 覆蓋 auditLog 映像檔的 imagePullPolicy - "Always"、"Never"、"IfNotPresent"。
busyboxImage""string - 用於收集稽核日誌的 busybox 映像檔位置。注意:此選項已棄用,請使用 auditLog.image.repository 來控制稽核 sidecar 映像檔。
certmanager.version""string - 設定 cert-manager 相容性
debugfalsebool - 在 rancher server 上設定除錯旗標
extraEnv[]list - 為 Rancher 設定額外的環境變數
imagePullSecrets[]list - 包含私有映像庫憑證的 Secret 資源名稱清單
ingress.configurationSnippet""string - 額外的 Nginx 配置。可用於代理配置。
ingress.extraAnnotationsmap - 用於自訂 ingress 的額外註解
ingress.enabledtrue當設為 false 時,Helm 將不會安裝 Rancher ingress。將選項設為 false 以部署你自己的 ingress。
letsEncrypt.ingress.class""string - cert-manager acmesolver ingress 的可選 ingress 類別,用於回應 Let's Encrypt ACME 挑戰。選項:traefik、nginx。
noProxy"127.0.0.0/8,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16,.svc,.cluster.local,cattle-system.svc"string - 不使用代理的主機名稱或 IP 位址的逗號分隔清單
proxy""string - Rancher 的 HTTP[S] 代理伺服器
rancherImage"rancher/rancher"string - rancher 映像檔來源
rancherImagePullPolicy"IfNotPresent"string - 覆蓋 rancher server 映像檔的 imagePullPolicy - "Always"、"Never"、"IfNotPresent"
rancherImageTag與 chart 版本相同string - rancher/rancher 映像檔標籤
replicas3int - Rancher server 副本數量。設為 -1 將根據叢集中可用節點數量動態選擇 1、2 或 3。
resourcesmap - rancher Pod 的資源請求和限制
systemDefaultRegistry""string - 用於所有系統容器映像檔的私有映像庫,例如 http://registry.example.com/
tls"ingress"string - 詳情請參見外部 TLS 終止 - "ingress, external"
useBundledSystemChartfalsebool - 選擇使用與 Rancher server 封裝的 system-charts。此選項用於離線安裝。

當使用 Rancher v2.12.0 及更高版本時,Rancher 將使用稽核日誌控制器來監視 AuditPolicy CR,以配置額外的修訂,更多資訊請參見 API 稽核日誌。

啟動密碼​

你可以在 Rancher 安裝期間設定特定的啟動密碼。如果你沒有設定特定的啟動密碼,Rancher 會為第一個管理員帳戶隨機生成密碼。

當你第一次登入時,使用你設定的啟動密碼登入。如果你沒有設定啟動密碼,Rancher UI 會顯示可用於擷取啟動密碼的命令。執行這些命令並登入帳戶。第一次登入後,系統會要求你重設管理員密碼。

API 稽核日誌​

啟用 API 稽核日誌。

你可以像收集任何容器日誌一樣收集此日誌。在 Rancher 伺服器叢集上為 System 專案啟用日誌記錄。

--set auditLog.enabled=true --set auditLog.level=1

預設情況下,啟用稽核日誌記錄將在 Rancher Pod 中建立一個 sidecar 容器。此容器(rancher-audit-log)將日誌串流至 stdout。你可以像收集任何容器日誌一樣收集此日誌。當使用 sidecar 作為稽核日誌目的地時,hostPath、maxAge、maxBackups 和 maxSize 選項不適用。建議使用你的作業系統或 Docker 守護程式的日誌輪替功能來控制磁碟空間使用。為 Rancher 伺服器叢集或 System 專案啟用日誌記錄。

將 auditLog.destination 設為 hostPath 以將日誌轉發到與主機系統共享的 volume,而不是串流到 sidecar 容器。將目的地設為 hostPath 時,你可能需要調整其他 auditLog 參數以進行日誌輪替。

設定額外的環境變數​

你可以使用 extraEnv 為 Rancher server 設定額外的環境變數。此清單以其 YAML 格式傳遞給 Rancher 部署。它嵌入在 Rancher 容器的 env 下。請參閱 Kubernetes 文件以設定容器環境變數,extraEnv 可以使用為容器定義環境變數中參考的任何鍵。

考慮一個使用 name 和 value 鍵的範例:

--set 'extraEnv[0].name=CATTLE_TLS_MIN_VERSION'
--set 'extraEnv[0].value=1.0'

如果將敏感資料作為環境變數的值傳遞(例如代理驗證憑證),強烈建議使用 secret 參考。這將防止敏感資料在 Helm 或 Rancher 部署中暴露。

考慮一個使用 name、valueFrom.secretKeyRef.name 和 valueFrom.secretKeyRef.key 鍵的範例。請參見 HTTP 代理中的範例。

TLS 設定​

當你在 Kubernetes 叢集內部安裝 Rancher 時,TLS 在叢集的 ingress 控制器處卸載。可能的 TLS 設定取決於所使用的 ingress 控制器。

更多資訊和選項請參見 TLS 設定。

匯入 local 叢集​

預設情況下,Rancher server 將偵測並匯入其執行所在的 local 叢集。有權存取 local 叢集的使用者本質上對 Rancher server 管理的所有叢集具有「root」存取權限。

警告

如果關閉 addLocal,大多數 Rancher v2.5 功能將無法運作,包括 EKS 佈建器。

如果這在你的環境中是個問題,你可以在初始安裝時將此選項設為 "false"。

此選項僅在初始 Rancher 安裝時有效。更多資訊請參見 Issue 16522。

--set addLocal="false"

自訂你的 Ingress​

要自訂或在 Rancher server 中使用不同的 ingress,你可以設定自己的 Ingress 註解。

設定自訂憑證簽發者的範例:

--set ingress.extraAnnotations.'cert-manager\.io/cluster-issuer'=issuer-name

使用 ingress.configurationSnippet 設定靜態代理標頭的範例。此值像模板一樣解析,因此可以使用變數。

--set ingress.configurationSnippet='more_set_input_headers X-Forwarded-Host {{ .Values.hostname }};'

HTTP 代理​

Rancher 需要網際網路存取才能使用某些功能(Helm charts)。使用 proxy 來設定你的代理伺服器,或使用 extraEnv 來設定 HTTPS_PROXY 環境變數以指向你的代理伺服器。

將你的 IP 例外新增到 noProxy chart 值中,作為逗號分隔的清單。確保你新增以下值:

  • Pod 叢集 IP 範圍(預設:10.42.0.0/16)。
  • Service 叢集 IP 範圍(預設:10.43.0.0/16)。
  • 內部叢集網域(預設:.svc,.cluster.local)。
  • 任何 worker 叢集 controlplane 節點。 Rancher 在此清單中支援 CIDR 記號法範圍。

當不包含敏感資料時,可以使用 proxy 或 extraEnv chart 選項。當使用 extraEnv 時,noProxy Helm 選項會被忽略。因此,還必須使用 extraEnv 設定 NO_PROXY 環境變數。

以下是使用 proxy chart 選項設定代理的範例:

--set proxy="http://<proxy_url:proxy_port>/"

使用 extraEnv chart 選項設定代理的範例:

--set extraEnv[1].name=HTTPS_PROXY
--set extraEnv[1].value="http://<proxy_url>:<proxy_port>/"
--set extraEnv[2].name=NO_PROXY
--set extraEnv[2].value="127.0.0.0/8\,10.0.0.0/8\,172.16.0.0/12\,192.168.0.0/16\,.svc\,.cluster.local"

當包含敏感資料(例如代理驗證憑證)時,請使用帶有 valueFrom.secretRef 的 extraEnv 選項,以防止敏感資料在 Helm 或 Rancher 部署中暴露。

以下是使用 extraEnv 配置代理的範例。此範例 secret 將在 secret 的 "https-proxy-url" 鍵中包含值 "http://<username>:<password>@<proxy_url>:<proxy_port>/":

--set extraEnv[1].name=HTTPS_PROXY
--set extraEnv[1].valueFrom.secretKeyRef.name=secret-name
--set extraEnv[1].valueFrom.secretKeyRef.key=https-proxy-url
--set extraEnv[2].name=NO_PROXY
--set extraEnv[2].value="127.0.0.0/8\,10.0.0.0/8\,172.16.0.0/12\,192.168.0.0/16\,.svc\,.cluster.local"

要了解更多關於如何配置環境變數的資訊,請參閱為容器定義環境變數。

額外的受信任 CA​

如果你有私有映像庫、目錄或攔截憑證的代理,你可能需要將更多受信任的 CA 新增到 Rancher。

--set additionalTrustedCAs=true

一旦建立 Rancher 部署,將你的 CA 憑證以 pem 格式複製到名為 ca-additional.pem 的檔案中,並使用 kubectl 在 cattle-system 命名空間中建立 tls-ca-additional secret。

kubectl -n cattle-system create secret generic tls-ca-additional --from-file=ca-additional.pem=./ca-additional.pem

私有映像庫和離線安裝​

有關使用私有映像庫安裝 Rancher 的詳細資訊,請參見離線安裝文件。

外部 TLS 終止​

我們建議將你的負載平衡器配置為 Layer 4 平衡器,將純 80/tcp 和 443/tcp 轉發到 Rancher 管理叢集節點。叢集上的 Ingress Controller 將把 port 80 上的 http 流量重新導向到 port 443 上的 https。

你可以在 Rancher 叢集(ingress)外部的 L7 負載平衡器上終止 SSL/TLS。使用 --set tls=external 選項,並將你的負載平衡器指向所有 Rancher 叢集節點的 http port 80。這將在 http port 80 上公開 Rancher 介面。請注意,允許直接連線到 Rancher 叢集的用戶端將不會被加密。如果你選擇這樣做,我們建議你在網路層級僅將直接存取限制為你的負載平衡器。

備註

如果你使用私有 CA 簽署的憑證(或者如果 agent-tls-mode 設為 strict),請新增 --set privateCA=true,並參見新增 TLS Secrets - 使用私有 CA 簽署的憑證為 Rancher 新增 CA 憑證。

你的負載平衡器必須支援長期存在的 websocket 連線,並且需要插入代理標頭,以便 Rancher 可以正確路由連結。

使用 NGINX v0.22 時為外部 TLS 配置 Ingress​

在 NGINX v0.22 中,NGINX 的行為關於轉發標頭和外部 TLS 終止已變更。因此,在你使用 NGINX v0.22 的外部 TLS 終止配置的情況下,你必須為 ingress 啟用 use-forwarded-headers 選項:

對於 RKE2 安裝,你可以在 /var/lib/rancher/rke2/server/manifests/rke2-ingress-nginx-config.yaml 建立一個自訂的 rke2-ingress-nginx-config.yaml 檔案,其中包含啟用外部 TLS 終止使用轉發標頭所需的設定。如果沒有套用此必需設定,外部 LB 將持續回應從 ingress 控制器收到的重新導向循環。(這可以在安裝 rancher 之前或之後建立,rke2 server agent 將注意到此新增並自動套用它。)

---
apiVersion: helm.cattle.io/v1
kind: HelmChartConfig
metadata:
name: rke2-ingress-nginx
namespace: kube-system
spec:
valuesContent: |-
controller:
config:
use-forwarded-headers: "true"

必需的標頭​

  • Host
  • X-Forwarded-Proto
  • X-Forwarded-Port
  • X-Forwarded-For

建議的逾時​

  • Read Timeout:1800 seconds
  • Write Timeout:1800 seconds
  • Connect Timeout:30 seconds

健康檢查​

Rancher 將在 /healthz 端點回應 200 以進行健康檢查。

NGINX 配置範例​

此 NGINX 配置已在 NGINX 1.14 上測試。

警告

此 NGINX 配置僅為範例,可能不適合你的環境。完整文件請參見 NGINX Load Balancing - HTTP Load Balancing。

  • 將 IP_NODE1、IP_NODE2 和 IP_NODE3 替換為叢集中節點的 IP 位址。
  • 將兩處出現的 FQDN 替換為 Rancher 的 DNS 名稱。
  • 將 /certs/fullchain.pem 和 /certs/privkey.pem 替換為伺服器憑證和伺服器憑證金鑰的位置。
worker_processes 4;
worker_rlimit_nofile 40000;

events {
worker_connections 8192;
}

http {
upstream rancher {
server IP_NODE_1:80;
server IP_NODE_2:80;
server IP_NODE_3:80;
}

map $http_upgrade $connection_upgrade {
default Upgrade;
'' close;
}

server {
listen 443 ssl http2;
server_name FQDN;
ssl_certificate /certs/fullchain.pem;
ssl_certificate_key /certs/privkey.pem;

location / {
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Port $server_port;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://rancher;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
# 這允許執行 shell 視窗保持開啟長達 15 分鐘。如果沒有此參數,預設值為 1 分鐘,並會自動關閉。
proxy_read_timeout 900s;
proxy_buffering off;
}
}

server {
listen 80;
server_name FQDN;
return 301 https://$server_name$request_uri;
}
}