写点什么

手动轮换 Rancher Kubernetes 集群的证书

  • 2020-05-16
  • 本文字数:2882 字

    阅读完需:约 9 分钟

手动轮换Rancher Kubernetes集群的证书

Kubernetes 集群通常使用 ssl 证书来加密通信,Rancher 会自动为集群生成证书。在 Rancher v2.0.14、v2.1.9 之前的版本,Rancher 配置集群的自动生成证书的有效期为 1 年,这意味着如果您在大约 1 年前使用这些版本创建了 Rancher 配置集群,那么您需要尽快开始轮换证书,否则证书过期后集群将进入错误状态。轮换证书是一次性操作,新生成的证书有效期为 10 年。


本文将为您详细介绍如何进行轮换证书的操作。即使您的证书现在已经过期,您也可以依照以下步骤进行证书的轮换。但请注意先不要升级 rancher server,根据本文最后一节【证书已过期导致无法连接 k8s】进行处理。


注意

在重新启动组件时,轮换 Kubernetes 证书可能会导致您的群集暂时不可用。此外,对于生产环境,建议在维护窗口期间执行此操作。

通过 UI 轮换证书(业务集群)

注:可用版本 Rancher v2.2.0 +


在 Rancher v2.2.0 以及更高版本,可通过 UI 的证书轮换功能对集群证书进行更新,此功能适用于【自定义安装的集群】。


证书轮换之后,Kubernetes 组件将自动重新启动,重启不影响应用 Pod,重启时间需要 3 到 5 分钟。


证书轮换可用于下列服务:


  • etcd

  • kubelet

  • kube-apiserver

  • kube-proxy

  • kube-scheduler

  • kube-controller-manager


通过 UI 轮换证书,目前支持:


  • 批量更新所有服务证书(CA 证书不变)

  • 更新某个指定服务(CA 证书不变)

(重要)集群更新

如果 Rancher 版本是从 v2.x.x 升级到 2.2.x,则需要先做一次 集群更新 操作。


1、进入【全局\集群视图】;


2、选择【目标集群】右侧的【省略号菜单】,选择升级;



3、点击右侧【显示高级选项】,检查【Etcd 快照轮换】功能是否开启,建议开启此功能;



4、在【授权集群访问地址】中,检查功能是否已开启,建议开始此功能,下边的域名可以不用填写;



5、最后点击【保存】,集群将自动进行更新


轮换证书

1、进入【全局\集群视图】;


2、选择对应集群右侧的【省略号菜单】,选择更新证书有效期;



3、选择更新所有服务证书,并点击保存



4、集群将自动更新证书



5、因为证书改变,相应的 token 也会变化,在集群证书更新完成后,需要对连接 API SERVER 的 Pod 进行重建,以获取新的 token。


  • cattle-system/cattle-cluster-agent

  • cattle-system/cattle-node-agent

  • cattle-system/kube-api-auth

  • ingress-nginx/nginx-ingress-controller

  • kube-system/canal

  • kube-system/kube-dns

  • kube-system/kube-dns-autoscaler

  • 其他应用 Pod

通过 UI API 轮换证书(业务集群)

注:可用版本 Rancher v2.0.14+ v2.1.9+


对于 Rancher v2.0.14、v2.1.9 以及更高版本,可通过 API 对集群证书进行更新。API 证书轮换将会同时对所有组件证书进行更新,不支持指定组件更新证书。


1、在【全局】视图中,定位到需要更新证书的集群,然后点击右侧省略号菜单,然后点击【API 查看】。



2、点击右上方的 RotateCertificates



3、点击 Show Request


4、点击 Send Request



5、因为证书改变,相应的 token 也会变化,在集群证书更新完成后,需要对连接 API SERVER 的 Pod 进行重建,以获取新的 token。


  • cattle-system/cattle-cluster-agent

  • cattle-system/cattle-node-agent

  • cattle-system/kube-api-auth

  • ingress-nginx/nginx-ingress-controller

  • kube-system/canal

  • kube-system/kube-dns

  • kube-system/kube-dns-autoscaler

  • 其他应用 Pod

RKE 证书轮换(local 集群和业务集群通用)

注:可用版本 rke v0.2.0+

如果以前是通过 rke v0.2.0 之前的版本创建的 Kubernetes 集群,在轮换证书前先执行 rke up 操作,请参考:

https://www.cnrancher.com/docs/rke/latest/cn/cert-mgmt/


通过 RKE 轮换证书,目前支持:


  • 批量更新所有服务证书(CA 证书不变)

  • 更新某个指定服务(CA 证书不变)

  • 轮换 CA 和所有服务证书


1、批量更新所有服务证书(CA 证书不变)



2、更新指定服务(CA 证书不变)



3、轮换 CA 和所有服务证书


rke cert rotate --rotate-ca
INFO[0000] Initiating Kubernetes clusterINFO[0000] Rotating Kubernetes cluster certificatesINFO[0000] [certificates] Generating CA kubernetes certificatesINFO[0000] [certificates] Generating Kubernetes API server aggregation layer requestheader client CA certificatesINFO[0000] [certificates] Generating Kubernetes API server certificatesINFO[0000] [certificates] Generating Kube Controller certificatesINFO[0000] [certificates] Generating Kube Scheduler certificatesINFO[0000] [certificates] Generating Kube Proxy certificatesINFO[0000] [certificates] Generating Node certificateINFO[0001] [certificates] Generating admin certificates and kubeconfigINFO[0001] [certificates] Generating Kubernetes API server proxy client certificatesINFO[0001] [certificates] Generating etcd-xxxxx certificate and keyINFO[0001] [certificates] Generating etcd-yyyyy certificate and keyINFO[0001] [certificates] Generating etcd-zzzzz certificate and keyINFO[0001] Successfully Deployed state file at [./cluster.rkestate]INFO[0001] Rebuilding Kubernetes cluster with rotated certificates
复制代码


4、因为证书改变,相应的 token 也会变化,在集群证书更新完成后,需要对连接 API SERVER 的 Pod 进行重建,以获取新的 token


  • cattle-system/cattle-cluster-agent

  • cattle-system/cattle-node-agent

  • cattle-system/kube-api-auth

  • ingress-nginx/nginx-ingress-controller

  • kube-system/canal

  • kube-system/kube-dns

  • kube-system/kube-dns-autoscaler

  • 其他应用 Pod

独立容器 Rancher server 证书更新

Rancher v2.0.14+ 、v2.1.9+、v2.2.0+会自动检查证书有效期,如果发现证书过期,将会自动生成新的证书。所以独立容器运行的 Rancher server 只需把 rancher 版本升级到支持的版本,无需做其他操作。

故障处理

提示 CA 证书为空

如果执行更新证书后出现如下错误提示,因为没有执行集群更新操作。



解决方法


1、选择对应问题集群,然后查看浏览器的集群 ID,如下图:



2、执行命令 kubectl edit clusters <clusters_ID>


  • 如果 Rancher 是 HA 安装,直接在 local 集群中,通过 rke 生成的 kube 配置文件执行以上命令;

  • 如果 Rancher 是单容器运行,通过 docker exec -ti <容器 ID> bash 进入容器中,然后执行 apt install vim -y 安装 vim 工具,然后再执行以上命令;


3、删除 spec.rancherKubernetesEngineConfig.rotateCertificates 层级下的配置参数:



修改为



输入:wq 保存 yaml 文件后集群将自动更新,更新完成后再进行证书更新。

证书已过期导致无法连接 K8S

如果集群证书已经过期,那么即使升级到 Rancher v2.0.14、v2.1.9 以及更高版本也无法轮换证书。rancher 是通过 Agent 去更新证书,如果证书过期将无法与 Agent 连接。


解决方法


可以手动设置节点的时间,把时间往后调整一些。因为 Agent 只与 K8S master 和 Rancher server 通信,如果 rancher server 证书未过期,那就只需调整 K8S master 节点时间。


调整命令:



然后再对 rancher server 进行升级,接着按照证书轮换步骤进行证书轮换,等到证书轮换完成后再把时间同步回来。



检查证书有效期



2020-05-16 17:151368

评论

发布
暂无评论
发现更多内容

低代码分析盘点:银行业低代码应用需要规避两大误区

易观分析

代码 银行

秒云云原生信创全兼容解决方案,推动信创产业加速落地

MIAOYUN

云原生 信创 信创云

ARM64 上的性能怪兽:API 网关 Apache APISIX 在 AWS Graviton3 上的安装和性能测试

API7.ai 技术团队

AWS 网关 arm APISIX

后端适用,Apifox接口文档设计和调试教程【工具篇】

Liam

Java 后端 Postman 后端开发 API文档

5年“研究”3年“实战” 之后的满分答卷

青藤云安全

网络安全 容器安全 安全服务 云原生安全

八连冠!浪潮云连续8年蝉联中国政务云市场第一位

云计算

大数据生态安全框架的实现原理与最佳实践(上篇)

明哥的IT随笔

大数据 hadoop hive 数据安全

工资管理系统该如何使用?

低代码小观

企业管理 工资 管理系统

基于模板配置的数据可视化平台

百度Geek说

跨平台多媒体渲染引擎OPR简介

阿里巴巴文娱技术

音视频 弹幕 渲染

数据产品学习-实时计算平台

第519区

实时计算 数据产品 数据开发 大数据平台

数据安全刻不容缓,国产智能化厂商首获SOC 2鉴证报告有何意义?

王吉伟频道

RPA 数据安全 机器人流程自动化 智能自动化 SOC 2

CREMB Pro 后台子管理员 403 问题分析

CRMEB

细说腾讯如何做到直播延时降低90%以上方案

C++后台开发

WebRTC CDN 音视频开发 视频直播 直播低延迟

InfoQ 极客传媒 15 周年庆征文|在Flutter中自定义应用程序内键盘

坚果

InfoQ极客传媒15周年庆

defi存币生息理财dapp系统开发逻辑

开发微hkkf5566

资深OpenStacker - 彭博、Vexxhost升级为OpenInfra基金会黄金成员

极客天地

小程序启动性能优化实践

百度Geek说

快来极狐GitLab SaaS 学习全球顶级的开源项目吧

极狐GitLab

开源

分布式数据对象:超级终端的"全局变量"

OpenHarmony开发者

OpenHarmony

企业数字化转型该如何做?三个融合、三个转换

小炮

SphereEx 正式开源面向 Database Mesh 的解决方案 Pisanix

SphereEx

开源 SphereEx 云上数据库 Database Mesh Pisanix

InfoQ 极客传媒 15 周年庆征文|手把手教你使用Python实现一键抠图,照片换背景|so easy!

迷彩

Python AI 前端 6月月更 InfoQ极客传媒15周年庆

大数据培训Flink高频面试题

@零度

flink 大数据开发

从 0 到 1,探究百亿流量验证下的 MVVM 框架设计

图灵教育

百度 MVVM 全栈设计

技术干货 | Linkis1.0.2安装及使用指南

康月牙

开源社区 微众银行 WeDataSphere Linkis 使用实践

直播预告 | 社交新纪元,共探元宇宙社交新体验

ZEGO即构

flutter系列之:Material主题的基础-MaterialApp

程序那些事

flutter 程序那些事 6月月更 widget

中原银行统一日志平台

中原银行

海量数据 中原银行 日志平台

技术干货 | Linkis实践:新引擎实现流程解析

康月牙

Apache 开源社区 WeDataSphere Linkis 使用实践

618 大促来袭,浅谈如何做好大促备战

阿里巴巴云原生

阿里云 微服务 高可用 云原生

手动轮换Rancher Kubernetes集群的证书_文化 & 方法_Rancher_InfoQ精选文章