运行 CoreOS,etcd 默认不安全。为了保护它,我可以使用 TLS,这增加了我愿意处理的复杂程度。
现在,Kubernetes 是否能够使用 TLS 保护的 etcd 集群?
在 kubelet 和各种 pod 的配置中,Kubernetes 将 etcd 端点作为参数传递,因此它们需要 etcd,并且如果它是安全的,则需要证书才能与之对话。如果 Kubernetes 支持与 etcd 的 TLS 连接,它是如何配置的?
谢谢
运行 CoreOS,etcd 默认不安全。为了保护它,我可以使用 TLS,这增加了我愿意处理的复杂程度。
现在,Kubernetes 是否能够使用 TLS 保护的 etcd 集群?
在 kubelet 和各种 pod 的配置中,Kubernetes 将 etcd 端点作为参数传递,因此它们需要 etcd,并且如果它是安全的,则需要证书才能与之对话。如果 Kubernetes 支持与 etcd 的 TLS 连接,它是如何配置的?
谢谢
API 服务器是唯一直接与 etcd 对话的组件。当启动 API 服务器时,你可以传递一个--etcd-config=/path/to/client/config
参数而不是仅仅指向一个不安全的 etcd 服务器--etcd-server
在该配置文件中,您将指定 etcd 服务器以及用于连接的客户端凭据(证书/密钥)。
格式是 go-etcd 客户端 NewClientFromFile 函数所期望的格式,它期望Client结构的 JSON 序列化,特别是config
和cluster
键
进一步挖掘并询问 github 项目,我被引导到这篇文章,我希望能回答这个问题:
https://groups.google.com/forum/#!topic/google-containers/bTfEcRQ3N28/discussion
简而言之,配置文件应如下所示:
{
"cluster": {
"machines": [
"https://kube-master.internal:2379",
"https://kube-minion1.internal:2379",
"https://kube-minion2.internal:2379"
]
},
"config": {
"certFile": "/etc/etcd/kube-master.internal.pem",
"keyFile": "/etc/etcd/kube-master.internal.key",
"caCertFiles": [ "/etc/etcd/kubecluster-ca.pem" ],
"consistency": "STRONG_CONSISTENCY"
}
}
还没试过,但会尽快。