CA证书与ETCD集群

本文详细介绍了如何制作K8S集群和ETCD集群的CA证书,包括服务器单向认证和双向TLS认证。从创建CA密钥到生成节点证书,涉及master和worker node端的证书制作流程,确保K8S组件间通信的安全性。
摘要由CSDN通过智能技术生成

目录

一、CA证书

二、制作K8S集群证书流程

1.制作官方颁发的证书

2.制作master端的证书

3.制作worker node端证书

(1)服务器单向认证

(3)双向 TLS 认证

三、K8S 二进制集群

1.分类

2.节点分配

四、ETCD集群

1.环境

2. K8S

3.docker

4.ETCD集群

master节点操作

(1)定义两个脚本

(2)查看etcd 启动脚本 

(3)创建ca证书

(4)创建cfssl类型工具下载脚本

node节点制作


一、CA证书

CA证书中包含密钥对 (rsa 非对称密钥)
CA证书可以对通信加密,同时标识身份的唯一性
.pem :证书

二、制作K8S集群证书流程

1.制作官方颁发的证书

① 创建ca密钥(文件定义) ca-key.pem
② 创建ca证书(文件定义) ca.pem

2.制作master端的证书

用于内部加密通讯,同时为了给与Client端颁发master签名的证书

①创建过程:需要以下几步
    1)设置私钥 确保安全加密            .pem    
    2)私钥签名 确保身份真实            .csr
    3)制作证书(需要CA官方颁发)      cert.pem

② 创建私钥
③ 私钥签名
④ 使用ca证书与密钥证书签名

3.制作worker node端证书

① 由master端制作node端密钥
② 对node端的证书进行签名
③ 创建一个配置文件(区别于服务端,进行客户端验证)
④ 生成证书

CA 证书机构 (签发电子证书)

        在 Kubernetes 的组件之间进行通信时,数字证书的验证是在协议层面通过 TLS 完成的,除了需要在建立通信时提供相关的证书和密钥外,在应用层面并不需要进行特殊处理。

采用 TLS 进行验证有两种方式:

(1)服务器单向认证

       只需要服务器端提供证书,客户端通过服务器端证书验证服务的身份,但服务器并不验证客户端的身份。这种情况一般适用于对Internet开放的服务,例如搜索引擎网站,任何客户端都可以连接到服务器上进行访问,但客户端需要验证服务器的身份,以避免连接到伪造的恶意服务器。

(3)双向 TLS 认证

       除了客户端需要验证服务器的证书,服务器也要通过客户端证书验证客户端的身份。这种情况下服务器提供的是敏感信息,只允许特定身份的客户端访问。在Kubernetes中,各个组件提供的接口中包含了集群的内部信息。如果这些接口被非法访问,将影响集群的安全,因此组件之间的通信需要采用双向TLS认证。即客户端和服务器端都需要验证对方的身份信息。在两个组件进行双向认证时,会涉及到下面这些证书相关的文件:

① 服务器端证书:服务器用于证明自身身份的数字证书,里面主要包含了服务器端的公钥以及服务器的身份信息。
② 服务器端私钥:服务器端证书中包含的公钥所对应的私钥。公钥和私钥是成对使用的,在进行TLS验证时,服务器使用该私钥来向客户端
证明自己是服务器端证书的拥有者
③ 客户端证书:客户端用于证明自身身份的数字证书,里面主要包含了客户端的公钥以及客户端的身份信息。
④ 客户端私钥:客户端证书中包含的公钥所对应的私钥,同理,客户端使用该私钥来向服务器端证明自己是客户端证书的拥有者。
⑤ 服务器端 CA 根证书:签发服务器端证书的 CA 根证书,客户端使用该 CA 根证书来验证服务器端证书的合法性。
⑥ 客户端端 CA 根证书:签发客户端证书的 CA 根证书,服务器端使用该 CA 根证书来验证客户端证书的合法性。

三、K8S 二进制集群

k8s 默认有三种部署方式:Minikube 、kubeadm、 二进制 →工具部署/云平台部署

1.分类

1)ETCD集群
2)FLANNEL网络
3)单master部署
4)node部署
5)多master署(LB部署haproxy + keepalived 或者nginx + keepalived )

2.节点分配

负载均衡(lb)

nginx01   主机ip/24
nginx02   主机ip/24

master节点 

master01  主机ip/24
master02  主机ip/24

Node节点 

node01	  主机ip/24
node02	  主机ip/24

四、ETCD集群

1.环境

官网源码包下载:https://github.com/kubernetes/kubernetes/releases?after=v1.13.1
ETCD 二进制包地址:https://github.com/etcd-io/etcd/releases

2. K8S

Master:192.168.22.228/24 kube-apiserver kube-controller-manager kube-scheduler etcd
Node01:192.168.22.168/24 kubelet kube-proxy docker flannel etcd
Node02:192.168.22.206/24 kubelet kube-proxy docker flannel etcd

3.docker

yum install -y yum-utils device-mapper-persistent-data lvm2

cd /etc/yum.repos.d/
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

yum install -y docker-ce

systemctl stop firewalld
systemctl disable firewalld

setenforce 0

systemctl start docker
systemctl enable docker

tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://jqqwsp8f.mirror.aliyuncs.com"]
}
EOF

systemctl daemon-reload
systemctl restart docker

vim /etc/sysctl.conf
net.ipv4.ip_forward=1

sysctl -p
systemctl restart network
systemctl restart docker 

swapoff -a 

4.ETCD集群

master节点操作

(1)定义两个脚本

mkdir k8s

cd k8s

etcd-cert.sh 是证书制作的脚本
etcd.sh etcd启动脚本
评论 25
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值