当前位置: 首页 > news >正文

k8s高可用集群,自动化更新证书脚本

#!/bin/bash

# 切换到证书目录
cd /etc/kubernetes/pki || exit

# 备份原有证书(重要!)
sudo cp -r apiserver.crt apiserver.key \
          apiserver-etcd-client.crt apiserver-etcd-client.key \
          apiserver-kubelet-client.crt apiserver-kubelet-client.key \
          front-proxy-client.crt front-proxy-client.key \
          bak

echo "开始生成新的10年有效期证书..."

# 定义 SAN 的 IPs 和 DNSs
cat > openssl.cnf <<EOF
[ req ]
default_bits = 2048
prompt = no
default_md = sha256
req_extensions = req_ext
distinguished_name = dn

[ dn ]
CN = kube-apiserver

[ req_ext ]
subjectAltName = @alt_names

[ alt_names ]
DNS.1 = kubernetes
DNS.2 = kubernetes.default
DNS.3 = kubernetes.default.svc
DNS.4 = kubernetes.default.svc.cluster.local
IP.1 = 10.9.50.88
IP.2 = 10.9.50.41
IP.3 = 10.9.50.42
IP.4 = 10.9.50.43
IP.5 = 127.0.0.1
IP.6 = 10.96.0.1     # 添加这一行以包含 10.96.0.1 IP 地址
EOF

# 1. 更新 apiserver.crt(带 SAN)
openssl req -new -key apiserver.key -out apiserver.csr -config openssl.cnf
openssl x509 -req -in apiserver.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out apiserver.crt -days 3650 -extensions req_ext -extfile openssl.cnf
rm -f apiserver.csr openssl.cnf

# 2. 更新 apiserver-etcd-client.crt
openssl req -new -key apiserver-etcd-client.key -out apiserver-etcd-client.csr -subj "/O=system:masters/CN=kube-apiserver-etcd-client"
openssl x509 -req -in apiserver-etcd-client.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out apiserver-etcd-client.crt -days 3650
rm -f apiserver-etcd-client.csr

# 3. 更新 apiserver-kubelet-client.crt
openssl req -new -key apiserver-kubelet-client.key -out apiserver-kubelet-client.csr -subj "/O=system:masters/CN=kube-apiserver-kubelet-client"
openssl x509 -req -in apiserver-kubelet-client.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out apiserver-kubelet-client.crt -days 3650
rm -f apiserver-kubelet-client.csr

# 4. 更新 front-proxy-client.crt
openssl req -new -key front-proxy-client.key -out front-proxy-client.csr -subj "/CN=front-proxy-client"
openssl x509 -req -in front-proxy-client.csr -CA front-proxy-ca.crt -CAkey front-proxy-ca.key -CAcreateserial -out front-proxy-client.crt -days 3650
rm -f front-proxy-client.csr

echo "✅ 所有证书已更新为10年有效期"

# 检查新证书有效期及 SAN 信息
for i in $(ls *.crt); do
    echo "====================== $i ========";
    openssl x509 -in $i -text -noout | grep -A 3 'Validity'
    openssl x509 -in $i -text -noout | grep 'Subject Alternative Name' -A 2
done
 

使用完成脚本后需要重启服务

service kubelet restart

kubectl delete pod kube-apiserver-master1 -n kube-system

kubectl delete pod kube-apiserver-master2 -n kube-system

kubectl delete pod kube-apiserver-master3 -n kube-system

kubectl delete pod etcd-master1 -n kube-system

kubectl delete pod etcd-master2 -n kube-system

kubectl delete pod etcd-master3 -n kube-system

http://www.dtcms.com/a/175667.html

相关文章:

  • 大模型范式转移:解码深度学习新纪元
  • $在R语言中的作用
  • linux_进程地址空间(虚拟地址空间)
  • Linux理解文件fd
  • LWIP的超时事件笔记
  • 处理PostgreSQL数据库事务死锁过程
  • 从机器人到调度平台:超低延迟RTMP|RTSP播放器系统级部署之道
  • Ubuntu20.04安装使用ROS-PlotJuggler
  • 注册 Broadcom 账号成功后,Broadcom 无法登录(最简单方案)
  • 16.Excel:数据收集
  • Linux 服务器静态 IP 配置初始化指南
  • C# NX二次开发:投影曲线和偏置曲线UFUN函数详解
  • leetcode hot100 技巧
  • ChatGPT-4o:临床医学科研与工作的创新引擎
  • maven基本介绍
  • influxdb实战
  • 三、Hadoop1.X及其组件的深度剖析
  • MATLAB的cvpartition函数用法
  • 基于Matlab实现耦合模理论仿真程序
  • 为了结合后端而学习前端的学习日志(1)——纯CSS静态卡片案例
  • STM32 CAN总线
  • 图片文件转base64存储在数据库
  • 【Python Number(数字)】
  • 性能优化-初识(C++)
  • 自定义Widget开发:手势交互处理
  • ES6入门---第三单元 模块五:Map和WeakMap
  • CentOS 安装 Zellij 终端复用器教程
  • WHAT - Rust 静态派发(Static Dispatch)和 动态派发(Dynamic Dispatch)
  • 【MongoDB篇】MongoDB的分片操作!
  • HTB - Eureka记录