[英]CIS benchmark issue for Kubernetes cluster
我正在主节点上运行CIS kube-bench 工具并尝试解决此错误
[FAIL] 1.2.6 Ensure that the --kubelet-certificate-authority argument is set as appropriate (Automated).
我知道我需要更新 API 服务器清单 YAML 文件,此标志指向正确的 CA 文件--kubelet-certificate-authority但是,我不确定哪个是 Kubelet 的正确 CA 证书。
这些是我在 PKI 目录中的文件:-
apiserver-etcd-client.crt
apiserver-etcd-client.key
apiserver-kubelet-client.crt
apiserver-kubelet-client.key
apiserver.crt
apiserver.key
ca.crt
ca.key
etcd
front-proxy-ca.crt
front-proxy-ca.key
front-proxy-client.crt
front-proxy-client.key
sa.key
sa.pub
3 非常相似的讨论关于同一主题。 我不会为您提供所有步骤,因为它在文档和堆栈上的相关问题中写得很好。 仅高级概述
你的行动:
这些连接终止于 kubelet 的 HTTPS 端点。 默认情况下,apiserver 不验证 kubelet 的服务证书,这使得连接受到中间人攻击,并且在不受信任和/或公共网络上运行是不安全的。
然后,在主节点上编辑 API 服务器 pod 规范文件/etc/kubernetes/manifests/kube-apiserver.yaml
并将--kubelet-certificate-authority
参数设置为证书颁发机构的证书文件的路径。
来自@Matt答案
/etc/kubernetes/ssl/ca.crt
为具有有效 IP SAN 的 kubelet 签署新证书。--kubelet-certificate-authority=/etc/kubernetes/ssl/ca.crt
(有效 CA)。/var/lib/kubelet/config.yaml
配置文件)中,将tlsCertFile
和tlsPrivateKeyFile
设置为指向新创建的 kubelet crt
和key
文件。并从澄清:
是的,您必须为 kubelet 生成证书并在主
/etc/kubernetes/ssl/ca.crt
上提供的证书颁发机构对它们进行签名
默认情况下,在 Kubernetes 中有 3 个不同的父 CA(kubernetes-ca、etcd-ca、kubernetes-front-proxy-ca)。 您正在寻找 kubernetes-ca,因为 kubelet 使用 kubernetes-ca,您可以查看 文档。 kubernetes-ca 默认路径是 /etc/kubernetes/pki/ca.crt 但您也可以通过 kubelet configmap 使用以下命令进行验证
kubectl get configmap -n kube-system $(kubectl get configmaps -n kube-system | grep kubelet | awk '{print $1}') -o yaml | grep -i clientca
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.