2

运行 CoreOS,etcd 默认不安全。为了保护它,我可以使用 TLS,这增加了我愿意处理的复杂程度。

现在,Kubernetes 是否能够使用 TLS 保护的 etcd 集群?

在 kubelet 和各种 pod 的配置中,Kubernetes 将 etcd 端点作为参数传递,因此它们需要 etcd,并且如果它是安全的,则需要证书才能与之对话。如果 Kubernetes 支持与 etcd 的 TLS 连接,它是如何配置的?

谢谢

4

2 回答 2

3

API 服务器是唯一直接与 etcd 对话的组件。当启动 API 服务器时,你可以传递一个--etcd-config=/path/to/client/config参数而不是仅仅指向一个不安全的 etcd 服务器--etcd-server

在该配置文件中,您将指定 etcd 服务器以及用于连接的客户端凭据(证书/密钥)。

格式是 go-etcd 客户端 NewClientFromFile 函数所期望的格式,它期望Client结构的 JSON 序列化,特别是configcluster

于 2015-09-26T04:27:13.070 回答
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"
  }
}

还没试过,但会尽快。

于 2015-09-28T17:17:43.533 回答