跳到主要内容
版本:v2.9 (Preview)

Rancher Helm Chart 选项

本文提供了 Rancher Helm Chart 的配置参考。

如需选择 Helm Chart 版本,请参见本页。

了解开启实验性功能的详情,请参见本页。

常用选项​

选项默认值描述
bootstrapPassword" "string - 为第一个管理员用户设置引导密码。登录后,管理员需要重置密码。如不设置,会使用随机生成的引导密码。
hostname" "string - 你的 Rancher Server 的完全限定的域名(FQDN)
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 Server 集群。注意:此选项在 2.5.0 中已不可用。你可考虑使用 restrictedAdmin 选项,来避免用户修改本地集群。
antiAffinity"preferred"string - Rancher Pod 的反亲和性规则 - "preferred, required"
auditLog.destination"sidecar"string - 发送审计日志到 Sidecar 容器的控制台或 hostPath 卷 - "sidecar, hostPath"
auditLog.hostPath"/var/log/rancher/audit"string - 主机上的日志文件目标地址(仅当auditLog.destination 的值是 hostPath 时生效)
auditLog.level0int - 设置 API 审计日志等级。0 代表关闭。[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 compatibility
debugfalsebool - 在 Rancher Server 设置 debug 参数
extraEnv[]list - 为 Rancher 额外设置环境变量
imagePullSecrets[]list - 私有镜像仓库凭证的密文名称列表
ingress.configurationSnippet""string - 添加额外的 Nginx 配置。可用于代理配置。
ingress.extraAnnotations{}map - 用于自定义 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。
resources{}map - Rancher Pod 资源请求和限制
restrictedAdminfalsebool - 如果值为 true,初始的 Rancher 用户访问本地 Kubernetes 集群会受到限制,以避免权限升级。详情请参见 restricted-admin 角色。
systemDefaultRegistry""string - 用于所有系统容器镜像的私有仓库,例如 http://registry.example.com/
tls"ingress"string - 详情请参见外部 TLS 终止。- "ingress, external"
useBundledSystemChartfalsebool - 选择 Rancher Server 打包的 system-charts。此参数用于离线环境安装。
global.cattle.psp.enabledtruebool - 使用 Rancher v2.7.2-v2.7.4 时,选择 false 以禁用 Kubernetes v1.25 及更高版本的 PSP。使用 Rancher v2.7.5 及更高版本时,Rancher 会尝试检测集群是否运行不支持 PSP 的 Kubernetes 版本,如果确定集群不支持 PSP,则将默认 PSP 的使用设置为 false。你仍然可以通过显式提供此值的 true 或 false 来手动覆盖此值。在支持 PSP 的集群中(例如使用 Kubernetes v1.24 或更低版本的集群),Rancher 仍将默认使用 PSP。

引导密码​

Rancher 首次启动时,会为第一个管理员用户随机生成一个密码。当管理员首次登录 Rancher 时,用于获取引导密码(Bootstrap)的命令会在 UI 上显示。管理员需要运行命令并使用引导密码登录。然后 Rancher 会让管理员重置密码。

如果你想指定引导密码而不使用随机生成的密码,请参考以下命令设置密码。

--set bootstrapPassword="rancher"

无论你是使用提供的密码还是生成的密码,密码均存储在 Kubernetes 密文中。安装 Rancher 后,如何使用 kubectl 获取密码的说明将会在 UI 中显示:

kubectl get secret --namespace cattle-system bootstrap-secret -o go-template='{{ .data.bootstrapPassword|base64decode}}{{ "\n" }}'

API 审计日志​

启用 API 审计日志。

你可以像收集其他容器日志一样收集此日志。在 Rancher Server 集群上为 System 项目启用 Logging。

--set auditLog.level=1

默认情况下,启用审计日志会在 Rancher pod 中创建一个 Sidecar 容器。这个容器(rancher-audit-log)会把日志流传输到 stdout。你可以像收集其他容器日志一样收集此日志。如果你使用 Sidecar 作为审计日志的目标时, hostPath,maxAge,maxBackups 和 maxSize 选项不会生效。建议使用你的操作系统或 Docker Daemon 的日志轮换功能来控制磁盘空间的使用。请为 Rancher Server 集群或 System 项目启用 Logging。

将 auditLog.destination 的值设为 hostPath,可以将日志转发到与主机系统共享的卷,而不是传输到 Sidecar 容器。如果目标设置为 hostPath,你可能需要调整其他 auditLog 参数以进行日志轮换。

额外设置环境变量​

你可以使用 extraEnv 为 Rancher Server 额外设置环境变量。该列表以 YAML 格式传递给 Rancher 部署,它嵌入在 Rancher 容器的 env 下。你可以参考 Kubernetes 文档设置容器环境变量。extraEnv 可以使用 Define Environment Variables for a Container 中引用的任何键。

使用 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 Controller 上卸载。支持的 TLS 设置取决于使用的 Ingress Controller。

参见 TLS 设置了解更多信息和选项。

导入 local 集群​

默认情况下,Rancher Server 会检测并导入其所在的 local 集群。有权访问 local 集群的用户对 Rancher Server 管理的所有集群具有“root”访问权限。

警告

如果你关闭 addLocal,大多数 Rancher 2.5 功能都不能使用,包括 EKS Provisioner。

如果这在你的环境中是一个问题,你可以在初始安装时将此选项设置为“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 Chart)需要使用互联网才能使用。你可以使用 proxy 设置代理服务器,或使用 extraEnv 设置 HTTPS_PROXY 环境变量来指向代理服务器。

将要排除的 IP 使用逗号分隔列表添加到 noProxy Chart value 中。确保添加了以下值:

  • Pod 集群 IP 范围(默认值:10.42.0.0/16)。
  • Service Cluster IP 范围(默认值:10.43.0.0/16)。
  • 内部集群域(默认值:.svc,.cluster.local)。
  • 任何 Worker 集群 controlplane 节点。 Rancher 支持在此列表中使用 CIDR 表示法来表示范围。

不包括敏感数据时,可以使用 proxy 或 extraEnv Chart 选项。使用 extraEnv 时将忽略 noProxy Helm 选项。因此,NO_PROXY 环境变量也必须设置为 extraEnv。

以下是使用 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"

包含敏感数据(例如代理认证凭证)时,请使用 extraEnv 选项和 valueFrom.secretRef 来防止敏感数据在 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​

如果你有私有镜像仓库(registries)、应用商店(catalogs)或拦截证书的代理,则可能需要向 Rancher 添加额外的授信 CA。

--set additionalTrustedCAs=true

创建完 Rancher deployment 后,将 pem 格式的 CA 证书复制到一个名为 ca-additional.pem 的文件中,并使用 kubectl 在 cattle-system 命名空间中创建 tls-ca-additional 密文。

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

私有仓库和离线安装​

有关使用私有仓库安装 Rancher 的详情,请参见离线安装。

外部 TLS 终止​

我们建议将负载均衡器配置为 4 层均衡,将普通 80/tcp 和 443/tcp 转发到 Rancher Management 集群节点。集群上的 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 可以正确传送链接。

使用 NGINX v0.25 为外部 TLS 配置 Ingress​

在 NGINX 0.25 中,NGINX 关于转发头和外部 TLS 终止的行为已更改。因此,如果你同时使用 NGINX 0.25 和外部 TLS 终止配置,你必须编辑 cluster.yml 来为 Ingress 启用 use-forwarded-headers 选项。

ingress:
provider: nginx
options:
use-forwarded-headers: 'true'

必须的 Header​

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

建议的超时时间​

  • 读超时:1800 seconds
  • 写超时:1800 seconds
  • 连接超时:30 seconds

健康检查​

Rancher 将对 /healthz 端点的健康检查响应200。

示例 NGINX 配置​

此 NGINX 配置已在 NGINX 1.14 上进行了测试。

警告

此 NGINX 配置只是一个示例,可能不适合你的环境。如需查阅完整文档,请参见 NGINX 负载均衡 - HTTP 负载均衡。

  • 将 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;
}
}