《Kubernetes证书篇:基于cfssl工具集一键生成二进制kubernetes集群相关证书(方法一)》

一、背景信息

Kubernetes 需要 PKI 证书才能进行基于 TLS 的身份验证。如果你是使用 kubeadm 安装的 Kubernetes, 则会自动生成集群所需的证书。如果你是使用二进制安装的 Kubernetes,则需要自己手动生成集群所需的证书。

1、首先从etcd算起

1、etcd CA证书
2、etcd对外提供服务,要有一套etcd server证书
3、etcd各节点之间进行通信,要有一套etcd peer证书
4、etcd client证书

证书列表,如下所示:。

root@etcd01:~# tree /etc/kubernetes/pki/etcd/
/etc/kubernetes/pki/etcd/
├── ca-key.pem
├── ca.pem
├── healthcheck-client-key.pem
├── healthcheck-client.pem
├── peer-key.pem
├── peer.pem
├── server-key.pem
└── server.pem

2、其次从kubernetes算起

1、kubernetes CA证书
2、Kubelet 的客户端证书,用于 API 服务器身份验证
3、Kubelet 服务端证书, 用于 API 服务器与 Kubelet 的会话
4、API 服务器端点的证书
5、集群管理员的客户端证书,用于 API 服务器身份认证
6、API 服务器的客户端证书,用于和 Kubelet 的会话
7、API 服务器的客户端证书,用于和 etcd 的会话
8、控制器管理器的客户端证书或 kubeconfig,用于和 API 服务器的会话
9、调度器的客户端证书或 kubeconfig,用于和 API 服务器的会话
10、前端代理的客户端及服务端证书

证书列表,如下所示:。

root@k8s-master-65:~# tree /etc/kubernetes
/etc/kubernetes
├── admin.kubeconfig
├── controller-manager.kubeconfig
├── kubelet-bootstrap.kubeconfig
├── kube-proxy.kubeconfig
├── manifests
├── pki
│   ├── apiserver-etcd-client-key.pem
│   ├── apiserver-etcd-client.pem
│   ├── apiserver-key.pem
│   ├── apiserver-kubelet-client-key.pem
│   ├── apiserver-kubelet-client.pem
│   ├── apiserver.pem
│   ├── ca-key.pem
│   ├── ca.pem
│   ├── etcd
│   │   ├── ca-key.pem
│   │   └── ca.pem
│   ├── front-proxy-ca-key.pem
│   ├── front-proxy-ca.pem
│   ├── front-proxy-client-key.pem
│   ├── front-proxy-client.pem
│   ├── sa.key
│   ├── sa.pub
│   └── token.csv
└── scheduler.kubeconfig

二、功能简介

1、支持k8s集群一键生产所有相关证书文件及kubeconfig文件
2、支持单master集群、多master集群

目录信息如下所示:
在这里插入图片描述


三、工具下载

基于cfssl工具集一键生成二进制kubernetes集群相关证书工具


四、操作步骤

1、编辑env.conf文件

# https://kubernetes.io/zh-cn/docs/setup/best-practices/certificates/

# cfssl生成证书过程日志打印级别<0:调试 1:信息 2:警告 3:错误 4:严重>
export loglevel="3"

# etcd集群所有主机ip地址和主机名,<建议多写几个ip,方便后期扩容>,ip地址之间必须使用逗号分隔,根据实际情况修改
export etcd_hostname_list="127.0.0.1,etcd01,etcd02,etcd03,192.168.1.62,192.168.1.63,192.168.1.64"

# cluster name,默认不修改
export cluster_name="kubernetes"

# apiserver的service ip地址(一般是svc网段的第一个ip),虚拟IP
export kube_svc_ip="10.96.0.1"

# 单master节点请填写<主机内网ip地址 + 主机名>,ip地址之间必须使用逗号分隔
# 多master集群请填写<所有maser节点主机ip地址 + 所有master节点主机名 + vip地址或代理ip地址>
export kube_apiserver_hostname_list="192.168.1.65,k8s-master-65"

# API Server地址
# 多master集群请填写代理ip或vip的地址和端口
export kube_api_server="192.168.1.65:6443"

2、执行脚本操作

 ./op.sh build

如下图所示:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


总结:整理不易,如果对你有帮助,可否点赞关注一下?

更多详细内容请参考:企业级K8s集群运维实战

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

东城绝神

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值