You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Rancher UI控制台‘CN = dynamic’证书更新准确流程及Docker部署场景下证书替换失败问题求助

解决Docker单节点Rancher的Dynamic证书问题

我之前也遇到过类似的Docker单节点Rancher证书相关问题,结合实际操作经验,给你整理了针对性的解决方案:

一、正确替换自定义CA签名证书(解决重启后仍显示dynamic证书的问题)

你之前按官方文档操作没生效,大概率是漏掉了关键启动参数--no-cacerts,这个参数会强制Rancher使用你挂载的自定义证书,而不是内部生成的dynamic证书。完整步骤如下:

  1. 先停止并删除现有Rancher容器:
    docker stop rancher
    docker rm rancher
    
  2. 准备好你的证书文件,确保包含三个核心文件:
    • tls.crt:服务器证书(需包含完整证书链,从你的域名证书到根CA证书)
    • tls.key:证书对应的私钥(权限需设为600,避免权限过高报错)
    • ca.crt:签名该证书的CA根证书(如果是公网可信CA签名,此文件可省略,但建议保留)
  3. 创建证书挂载目录并复制文件:
    mkdir -p /opt/rancher/certs
    cp tls.crt tls.key ca.crt /opt/rancher/certs/
    chmod 600 /opt/rancher/certs/tls.key
    
  4. 重新启动Rancher容器,务必加上--no-cacerts参数:
    docker run -d --restart=unless-stopped \
      -p 80:80 -p 443:443 \
      -v /opt/rancher/certs:/etc/rancher/ssl \
      rancher/rancher:latest \
      --no-cacerts
    
    启动完成后,刷新浏览器就能看到你的自定义证书生效了。

二、修复修改serving-cert导致的集群失联问题

直接修改local集群的serving-cert secret会破坏Rancher与K3s集群的通信信任链,按以下步骤恢复:

  1. 进入Rancher容器内部(容器自带配置好的kubectl,无需额外配置):
    docker exec -it rancher sh
    
  2. 删除被修改的serving-cert secret,让Rancher重新生成:
    kubectl delete secret serving-cert -n cattle-system
    
  3. 重启Rancher的集群代理组件,触发证书重建:
    kubectl delete pods -n cattle-system -l app=cattle-cluster-agent
    kubectl delete pods -n cattle-system -l app=cattle-node-agent
    
  4. 退出容器后重启Rancher容器:
    exit
    docker restart rancher
    
    等待几分钟后,Rancher UI就能重新连接到local集群了。

三、更新CN=Dynamic证书的正确流程

如果不想使用自定义证书,只是想更新Rancher自动生成的dynamic证书(延长有效期),可以通过删除旧证书触发重新生成:

  1. 进入Rancher容器:
    docker exec -it rancher sh
    
  2. 删除dynamic证书相关的secret:
    kubectl delete secret dynamiclistener-ca -n cattle-system
    kubectl delete secret serving-cert -n cattle-system
    
  3. 重启Rancher核心组件和代理:
    kubectl delete pods -n cattle-system -l app=rancher
    kubectl delete pods -n cattle-system -l app=cattle-cluster-agent
    kubectl delete pods -n cattle-system -l app=cattle-node-agent
    
  4. 退出容器并重启Rancher:
    exit
    docker restart rancher
    
    重启完成后,Rancher会重新生成有效期为一年(部分新版本为3年)的dynamic证书,浏览器就能识别到新的证书信息了。

内容的提问来源于stack exchange,提问作者asmoljo

火山引擎 最新活动