一般选项

选项默认值描述
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“auto”string - 让 Rancher 检测,并导入”local” Rancher Server 所在的集群。导入 local 集群
antiAffinity“preferred”string - 针对 Rancher pods 的 AntiAffinity 规则 - “preferred, required”
replicas3int - Rancher Pods 的数量
auditLog.destination“sidecar”string - 使日志流导向到 sidecar 容器的 console 或者 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.maxBackups1int - 要保留的审计日志最大文件数 (仅当 auditLog.destination 设置为 hostPath时适用)
auditLog.maxSize100int - 轮换之前审计日志文件的最大大小(以兆字节为单位)(仅当 auditLog.destination 设置为 hostPath)
busyboxImage“busybox”string - 用于收集审计日志的 busybox 镜像的镜像位置 注:自 v2.2.0 起可用
debugfalsebool - 在 Rancher Server 设置调试标志
certmanager.version“”string - 设置 cert-manager 兼容性
extraEnv[]list - 为 Rancher 设置其他环境变量 注:自 v2.2.0 起可用
imagePullSecrets[]list - 包含私有 Registry 凭据的密钥资源名称列表
ingress.extraAnnotations{}map - 自定义 ingress 的其他 annotations
ingress.configurationSnippet“”string - 添加其他的 Nginx 配置。可以用于代理配置。注:自 v2.0.15, v2.1.10 和 v2.2.4 起可用
letsEncrypt.ingress.class“”string - optional ingress class for the cert-manager acmesolver ingress that responds to the Let’s Encrypt ACME challenges
proxy“”string - Rancher 的 HTTP[S] 代理服务
noProxy“127.0.0.0/8,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16”string - 不使用代理的逗号分隔的主机名或 IP 地址列表
resources{}map - rancher pod 资源请求和限制
rancherImage“rancher/rancher”string - rancher 镜像源
rancherImageTag跟 chart 版本一样string - rancher 镜像标签
rancherImagePullPolicy“IfNotPresent”string - 覆盖拉取 Rancher Server 镜像的规则,“Always”:每次都会拉取镜像;“Never”:每次都不会拉取镜像;”“IfNotPresent”:如果有更新的版本,则拉取镜像。
tls“ingress”string - 参考 外部 TLS 终止。- “ingress, external”
systemDefaultRegistry“”string - 用于所有系统 Docker 镜像的私有 Registry,例如: http://registry.example.com/ 自 v2.3.0 起可用
useBundledSystemChartfalsebool - 选择使用 Rancher Server 内嵌的 system-charts。这个选项用于离线安装。自 v2.3.0 起可用

审计日志 API

启用审计日志 API

您可以像收集任何容器日志一样收集审计日志,在 Rancher Server Cluster 中为System 项目启用Rancher 工具中的日志服务

  1. --set auditLog.level=1

默认情况下,启用审计日志会在 Rancher pod 中创建一个 sidecar 容器。这个容器(rancher-audit-log)会将日志流传输到stdout。将 sidecar 用作审计日志目标时,hostPathmaxAgemaxBackups,和 maxSize选项将会被忽略。建议使用您的操作系统或 Docker 守护程序的日志轮换功能来控制磁盘空间的使用。为 Rancher Server 集群或 System 项目启用Rancher 工具中的日志服务

auditLog.destination设置为hostPath,会将日志转发至与主机系统共享的卷中,而不是流至一个 sidecar 容器中。当将目标设置为hostPath时,您可能需要调整其他 auditLog 参数以进行日志轮换。

设置额外的环境变量

自 v2.2.0 起可用

您可以使用extraEnv为 Rancher Server 设置额外的环境变量。该列表使用与 Rancher 容器 YAML 定义中相同的namevalue键。请不要忘记了引号

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

TLS 设置

自 v2.2.0 起可用

要设置不同 TLS 配置,可以使用CATTLE_TLS_MIN_VERSIONCATTLE_TLS_CIPHERS环境变量。例如:要将 TLS 1.0 配置为可接受的最低 TLS 版本:

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

有关更多信息和选项,请参见TLS 设置

导入 local 集群

默认情况下,Rancher Server 会检测并导入正在运行的local集群。有权访问local集群权限的用户实际上将具有对 Rancher Server 管理的所有集群的root访问权限。 如果您的环境中存在此问题,则可以在初次安装时将此选项设置为false

注意:这个选项只在初始安装 Rancher 时有效。有关更多信息,请参见问题 16522

  1. --set addLocal="false"

自定义您的 Ingress

为 Rancher Server 自定义或使用其他的 Ingress,您可以设置自己的 Ingress annotations。

设置自定义证书颁发者的示例:

  1. --set ingress.extraAnnotations.'certmanager\.k8s\.io/cluster-issuer'=ca-key-pair

自 v2.0.15, v2.1.10 和 v2.2.4 起可用

使用ingress.configurationSnippet设置静态代理头的示例。该值也会像模板一样进行解析,因此可以使用变量。

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

HTTP 代理

Rancher 需要访问网络,才能使用某些功能(helm charts)。使用proxy设置您的代理服务器。

将不需要代理的 IP 地址添加到noProxy列表里。确保把服务集群的 IP 区间(默认:10.43.0.1/16)和工作集群controlplane节点添加进去。Rancher 在此列表中支持 CIDR 表示法。

  1. --set proxy="http://<username>:<password>@<proxy_url>:<proxy_port>/"
  2. --set noProxy="127.0.0.0/8\,10.0.0.0/8\,172.16.0.0/12\,192.168.0.0/16"

其他受信任的 CA

如果您有私有 Registry,catalogs 或拦截证书的代理,则可能需要向 Rancher 添加其他受信任的 CA。

  1. --set additionalTrustedCAs=true

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

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

私有 Registry 和 离线安装

有关使用私有 Registry 安装 Rancher,参见:

在外部终止 TLS

我们建议将您的负载均衡器配置为第 4 层均衡器,将 80/tcp 和 443/tcp 的流量转发到 Rancher 管里面集群节点。集群上的 Ingress Controller 会将 80 端口的 http 请求重定向为 443 端口上的 https 请求。

您可以在 Rancher 集群外部的 L7 负载均衡器(Ingress)上终止 SSL/TLS 通信。使用--set tls=external选项,并将负载均衡器指向所有 Rancher 集群节点上的 http 协议 80 端口。这将会在 http 协议 80 端口上暴露 Rancher API。请注意,这种情况下,允许直接连接到 Rancher 集群的客户端与的 Rancher 的通信不会被加密。如果您选择这样做,我们建议将网络访问限制为只能访问您的负载均衡器。

注意:

如果您使用的是私有 CA 签名证书,请添加--set privateCA=true,然后参阅添加 TLS 密文 - 使用私有 CA 签发的证书来为 Rancher 添加 CA 证书。

您的负载均衡器必须支持 websocket 长连接,并切需要插入代理头信息以便 Rancher 可以正确路由链接。

使用 NGINX v0.25 时,为外部 TLS 访问配置 Ingress

在 NGINX v0.25 版本中,关于转发头和终止外部 TLS 访问的 NGINX 行为已经改变,因此,在 NGINX v0.25 版本要终止外部 TLS 访问,您必须编辑cluster.yml文件,为 Ingress 启用 use-forwarded-headers选项:

  1. ingress:
  2. provider: nginx
  3. options:
  4. use-forwarded-headers: "true"

必需的头

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

建议超时时间

  • 读取超时:1800 秒
  • 写入超时:1800 秒
  • 连接超时:30 秒

健康检查

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

NGINX 配置示例

这个 NGINX 配置已经在 NGINX 1.14 测试过。

注意: 这个 NGINX 配置仅仅是一个示例,可能不适合您的环境。有关完整的文档,请参阅NGINX 负载均衡 - HTTP 负载均衡

  • IP_NODE1IP_NODE2IP_NODE3 替换为您的集群节点的 IP 地址。
  • 将出现的两个FQDN替换为 Rancher 的 DNS 名称。
  • /certs/fullchain.pem/certs/privkey.pem分别替换为服务器证书和服务器证书密钥的位置。
  1. worker_processes 4;
  2. worker_rlimit_nofile 40000;
  3. events {
  4. worker_connections 8192;
  5. }
  6. http {
  7. upstream rancher {
  8. server IP_NODE_1:80;
  9. server IP_NODE_2:80;
  10. server IP_NODE_3:80;
  11. }
  12. map $http_upgrade $connection_upgrade {
  13. default Upgrade;
  14. '' close;
  15. }
  16. server {
  17. listen 443 ssl http2;
  18. server_name FQDN;
  19. ssl_certificate /certs/fullchain.pem;
  20. ssl_certificate_key /certs/privkey.pem;
  21. location / {
  22. proxy_set_header Host $host;
  23. proxy_set_header X-Forwarded-Proto $scheme;
  24. proxy_set_header X-Forwarded-Port $server_port;
  25. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  26. proxy_pass http://rancher;
  27. proxy_http_version 1.1;
  28. proxy_set_header Upgrade $http_upgrade;
  29. proxy_set_header Connection $connection_upgrade;
  30. # 这里将允许您在 Rancher UI 中打开命令行窗口时,窗口可以保留最多15分钟。没有这个参数时,默认值为1分钟,一分钟后在Rancher中的shell会自动关闭。
  31. proxy_read_timeout 900s;
  32. proxy_buffering off;
  33. }
  34. }
  35. server {
  36. listen 80;
  37. server_name FQDN;
  38. return 301 https://$server_name$request_uri;
  39. }
  40. }