Kubernetes

kubeconfig 文件的自定義根證書

  • October 14, 2021

跑步kubeadm init phase certs apiserver --config kubeadm.yaml

是否可以為使用者組/kubectl/config 文件使用多個/自定義根證書?

我之所以問,是因為我想在每個項目的基礎上授予訪問權限-然後刪除自定義根證書-但為特殊的 kubectl 管理員保留“原始”根證書。

我已經看到您可以使用 ssh 隧道作為第一道防線,以保護根證書公鑰。但是您仍然需要分發公共簽名證書,即使它位於 ssh 公鑰私鑰後面。因此,也許有一種方法可以使用 ssh 隧道 - 並將自定義證書放入certificatesDir: /etc/kubernetes/pki

kubeadm.yaml

apiServer:
 extraArgs:
   authorization-mode: Node,RBAC
 timeoutForControlPlane: 4m0s
apiVersion: kubeadm.k8s.io/v1beta1
certificatesDir: /etc/kubernetes/pki

我知道你可以--insecure-skip-tls-verify在配置文件中使用,但這似乎是個壞主意。

是否可以為使用者組/kubectl/config 文件使用多個/自定義根證書?

不,只有一個“根”證書,這就是為什麼它被稱為根。

但是,x509 是一個信任,這意味著很有可能在該根下頒發從屬 CA,然後在這些 CA 下頒髮使用者證書,在項目結束時選擇刪除從屬 CA,這將孤立所有這些葉證書。請注意,據我所知,更改證書或其鏈需要重新啟動控制平面,因為它不會熱重新載入這些證書文件。我相信它有一個 GitHub 問題,就像其他 15,000 個問題一樣

根據您的需要,另一種選擇是為使用者證書頒發短期租約,這樣“撤銷”過程並不會改變 x509 信任鏈,而只是未能重新頒發證書。這更接近 Hashicorp Vault 和 Let’s Encrypt 學派

我親自實現了第二個(使用 Vault),但我相信第一個是可能的,因為 apiserver 使用 x509 鏈進行其一些集群內組件身份驗證,所以我不明白為什麼你不能同樣利用該機制的


我知道這不是您所要求的,但是像這樣使用 x509 進行臨時身份驗證是一條毀滅之路,因為 - 正如您所經歷的那樣 - 發行和撤銷雙方都是巨大的痛苦。如果您完全可以使用它,那麼OIDC 身份驗證機制更容易推理,並且kubectl或多或少地內置了對它的支持

引用自:https://serverfault.com/questions/1080471