kubernetes集群部署指南:etcd数据库集群部署(2)

在实际kubernetes应用场景中,集群内组件之间访问都是通过TLS双向认证安全访问,即https访问,所以在部署时,给kubernetes各个组件创建证书是必要的,这是因为没有https安全访问会导致集群间节点通信访问不安全,非法用户可以通过客户端操作,对集群资源非法操作,引起集群服务宕机。例如操作:etcd存储的数据,所以为集群开启https访问是必要的。

1. 自建私有CA证书


1.1 安装 cfssl 工具集

大多数情况下,kubernetes集群都是建立自己的私有网络里,比如公有云vpc区域,自建数据中心等等,由于k8sli所有相关组件都是需要TLS双向认证,合法证书机构大多都是提供ssl单向认证证书,所以必须自建CA根证书,并生成相应的公钥和私钥根证书,可以通过openssl或cfssl创建CA证书:

wget https://pkg.cfssl.org/R1.2/cfssljson_linux-amd64 /usr/lcoal/bin/ 
wget https://pkg.cfssl.org/R1.2/cfssl-certinfo_linux-amd64 -P /usr/lcoal/bin/ 
cd  /usr/lcoal/bin
mv cfssl_linux-amd64 cfssl  
mv cfssljson_linux-amd64 cfssljson 
mv cfssl-certinfo_linux-amd64 cfssl-certinfo
chmod +x * && ln -sf $SSL_BIN_PATH/bin/cfssl* /usr/local/bin/

1.2 创建根证书 (CA)

CA 证书是集群所有节点共享的,只需要创建一个 CA 证书,后续创建的所有证书都由它签名。

CA 配置文件用于配置根证书的使用场景 (profile) 和具体参数 (usage,过期时间、服务端认证、客户端认证、加密等),后续在签名其它证书时需要指定特定场景。


cat >$CA_DIR/ca-config.json<<EOF
{
  "signing": {
    "default": {
      "expiry": "175200h"
    },
    "profiles": {
      "kubernetes": {
        "usages": [
            "signing",
            "key encipherment",
            "server auth",
            "client auth"
        ],
        "expiry": "175200h"
      }
    }
  }
}
EOF

猜你喜欢

转载自blog.51cto.com/blief/2415960