CentOS 7.4

TLS密钥和证书

这里部署的etcd集群使用TLS证书对证书通信进行加密,并开启基于CA根证书签名的双向数字证书认证。

下面介绍使用cfssl生成所需要的私钥和证书.

centos-mini版本的linux需要安装开发包:

yum groupinstall “Development Tools”

安装cfssl

cfssl是使用Go语言开发的工具,如果系统中安装了Go,可以使用直接go get安装cfssl:

项目地址:https://github.com/cloudflare/cfssl

会在$GOPATH/bin下安装cfssl, cfssjosn, mkbundle等工具。

CA证书和私钥

创建ca-config.json:

ca-config.json中可以定义多个profile,分别设置不同的expiry和usages等参数。如上面的ca-config.json中定义了名称为frognew的profile,这个profile的expiry 87600h为10年,useages中:

  • signing表示此CA证书可以用于签名其他证书,ca.pem中的CA=TRUE
  • server auth表示TLS Server Authentication
  • client auth表示TLS Client Authentication

创建CA证书签名请求配置ca-csr.json:

下面使用cfss生成CA证书和私钥:

ca-key.pem和ca.pem需要保存在一个安全的地方,后边会用到。

etcd证书和私钥

创建etcd证书签名请求配置etcd-csr.json:

注意上面配置hosts字段中制定授权使用该证书的IP和域名列表,因为现在要生成的证书需要被etcd集群各个节点使用,所以这里指定了各个节点的IP和hostname。

下面生成etcd的证书和私钥:

对生成的证书可以使用cfssl或openssl查看:

安装etcd

将CA证书ca.pem, etcd秘钥etcd-key.pem, etcd证书etcd.pem拷贝到各节点的/etc/etcd/ssl目录中。

下载etcd二进制文件包:

解压缩etcd-v3.1.6-linux-amd64.tar.gz,将其中的etcd和etcdctl两个可执行文件复制到各节点的/usr/bin目录。

在各节点创建etcd的数据目录:

在每个节点上创建etcd的systemd unit文件/usr/lib/systemd/system/etcd.service,注意替换ETCD_NAMEINTERNAL_IP变量的值:

  • 上面在启动参数中指定了etcd的工作目录和数据目录是/var/lib/etcd
  • --cert-file--key-file分别指定etcd的公钥证书和私钥
  • --peer-cert-file--peer-key-file分别指定了etcd的Peers通信的公钥证书和私钥。
  • --trusted-ca-file指定了客户端的CA证书
  • --peer-trusted-ca-file指定了Peers的CA证书
  • --initial-cluster-state new表示这是新初始化集群,--name指定的参数值必须在--initial-cluster

启动etcd

在各节点上启动etcd:

检查集群是否健康,在任一节点执行:

确保输出cluster is healthy的信息。

Categories: KUBERNETES

0 Comments

Leave a Reply

Avatar placeholder

Your email address will not be published. Required fields are marked *