kubeadm証明書の有効期限

githubのダウンロード出典:https://github.com/kubernetes/kubernetes

ダウンロードは、ソースコードのバージョンをリリースすることを期待し、ここで私のダウンロードv1.16.3

 

 

 

注:tar.gz形式のバージョンをダウンロードしてください

開梱し、ソースコードを変更

タール-xzvf v1.16.2.tar.gz
ルートディレクトリの変更ファイルcert.go 
vimの./staging/src/k8s.io/client-go/util/cert/cert.go



#这个方法里面[NotAfter]の:now.Add(duration365d * 10).UTC()
默认有效期就是10年、改成100年
FUNC NewSelfSignedCACert(CFG構成、キーcrypto.Signer)(* x509.Certificate、エラー){
今:= time.Now()
TMPL:= {x509.Certificate
のSerialNumber:新しい(big.Int).SetInt64(0)、
件名:pkix.Name {
のCommonName:cfg.CommonName、
組織:cfg.Organization、
}、
notBeforeの: now.UTC()、
// [NotAfter]の:now.Add(duration365d * 10).UTC()、
[NotAfter]の:now.Add(duration365d * 100).UTC()、
のKeyUsage:x509.KeyUsageKeyEncipherment | x509.KeyUsageDigitalSignature | x509.KeyUsageCertSign、
BasicConstraintsValid:真、
ISCA:真、
}

certDERBytes、ERR = x509.CreateCertificate(cryptorand.Reader、&TMPL、&TMPL、key.Public()、キー)
!場合ERR =ゼロ{
戻りnilは、ERR
}
x509.ParseCertificate(certDERBytes)を返します

 

vimのCMD / kubeadm /アプリ/ utilに/ pkiutil / pki_helpers.go

#このメソッドの内部は[NotAfter]の:. Time.now()の追加(kubeadmconstants.CertificateValidity).UTC()を参照するために
、一定のkubeadmconstants.CertificateValidityのある#パラメータ
が変更することはできませんので、#を、私はこの定数を見つけることができないソースを見に行きました位置割り当て
NewSignedCert FUNC(CFG * certutil.Config、キー crypto.Signer、caCert * x509.Certificate、ケーキ状crypto.Signer)(* x509.Certificate、エラー){シリアル、ERR = cryptorand.Int(cryptorand.Reader、 新しい新しい(big.Int).SetInt64(math.MaxInt64))
IF ERR!=ゼロ{
リターンゼロ、ERR
}
lenのIF(cfg.CommonName)== 0 {
リターンゼロ、errors.New( "のCommonName Aを指定しなければなりません")
}
(cfg.Usages)== 0 {lenのIF
リターンゼロ、errors.New( "少なくとも1つExtKeyUsage MUSTを指定")
}

certtmpl:= {x509.Certificate
件名:{pkix.Name
CommonName:cfg.CommonName、
組織:cfg.Organization、
}、
DNSNames:cfg.AltNames.DNSNames、
するIPアドレス:cfg.AltNames.IPs、
のSerialNumber:シリアル、
notBeforeの:caCert.NotBefore、
[NotAfter]の:time.Now()を追加し(。kubeadmconstants.CertificateValidity).UTC()、
のKeyUsage:x509.KeyUsageKeyEncipherment | x509.KeyUsageDigitalSignature、
ExtKeyUsage:cfg.Usages、
}
certDERBytes、ERR = x509.CreateCertificate(cryptorand.Reader、&certTmpl、caCert、key.Public()、ケーキ状)
ERR =ゼロ{なら!
リターンゼロ、ERR
}
戻りX509。 ParseCertificate(certDERBytes)
}

ここで得られた結果は、kubeadmconstants.CertificateValidityを定義しています

vimの./cmd/kubeadm/app/constants/ constants.go

// 就是这个常量定义CertificateValidity、我改成* 100年
のconst // KubernetesDirは、さまざまな設定を格納するファイルのためのKubernetesが所有しているディレクトリです 
        KubernetesDir = " の/ etc / kubernetes " 
        // ManifestsSubDirNameを格納するディレクトリ名を定義するマニフェスト 
        ManifestsSubDirName = " マニフェスト" 
        // TempDirForKubeadmはkubeadmのための一時ディレクトリを定義
         //はKubernetesDirと結合されなければならない。 
        TempDirForKubeadm = " TMP "
 
        // CertificateValidityはkubeadmによって生成されたすべての署名された証明書の有効性を定義
         // CertificateValidity = time.Hour * 24 * 365 
        * 100 CertificateValidity = time.Hour * 24 * 365
 
        // CACertAndKeyBaseNameは、認証局のベース名を定義します 
        CACertAndKeyBaseNameを= " CA " 
        // CACertNameは、証明書の名前を定義します 
        CACertNameを= " ca.crt " 
        // CAKeyNameは、証明書の名前を定義します 
        CAKeyName = " ca.keyを"

 

ソースコードは、良い方向に変化して、次のステップはkubeadmをコンパイルすることです

第二に、コンパイルkubeadm

最初にサーバーの設置環境、コンパイルmakeメソッド、さまざまなエラーの結果を移動しよう。あなただけの、情報を見つけるためにインターネットを通じて、コンテナ、コンテナ内のコンパイラをダウンロードしようとするコードコンパイラを実行するための容器が提供k8s.gcr.io/kube-crossことを公式サイトを見つけることができます。

ない壁の向こう、そうでない場合は、ユーザーの壁を超える、https://hub.docker.com KUBE-クロスキーワード検索に、私はmirrorgooglecontainersの新しいバージョンを見つけた私ができるので/ KUBE-クロス:v1.12.10-1ミラー内部のミラーがバージョンv1.12.10-1環境です行く必要があります。

 

注:使用mirrorgooglecontainers / KUBE-クロス:v1.12.10-1コンパイルする前に、私は、バージョンは、ミラーを行くv.1.11.xダウンロードしようとした場合、コンパイラは、おそらくそれは、私はソースコードがkubernetes v1の必要があり、ダウンロードを意味し、文句を言うでしょう。 12.xのは、コンパイルします。

ミラープル

ドッキングウィンドウプルmirrorgooglecontainers / KUBE-クロス:v1.12.10-1

#ファイル名を指定して実行容器、容器の内部へ
あなたがソースコードkubernetesルートディレクトリを変更した後、ドッキングウィンドウの実行--rm -it -v:/go/src/k8s.io/kubernetes \
mirrorgooglecontainers / KUBE-クロス:v1.12.10-1のbash
 
 
容器の内側にマウントする#カドミウムパス、-alは、ファイル内部を見ることができLSは、ソースファイルのディレクトリをマウントするホストではありません
CDの/go/src/k8s.io/kubernetes
 
#コンパイラkubeadm、ここでは主にコンパイルkubeadmへ
すべてWHAT = CMD / kubeadm GOFLAGS = -vを作ります
 
#コンパイラkubelet
#作るすべてWHAT = CMD / kubelet GOFLAGS = -v
 
#コンパイラkubectl
#作るすべてWHAT = CMD / kubectl GOFLAGS = -v
 
#コンパイラ_output / binに/ kubeadmディレクトリで完成した製品、
ソフトリンクを使用することである#ビン

  

コンパイルが成功したら、コンテナを終了することができ、あなたは、マウントパスがkubeadmコンパイルされている見ることができます

パス./_output/local/bin/linux/amd64/kubeadm

 

第三に、スワップはkubeadmを交換するために使用されています

#Kubeadmファイルは、元のkubeadmをコピーしているシステムに置き換えられます
CPは/ usr / binに/ kubeadmは/ usr / binに/ kubeadm.bak
CPの_output / local / binに/ linuxの/ AMD64 / kubeadmは/ usr / binに/ kubeadm

 

第四には、コマンドは、証明書を更新実​​行します

あなたはには/ etc / kubernetes / PKI証明書、証明書をバックアップすることができ、私がバックアップするここにいませんよ

1、証明書の有効期限が切れるチェック

kubeadmアルファ本命チェックインの有効期限

 

図2に示すように、パラメータを表示するために使用できる証明書を更新します

kubeadmアルファ本命すべての更新

kubeadmアルファ本命チェックインの有効期限を

 

 オリジナル:https://blog.csdn.net/fuck487/article/details/102759523

 

 

 

 

おすすめ

転載: www.cnblogs.com/whyong88/p/12054437.html