K8s证书可用年限修改

news/2024/11/21 1:36:55/

目录

1、绪论:

1.1 查看 K8S 集群所有证书存放位置

1.2 查看 ca 证书信息,默认可用年限为10年

2、修改证书可用年限

2.1 go 环境部署

2.2 下载源码

2.3 修改 Kubeadm 源码包更新证书策略

2.4 更新 kubeadm

2.5 更新各节点证书至 Master 节点

2.6 HA集群其余 mater 节点证书更新


1、绪论:

使用 kubeadm 部署的 K8S 集群中,apiserver 证书的默认可用年限只有一年。
如果直接用在生产环境,当证书过期后会造成 K8S 集群瘫痪,从而影响现网业务。

1.1 查看 K8S 集群所有证书存放位置


ls /etc/kubernetes/pki/
apiserver.crt              apiserver.key                 ca.crt  front-proxy-ca.crt      front-proxy-client.key
apiserver-etcd-client.crt  apiserver-kubelet-client.crt  ca.key  front-proxy-ca.key      sa.key
apiserver-etcd-client.key  apiserver-kubelet-client.key  etcd    front-proxy-client.crt  sa.pub

//查看 apiserver 证书信息,默认可用年限只有一年
cd /etc/kubernetes/pki/
openssl x509 -in apiserver.crt -text -noout
Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number: 1295513766016577226 (0x11fa96e8010beeca)
    Signature Algorithm: sha256WithRSAEncryption
        Issuer: CN=kubernetes
        Validity
            Not Before: May 27 00:57:34 2021 GMT
            Not After : May 27 00:57:34 2022 GMT

1.2 查看 ca 证书信息,默认可用年限为10年


openssl x509 -in ca.crt -text -noout
Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number: 0 (0x0)
    Signature Algorithm: sha256WithRSAEncryption
        Issuer: CN=kubernetes
        Validity
            Not Before: May 27 00:57:34 2021 GMT
            Not After : May 25 00:57:34 2031 GMT


2、修改证书可用年限


2.1 go 环境部署


登陆 https://studygolang.com/dl ,下载 Linux 版本的 Go 安装包,如:go1.16.5.linux-amd64.tar.gz

//上传 go1.12.9.linux-amd64.tar.gz 到 master 节点的 /opt 目录中
tar zxvf go1.12.9.linux-amd64.tar.gz -C /usr/local/

//设置 go 软件程序的环境变量
echo 'export PATH=/usr/local/go/bin:$PATH' >> /etc/profile
source /etc/profile

//查看 go 的版本
go version
go version go1.12.9 linux/amd64

2.2 下载源码


mkdir /data
cd /data

//克隆代码
#在 master 节点上生成密钥对认证文件
ssh-keygen -t rsa

#复制公钥文件内容到github中,用于ssh克隆 https://github.com/settings/keys
cat /root/.ssh/id_rsa.pub

#在 master 节点上克隆
git clone git@github.com:kubernetes/kubernetes.git


//查看当前版本
kubeadm version
kubeadm version: &version.Info{Major:"1", Minor:"15", GitVersion:"v1.15.1", GitCommit:"4485c6f18cee9a5d3c3b4e523bd27972b1b53892", GitTreeState:"clean", BuildDate:"2019-07-18T09:15:32Z", GoVersion:"go1.12.5", Compiler:"gc", Platform:"linux/amd64"}

//切换分支
cd kubernetes/
git checkout -b remotes/origin/release-1.15.1 v1.15.1


2.3 修改 Kubeadm 源码包更新证书策略


vim cmd/kubeadm/app/util/pkiutil/pki_helpers.go
......
//NewSignedCert creates a signed certificate using the given CA certificate and key
func NewSignedCert(cfg *certutil.Config,key crypto.Signer,caCert *x509.certificate,caKey crypto.Signcate, error) {

    const duration10years = time.Hour * 24 * 365 * 10    #定义常量duration10years为10年时间    

    serial,err := cryptorand.Int(cryptorand.Reader,new(big.Int).SetInt64(math.MaxInt64))
    if err != nil {
        return nil, err
    }
    if len(cfg. CommonName) == 0 {
        return nil, errors.New("must specify a CommonName")
    }
    if len(cfg.Usages) == 0 {
        return nil, errors.New("must specify at least one ExtKeyUsage")
    }

    certTmpl := x509.Certificate{
        Subject: pkix.Name{
            CommonName:cfg. CommonName ,
            0rganization : cfg.0rganization ,
        },
        DNSNames:     cfg.AltNames.DNSNames,
        IPAddresses:  cfg.AltNames.IPs,
        SerialNumber: serial,
        NotBefore:    caCert.NotBefore,
        NotAfter:     time.Now().Add(duration10years).UTC(),    #修改证书可用年限
        KeyUsage:     x509.KeyUsageKeyEncipherment │ x509.KeyUsageDigitalSignature,
        ExtKeyUsage:  cfg.Usages,
    }
......

//编译 kubeadm
make WHAT=cmd/kubeadm GOFLAGS=-v

//获取新编译出的kubeadm文件
cp _output/bin/kubeadm /root/kubeadm-new


2.4 更新 kubeadm


//将原 kubeadm 进行备份
cp /usr/bin/kubeadm /usr/bin/kubeadm.old

//将 kubeadm 进行替换
cp /root/kubeadm-new /usr/bin/kubeadm

chmod +x /usr/bin/kubeadm


2.5 更新各节点证书至 Master 节点


//将原证书进行备份
cp -r /etc/kubernetes/pki /etc/kubernetes/pki.old

//生成新证书
kubeadm alpha certs renew all --config=/opt/kubeadm-config.yaml

//查看 apiserver 证书信息
cd /etc/kubernetes/pki
openssl x509 -in apiserver.crt -text -noout | grep Not


2.6 HA集群其余 mater 节点证书更新


//将新生成的证书复制到其他 mater 节点上进行更新
#!/bin/bash
masterNode="192.168.80.14 192.168.80.15"
for host in ${masterNode}
do
    scp /etc/kubernetes/pki/{ca.crt,ca.key,sa.key,sa.pub,front-proxy-ca.crt,front-proxy-ca.key}" root@$host:/etc/kubernetes/pki/
    scp /etc/kubernetes/pki/etcd/{ca.crt,ca.key} root@$host:/etc/kubernetes/pki/etcd/
    scp /etc/kubernetes/admin.conf root@$host:/etc/kubernetes/
done


http://www.ppmy.cn/news/1197978.html

相关文章

#django基本常识01#

#manage.py# 所有子命令的入口,比如: python3 manage.py runserver 启动服务 python3 manage.py startapp 创建应用 python3 manage.py migrate 数据库迁移 直接执行python3 manage.py 可显示所有子命令 #安装django环境# 1:虚拟环境安装 1.1: 安装vir…

ARFoundation系列讲解 - 92 涂鸦效果

--- 视频来源于网络,如有侵权必删 --- 案例中使用的软件版本 Unity2023.1.17.f1c1ARFoundtaion 5.1.0Apple ARKit XR Plugin 5.1.0 Google ARCore XR Plugin 5.1.0技术分析 我们可以实时检测用户手指触摸的屏幕位置,从触摸位置投射一条射线(Raycast),再射线命中的目标位置…

主动学习工具箱子集合【libraries/toolkits of active learning】

在论文中,“主动学习工具箱”的规范的叫法是Library of active learning 或 Active learning library。 为啥叫Library?我不懂,审稿人都这么叫。记住便是。 【未完待续】 一、 ALipy 安装命令:pip install alipy https://git…

2023年中国金融控股公司研究报告

第一章 行业概况 1.1 定义 金融控股公司这一术语最初源自美国,特别是在美国的《金融服务法案》关于银行控股公司组织结构的条文中,首次出现了“金融控股公司”(Financial Holding Company)这一法律术语,尽管法案中并…

华为政企智能边缘产品集

产品类型产品型号产品说明 maintainProductIVS1800-C08-16T(64路)智能边缘16T-8盘位-64路maintainProductIVS1800-C08-32T(64路)智能边缘32T-8盘位-64路maintainProductIVS1800-C08-4T(64路)智能边缘4T-8盘…

【漏洞复现】Apache_HTTP_2.4.49_路径穿越漏洞(CVE-2021-41773)

感谢互联网提供分享知识与智慧,在法治的社会里,请遵守有关法律法规 文章目录 1.1、漏洞描述1.2、漏洞等级1.3、影响版本1.4、漏洞复现1、基础环境2、漏洞验证方式一 curl方式二 bp抓包 说明内容漏洞编号CVE-2021-41773漏洞名称Apache HTTP 路径穿越漏洞漏…

学电脑编程零基础,计算机编程入门先学什么

学电脑编程零基础,计算机编程入门先学什么,建议先从容易学习的语言入手,比如中文编程。 给大家分享一款中文编程工具,零基础轻松学编程,不需英语基础,编程工具可下载。 这款工具不但可以连接部分硬件&…

生成式人工智能:网络攻击者手中的破坏性力量

2022 年底,公开可用的生成式人工智能工具的推出使我们进入了人类历史上最大的技术革命之一。 一些人声称它的影响与互联网、手机、智能手机和社交媒体的引入一样大,甚至更大。这些新的生成式人工智能技术的采用和发展速度是我们以前从未见过的。 虽然这…