1. 程式人生 > >kubeadm定製化開發,延長證書

kubeadm定製化開發,延長證書

kubernetes離線安裝包,僅需三步

修改kubeadm證書過期時間

本文通過修改kubeadm原始碼讓kubeadm預設的一年證書過期時間修改為99年

我已經編譯好了一個放在了github上,有需要的可以直接下

使用方法:

[root@dev-86-202 ~]# chmod +x kubeadm && cp kubeadm /usr/bin
[root@dev-86-202 ~]# rm /etc/kubernetes/pki/ -rf
[root@dev-86-202 ~]# kubeadm alpha phase certs all --config  kube/conf/kubeadm.yaml

<!--more-->

更新kubeconfig

[root@dev-86-202 ~]# rm -rf /etc/kubernetes/*conf
[root@dev-86-202 ~]# kubeadm alpha phase kubeconfig all --config ~/kube/conf/kubeadm.yaml
[root@dev-86-202 ~]# cp /etc/kubernetes/admin.conf ~/.kube/config

驗證:

$ cd /etc/kubernetes/pki
$ openssl x509 -in apiserver-etcd-client.crt -text -noout
Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number: 4701787282062078235 (0x41401a9f34c2711b)
    Signature Algorithm: sha256WithRSAEncryption
        Issuer: CN=etcd-ca
        Validity
            Not Before: Nov 22 11:58:50 2018 GMT
            Not After : Oct 29 11:58:51 2117 GMT   # 時間已經變成99年了

其它證書驗證同理

程式碼編譯

編譯環境映象我已經放到dockerhub上了:fanux/kubernetes-build:v1.0.0

首先clone k8s 程式碼:

git clone https://github.com/kubernetes/kubernetes

掛載到映象中編譯

docker run --rm -v yourcodedir:/go/src/k8s.io/kubernetes -it fanux/kubernetes-build:v1.0.0 bash
# cd /go/src/k8s.io/kubernetes
# make all WHAT=cmd/kubeadm GOFLAGS=-v

編譯完產物在 _output/local/bin/linux/amd64/kubeadm 目錄下

修改程式碼

證書時間程式碼其實在client-go裡面,檔案是:

vendor/k8s.io/client-go/util/cert/cert.go

然後看到這個NotAfter的都給改了即可:

NotAfter:  validFrom.Add(duration365d * longYear)

我這裡longYear = 99

然後編譯完工

最後在程式碼裡貼上小廣告:

func main() {
	if err := app.Run(); err != nil {
		fmt.Fprintf(os.Stderr, "error: %v\n", err)
		os.Exit(1)
	}
	fmt.Println("*************************************************")
	fmt.Println("****         www.sealyun.com                  ***")
	fmt.Println("****         kubernetes install in 3 steps    ***")
	fmt.Println("****         provide by fanux                 ***")
	fmt.Println("*************************************************")
	os.Exit(0)
}

完美

掃碼關注sealyun 探討