Rancher 2.3手动轮换证书的方法是什么

发布时间:2021-12-24 10:08:03 作者:iii
来源:亿速云 阅读:313
# 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

2.2 关键备份操作

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

2.3 准备新的证书文件

自签名证书生成示例:

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"

第三章:核心轮换操作步骤

3.1 Kubernetes组件证书轮换

步骤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

3.2 Rancher Server证书轮换(Docker部署)

步骤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.pemcert.pemkey.pem

3.3 下游集群Agent证书更新

方法1:通过Rancher UI 1. 导航至集群 -> 选择集群 -> 升级 2. 勾选”轮换证书”选项 3. 确认升级

方法2:命令行操作

kubectl patch clusters.management.cattle.io <cluster-id> \
  --type merge -p '{"spec":{"certRotate":true}}'

第四章:验证与故障处理

4.1 验证证书状态

# 检查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

4.2 常见问题解决

问题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"

第五章:最佳实践与进阶建议

5.1 证书轮换时间表建议

证书类型 生产环境轮换周期 测试环境轮换周期
etcd证书 6个月 1年
Rancher Server 1年 2年
Ingress证书 3个月 6个月

5.2 证书监控方案

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

5.3 结合Vault的自动化方案

# 安装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. 深入证书链校验的底层原理说明

推荐阅读:
  1. rancher2.3安装k8s集群
  2. Rancher 2.3实现K8S一键式升级!再也不用同步升级Rancher啦!

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

rancher

上一篇:云级Key-value数据库的比较是怎样的

下一篇:linux中如何删除用户组

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》