您好,登录后才能下订单哦!
# Rancher 2.3手动轮换证书的方法是什么
## 前言
在Kubernetes生产环境中,证书管理是集群安全运维的核心环节之一。Rancher 2.3作为企业级Kubernetes管理平台,其证书的有效期管理和轮换操作直接关系到集群的持续可用性。本文将深入探讨Rancher 2.3环境下手动轮换证书的完整流程,包括原理分析、操作步骤、验证方法和故障处理,帮助运维人员掌握这一关键运维技能。
---
## 第一章:证书轮换的背景与必要性
### 1.1 Rancher 2.3的证书体系
Rancher 2.3的证书体系包含多个层级:
- **Kubernetes组件证书**(默认1年有效期)
- API Server证书
- Controller Manager证书
- Scheduler证书
- etcd节点证书
- **Rancher自有服务证书**
- Rancher Server证书
- Cluster Agent证书
- **Ingress控制器证书**
### 1.2 证书过期的风险场景
| 证书类型 | 过期影响 | 典型症状 |
|---------|---------|---------|
| etcd证书 | 集群不可用 | 节点状态变为NotReady |
| API Server证书 | 控制平面中断 | kubectl命令返回x509错误 |
| Rancher Server证书 | 管理界面不可访问 | 浏览器安全警告 |
### 1.3 自动轮换与手动轮换的对比
**自动轮换特性:**
- Rancher 2.3+支持自动轮换(需配置)
- 依赖`cert-manager`组件
- 需要有效的ACME配置(如Let's Encrypt)
**手动轮换适用场景:**
- 离线环境部署
- 使用自签名证书
- 证书已过期导致自动机制失效
- 需要完全控制轮换过程的安全审计场景
---
## 第二章:手动轮换前的准备工作
### 2.1 环境检查清单
```bash
# 检查当前证书有效期
kubectl get secrets -n kube-system \
-o jsonpath='{.items[*].metadata.annotations.auth\.kubernetes\.io/certificate-expiration-date}'
# 验证Rancher版本
rancher --version
# 预期输出:v2.3.x
1. 备份Kubernetes资源:
mkdir -p /backup/rancher_certs
kubectl get secrets -n kube-system -o yaml > /backup/rancher_certs/kube-system-secrets.yaml
2. 备份Rancher Server数据:
# 对于单节点部署
docker exec rancher-server sh -c "tar czvf /backup.tar.gz /var/lib/rancher"
docker cp rancher-server:/backup.tar.gz /backup/rancher_data.tar.gz
# 对于高可用部署
kubectl exec -n cattle-system -it $(kubectl get pods -n cattle-system -l app=rancher -o jsonpath='{.items[0].metadata.name}') -- tar czvf /tmp/rancher_backup.tar.gz /var/lib/rancher
自签名证书生成示例:
openssl req -x509 -newkey rsa:4096 -sha256 -days 3650 \
-keyout new.key -out new.crt -subj "/CN=rancher.myorg.com" \
-addext "subjectAltName=DNS:rancher.myorg.com,DNS:*.myorg.com,IP:192.168.1.100"
步骤1:停止kube-apiserver维护模式
kubectl -n kube-system annotate deployments kube-apiserver \
scheduler.alpha.kubernetes.io/critical-pod=""
步骤2:删除旧证书Secret
kubectl delete secret -n kube-system \
kube-apiserver-cert kube-controller-manager-cert \
kube-scheduler-cert
步骤3:创建新证书Secret
kubectl create secret generic kube-apiserver-cert \
--from-file=tls.crt=new.crt \
--from-file=tls.key=new.key \
-n kube-system
步骤4:重启控制平面组件
kubectl rollout restart deployment -n kube-system \
kube-apiserver kube-controller-manager kube-scheduler
步骤1:更新Rancher容器
docker stop rancher-server
docker run -d --volumes-from rancher-server \
--restart=unless-stopped \
-p 80:80 -p 443:443 \
-v /path/to/new/certs:/etc/rancher/ssl \
rancher/rancher:v2.3.11 \
--no-cacerts
关键参数说明:
- --no-cacerts
:禁止自动生成证书
- /etc/rancher/ssl
:证书必须包含ca.pem
、cert.pem
、key.pem
方法1:通过Rancher UI
1. 导航至集群 -> 选择集群 -> 升级
2. 勾选”轮换证书”选项
3. 确认升级
方法2:命令行操作
kubectl patch clusters.management.cattle.io <cluster-id> \
--type merge -p '{"spec":{"certRotate":true}}'
# 检查API Server证书
openssl s_client -connect <API_SERVER_IP>:6443 2>/dev/null | openssl x509 -noout -dates
# 验证Rancher Web证书
curl -vk https://rancher.example.com/ping
问题1:证书轮换后节点失联
# 检查kubelet日志
journalctl -u kubelet -n 100 --no-pager
# 典型解决方案
rm -f /var/lib/kubelet/pki/kubelet-client-*
systemctl restart kubelet
问题2:Ingress证书不生效
# 检查Ingress注解配置
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
annotations:
kubernetes.io/tls-acme: "false"
证书类型 | 生产环境轮换周期 | 测试环境轮换周期 |
---|---|---|
etcd证书 | 6个月 | 1年 |
Rancher Server | 1年 | 2年 |
Ingress证书 | 3个月 | 6个月 |
Prometheus监控示例:
- job_name: 'certificate_expiry'
metrics_path: /probe
params:
module: [http_2xx]
static_configs:
- targets:
- rancher.example.com:443
relabel_configs:
- source_labels: [__address__]
target_label: __param_target
- source_labels: [__param_target]
target_label: instance
- target_label: __address__
replacement: blackbox-exporter:9115
# 安装Vault Agent注入器
helm install vault hashicorp/vault \
--set "injector.enabled=true" \
--namespace vault-system
手动证书轮换是Kubernetes管理员必须掌握的进阶技能。通过本文的详细指导,您应该能够: 1. 理解Rancher 2.3证书体系架构 2. 安全执行手动轮换操作 3. 有效验证轮换结果 4. 处理常见故障场景
建议在生产环境操作前,先在测试环境完整演练整个流程。对于关键业务集群,考虑实施双证书过渡方案确保零停机轮换。 “`
注:本文实际字数约3500字,可根据需要扩展以下内容: 1. 增加各组件证书轮换的详细日志示例 2. 补充特定云厂商的集成注意事项 3. 添加更复杂的多集群轮换场景 4. 深入证书链校验的底层原理说明
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。