package
0.1.6
Repository: https://github.com/qqgoblin/go-sdk.git
Documentation: pkg.go.dev

# README

Kubernets 证书工具

工具生成 Kubernetes 管理面、Kubelet、Kubectl 等服务使用的 tls 文件(PS:该工具是重复造轮子,我们可以通过 kubeadm 实现相同的功能)。

根据 Kubernetes 官方的最佳实践,Kubernetes 集群应该具备以下三个类型的 CA 用于签发不同的服务端、客户端证书:

pathDefault CNdescription
ca.crt,keykubernetes-caKubernetes 集群根证书
etcd/ca.crt,keyetcd-ca用于 etcd 相关 tls
front-proxy-ca.crt,keykubernetes-front-proxy-ca用于自定义 APIServer front-end proxy

上述 CA 生成了以下证书:

Default CNParent CAO (in Subject)kindhosts (SAN)
kube-etcdetcd-caserver, client<hostname>, <Host_IP>, localhost, 127.0.0.1
kube-etcd-peeretcd-caserver, client<hostname>, <Host_IP>, localhost, 127.0.0.1
kube-etcd-healthcheck-clientetcd-caclient
kube-apiserver-etcd-clientetcd-casystem:mastersclient
kube-apiserverkubernetes-caserver<hostname>, <Host_IP>, <advertise_IP>, [1]
kube-apiserver-kubelet-clientkubernetes-casystem:mastersclient
front-proxy-clientkubernetes-front-proxy-caclient

以及以下 kubeconfig 文件:

filenamecredential nameDefault CNO (in Subject)
admin.confdefault-adminkubernetes-adminsystem:masters
kubelet.confdefault-authsystem:node:<nodeName> (see note)system:nodes
controller-manager.confdefault-controller-managersystem:kube-controller-manager
scheduler.confdefault-schedulersystem:kube-scheduler

最后还有用于生成 service account 的密钥

private key pathpublic key pathcommandargument
sa.keykube-controller-manager--service-account-private-key-file
sa.pubkube-apiserver--service-account-key-file

上述文件构成了 Kubernetes 认证体系的基础。

参考

best-practices/certificates