Kubernetes on TLS 安全 etcd

Kubernetes on TLS secured etcd

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

现在,Kubernetes 可以使用 TLS 保护的 etcd 集群吗?

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

谢谢

API 服务器是唯一直接与 etcd 通信的组件。启动 API 服务器时,您可以传递一个 --etcd-config=/path/to/client/config 参数,而不是仅使用 --etcd-server

指向不安全的 etcd 服务器

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

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

进一步挖掘并询问 github 项目,我被引导到这个 post 我希望能回答这个问题:

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"
  }
}

还没试过,但会尽快的。