K8S集群有证书的概念,之前一直是使用默认的,默认都是1年和10年的,1年有效期这显然对于生产环境是不合适的,于是调整K8S证书,升级K8S证书有效期为100年。
kubernetes提供了多种安全认证机制,其中对于集群通讯间可采用TLS(https) 双向认证机制,也可采用基于Token或用户名密码的单向tls认证。K8S一般在内网部署,采用私有 IP 地址进行通讯,权威CA只能签署域名证书,我们这里采用自建CA。
1基础介绍
想要安全就必须复杂起来,证书是少不了的。在Kubernetes中提供了非常丰富的证书类型,满足各种不同场景的需求。
1.1证书类型
根据认证对象可以将证书分成三类:服务器证书 server cert,客户端证书 client cert,对等证书 peer cert(表示既是 server cert 又是 client cert):
1.client certificate:用于服务端认证客户端,例如 etcdctl、etcd proxy、fleetctl、docker 客户端;
2.server certificate:服务端使用,客户端以此验证服务端身份,例如 docker 服务端、kube-apiserver;
3.peer certificate:双向证书,用于 etcd 集群成员间通信。
1.2证书分类
在说证书之前,先想想作为集群的入口apiserver需要提供那些服务,与那些组件通信,通信的两方可能需要配置证书。与apiserver通信的组件大体可以分为以下几类:
1.client(kubectl,restapi等):普通用户与apiserver之间的通信,对各类资源进行操作;
2.kubelet,kubeproxy:master与node之间的通信;
3.etcd:K8S的存储库;
4.webhook:这里指apiserver提供的admission-webhook,在数据持久化前调用webhook;
5.aggregation layer:扩展apiserver, 需要将自定义的api注册到K8S中,相比CRD性能更新;
6.pod