Rancher Server 设置
- Rancher 版本:2.6.8
- 安装选项 (Docker install/Helm Chart): Helm Chart
- 如果是 Helm Chart 安装,需要提供 Local 集群的类型(RKE1, RKE2, k3s, EKS, 等)和版本:k3s-v1.24.4-k3s1
- 在线或离线部署:离线
下游集群信息
- Kubernetes 版本: 无
- Cluster Type (Local/Downstream): 无
- 如果 Downstream,是什么类型的集群?(自定义/导入或为托管 等): 无
用户信息
- 登录用户的角色是什么? (管理员/集群所有者/集群成员/项目所有者/项目成员/自定义):管理员
- 如果自定义,自定义权限集:无
主机操作系统:
- CentOS 7.9
问题描述:
在K3S中离线部署Rancher2.6.8时使用外部Nginx做TLS终止,按照文档要求,需要在渲染Rancher Helm Chart时添加参数–set tls=external。但实践后发现添加这个参数后,会向Rancher的ingress的annotations中添加nginx.ingress.kubernetes.io/ssl-redirect: "false"来组织ssl重定向。但由于K3S默认使用Traefik作为ingress controller,因此这个annotation并没有起到实际效果。我们将Rancher域名解析到我们的外部Nginx上后,访问Rancher会报"重定向次数过多"的错误。将Rancher域名解析到Rancher节点上,发现http访问Rancher仍然会被重定向到https。因此初步定位问题就在Traefik无法识别这个annotation。(其他nginx配置和证书配置都正确,在此不赘述了)
想请问一下,如果要在K3S(默认 Traefik)中部署外部TLS终止的Rancher,需要如何操作,谢谢。
安装步骤
helm template rancher ./rancher-2.6.8.tgz --output-dir . \
--no-hooks \
--namespace cattle-system \
--set hostname=rancher.test.demo.local \
--set rancherImage=registry.test.demo.local/rancher/rancher \
--set privateCA=true \
--set systemDefaultRegistry=registry.test.demo.local \
--set useBundledSystemChart=true \
--set tls=external
kubectl -n cattle-system create secret tls tls-rancher-ingress \
--cert=test.demo.local.crt \
--key=test.demo.local.key
kubectl -n cattle-system create secret generic tls-ca \
--from-file=cacerts.pem=./cacerts.pem
kubectl -n cattle-system apply -R -f ./rancher