kubernetes入门知识(蹲坑学kubernetes之七签发CA证书)

本节提纲:

  • 了解kubernetes的证书服务
  • 创建CA证书

kubernetes入门知识(蹲坑学kubernetes之七签发CA证书)(1)

图1:Kubernetes之Log

Kubernetes有着一套完整且复杂的认证授权控制机制,包括API Server的认证、授权、准入控制等。这样做主要目的是为了安全。不管是初学者,还是老手都需要搞清楚证书认证、理清思路明白的认证过程。

一、了解kubernetes的证书服务

1、获取证书的方式:

第三方机构证书:付费购买CA机构颁发的证书,具有真实性校验;

自签发正式:自己生成的ssl证书不受浏览器信任,在内网使用,而且功能效果差。

2、生成证书的方式:

Easy-rsa:基于shell的简单CA实用程序;

Openssl:一套开源软件,ssl密码库工具,提供了一个通用、健壮、功能完备的工具套件,用以支持SSL/TLS 协议的实现。

CFSSL:是CloudFlare开源的一款PKI/TLS工具。 CFSSL包含一个命令行工具和一个用于签名,验证并且捆绑TLS证书的HTTP API服务。 使用Go语言编写。

3、Kubernetes群集分为三大类:

Client Certificate(客户端证书)、Server Certificate(服务端证书)和Peer Certificate(双向证书)。

具体详细如下:

1、Etcd配套证书

2、Kube-APIserver配套证书

3、kube-scheduler配套证书

4、kube-controller-manager配套证书

5、kube-proxy 配套证书

6、service account配套证书

7、admin配套证书

8、kubelet配套证书

注意:kubelet用到的证书都是独一无二的,使用TLS bootstrapping给kubelet单独签发的证书。

在这里,我们cfssl使用自签发私有证书,先把Kubernetes群集环境搭建起来,在后面的内容中会专门学习Kubernetes认证、授权、准入控制等机制。

二、创建CA证书

1、创建证书目录

[root@k8s-master ~]# mkdir -p /usr/local/kubernetes/ssl [root@k8s-master ~]# mkdir -p /var/lib/etcd/

2、下载Cfssl工具

[root@k8s-master ~]# wget https://pkg.cfssl.org/R1.2/cfssl_linux-amd64 [root@k8s-master ~]# wget https://pkg.cfssl.org/R1.2/cfssljson_linux-amd64 [root@k8s-master ~]# wget https://pkg.cfssl.org/R1.2/cfssl-certinfo_linux-amd64 [root@k8s-master ~]# mv cfssl_linux-amd64 /usr/local/kubernetes/bin/cfssl [root@k8s-master ~]# mv cfssljson_linux-amd64 /usr/local/kubernetes/bin/cfssljson [root@k8s-master ~]# mv cfssl-certinfo_linux-amd64 /usr/local/kubernetes/bin/cfssl-certinfo [root@k8s-master ~]# chmod x /usr/local/kubernetes/bin/*

3、分发Cfssl工具

[root@k8s-master ~]# scp /usr/local/kubernetes/bin/* root@192.168.1.1:/usr/local/kubernetes/bin/ [root@k8s-master ~]# scp /usr/local/kubernetes/bin/* root@192.168.1.2:/usr/local/kubernetes/bin/

4、设置Cfssl命令执行路径

[root@k8s-master ~]# echo "export PATH=$PATH:/usr/local/kubernetes/bin/" >>/etc/profile 或者 [root@k8s-master ~]# vim /etc/profile 添加: export PATH=$PATH:/usr/local/kubernetes/bin [root@k8s-master ~]# source /etc/profile

5、初始话CFSSL

[root@k8s-master ~]# cd /usr/local/kubernetes/ssl/ [root@k8s-master ssl]# cfssl print-defaults config > ca-config.json [root@k8s-master ssl]# cfssl print-defaults csr > ca-csr.json

6、创建CA配置文件

(1)创建CA配置文件config.json

[root@k8s-master ssl]# vim ca-config.json 修改: { "signing": { "default": { "expiry": "87600h" }, "profiles": { "kubernetes": { "usages": [ "signing", "key encipherment", "server auth", "client auth" ], "expiry": "87600h" } } } }

signing:表示该证书可用于签名其它证书;

server auth:表示该CA对server提供的证书进行验证;

client auth:表示该CA对client提供的证书进行验证。

(2)创建CA签名文件csr.json

[root@k8s-master ssl]# vim ca-csr.json 修改: { "CN": "kubernetes", "hosts": [ "127.0.0.1", "10.0.0.1", "192.168.1.1", "192.168.1.2", "192.168.1.3" ], "key": { "algo": "rsa", "size": 2048 }, "names": [ { "C": "CN", "L": "BeiJing", "ST": "BeiJing", "O": "k8s", "OU": "System" } ], "ca": { "expiry": "87600h" } }

7、生成CA证书(ca.pem)和密钥(ca-key.pem)

[root@k8s-master ssl]# cfssl gencert -initca ca-csr.json | cfssljson -bare ca

kubernetes入门知识(蹲坑学kubernetes之七签发CA证书)(2)

图2:创建证书

8、分发CA证书

[root@k8s-master ssl]# scp ca.csr ca.pem ca-key.pem ca-config.json 192.168.1.1:/usr/local/kubernetes/ssl/ [root@k8s-master ssl]# scp ca.csr ca.pem ca-key.pem ca-config.json 192.168.1.2:/usr/local/kubernetes/ssl/

下一章节我们开始安装部署Kubernetes群集,同一个CA证书签署所有证书,后续内容详见。敬请期待!

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页