默认情况下,运行CoreOS,etcd不受保护。为了保护它,我可以使用TLS,这增加了我愿意处理的复杂程度。
现在,Kubernetes是否能够使用TLS安全的etcd集群?
在kubelet和各种pod的配置中,Kubernetes将etcd端点作为参数传递,因此它们需要etcd,并且如果它是安全的,则需要证书与它通信。 如果Kubernetes支持与etcd的TLS连接,它是如何配置的?
由于
答案 0 :(得分:3)
API服务器是唯一直接与etcd对话的组件。启动API服务器时,您可以传递--etcd-config=/path/to/client/config
参数,而不是仅使用--etcd-server
指向不安全的etcd服务器
在该配置文件中,您将指定etcd服务器以及用于连接的客户端凭据(证书/密钥)。
格式是go-etcd客户端NewClientFromFile函数所期望的格式,该函数需要Client结构的JSON序列化,特别是config
和cluster
键
答案 1 :(得分:3)
进一步挖掘并询问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"
}
}
Haven没有尝试过,但会尽快。