k8s 生成证书

生成证书

在 master 节点 10.8.8.8 这台主机上执行,证书只需要创建一次即可,以后在向集群中添加新节点时只要将 /etc/kubernetes/ 目录下的证书拷贝到新节点上即可。

go

1
yum -y install golang
1
2
3
vim ~/.bashrc
export GOPATH=$(go env GOPATH)
export PATH=$PATH:$(go env GOPATH)/bin

下载 CFSSL

go get -u github.com/cloudflare/cfssl/cmd/...

配置文件

1
2
3
4
5
mkdir /root/ssl
cd /root/ssl

cfssl print-defaults config > config.json
cfssl print-defaults csr > csr.json

创建 CA (Certificate Authority)

  • 1.创建 CA 配置文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
cat > ca-config.json <<EOF
{
"signing": {
"default": {
"expiry": "87600h"
},
"profiles": {
"kubernetes": {
"usages": [
"signing",
"key encipherment",
"server auth",
"client auth"
],
"expiry": "87600h"
}
}
}
}
EOF
  • 2.创建 CA 证书签名请求
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
cat >ca-csr.json<<EOF
{
"CN": "kubernetes",
"key": {
"algo": "rsa",
"size": 2048
},
"names": [
{
"C": "CN",
"ST": "BeiJing",
"L": "BeiJing",
"O": "k8s",
"OU": "System"
}
]
}
EOF
  • 3.生成 CA 证书和私钥
1
2
3
4
5
6
cfssl gencert -initca ca-csr.json | cfssljson -bare ca

#生成如下文件
ls ca*

ca-config.json ca.csr ca-csr.json ca-key.pem ca.pem

创建 kubernetes 证书

  • 1.创建 kubernetes 证书签名请求文件 kubernetes-csr.json
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
cat >kubernetes-csr.json<<EOF
{
"CN": "kubernetes",
"hosts": [
"127.0.0.1",
"10.8.8.8",
"10.8.8.10",
"10.8.8.11",
"10.254.0.1",
"kubernetes",
"kubernetes.default",
"kubernetes.default.svc",
"kubernetes.default.svc.cluster",
"kubernetes.default.svc.cluster.local"
],
"key": {
"algo": "rsa",
"size": 2048
},
"names": [
{
"C": "CN",
"ST": "BeiJing",
"L": "BeiJing",
"O": "k8s",
"OU": "System"
}
]
}
EOF
  • 2.生成 kubernetes 证书和私钥
1
2
3
4
5
6
cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=kubernetes kubernetes-csr.json | cfssljson -bare kubernetes

#生成如下文件
ls kubernetes*

kubernetes.csr kubernetes-csr.json kubernetes-key.pem kubernetes.pem

创建 admin 证书

  • 1.创建 admin 证书签名请求文件 admin-csr.json
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
cat >admin-csr.json<<EOF
{
"CN": "admin",
"hosts": [],
"key": {
"algo": "rsa",
"size": 2048
},
"names": [
{
"C": "CN",
"ST": "BeiJing",
"L": "BeiJing",
"O": "system:masters",
"OU": "System"
}
]
}
EOF
  • 2.生成 admin 证书和私钥
1
2
3
4
5
6
cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=kubernetes admin-csr.json | cfssljson -bare admin

#生成如下文件
ls admin*

admin.csr admin-csr.json admin-key.pem admin.pem

创建 kube-proxy 证书

  • 1.创建 kube-proxy 证书签名请求文件 kube-proxy-csr.json
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
cat >kube-proxy-csr.json<<EOF
{
"CN": "system:kube-proxy",
"hosts": [],
"key": {
"algo": "rsa",
"size": 2048
},
"names": [
{
"C": "CN",
"ST": "BeiJing",
"L": "BeiJing",
"O": "k8s",
"OU": "System"
}
]
}
EOF
  • 2.生成 kube-proxy 客户端证书和私钥
1
2
3
4
5
6
cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=kubernetes  kube-proxy-csr.json | cfssljson -bare kube-proxy

#生成如下文件
ls kube-proxy*

kube-proxy.csr kube-proxy-csr.json kube-proxy-key.pem kube-proxy.pem

校验证书

使用 cfssl-certinfo 命令

1
cfssl-certinfo -cert kubernetes.pem

分发证书

将生成的证书和秘钥文件(后缀名为.pem)拷贝到所有机器的 /etc/kubernetes/ssl 目录下备用;

生成的所有pem文件

1
admin-key.pem  admin.pem  ca-key.pem  ca.pem  kube-proxy-key.pem  kube-proxy.pem  kubernetes-key.pem  kubernetes.pem
1
2
mkdir -p /etc/kubernetes/ssl
cp *.pem /etc/kubernetes/ssl

×

纯属好玩

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

文章目录
  1. 1. 生成证书
  2. 2. 配置文件
    1. 2.1. 创建 CA (Certificate Authority)
    2. 2.2. 创建 kubernetes 证书
    3. 2.3. 创建 admin 证书
    4. 2.4. 创建 kube-proxy 证书
    5. 2.5. 校验证书
    6. 2.6. 分发证书
,