根据官方文档,生成k8s秘钥证书及相关管理证书有三种方式,其本质都是通过openssl:
- cfssl
- easyrsa
- openssl
官方文档:https://kubernetes.io/docs/concepts/cluster-administration/certificates/
cfssl方式
1.cfssl下载地址:
1 | VERSION=R1.2 |
2.生成CA配置文件
1 | mkdir ssl && cd ssl |
3.生成CA签名配置文件
1 | cat > ca-csr.json << EOF |
4.生成私钥和证书
1 | cfssl gencert -initca ca-csr.json | cfssljson -bare ca |
5.创建一个用于生成API Server的密钥和证书的JSON配置文件
1 | cat > kubernetes-csr.json <<EOF |
6.生成 kubernetes 证书和私钥
1 | cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=kubernetes kubernetes-csr.json | cfssljson -bare kubernetes |
7.创建admin证书
1 | cat > admin-csr.json <<EOF |
8.创建kube-proxy证书
1 | cat > kube-proxy-csr.json << EOF |
9.校验证书信息
1 | cfssl-certinfo -cert kubernetes.pem |
10.拷贝证书
1 | mkdir -p /etc/kubernetes/ssl/ && cp *.pem /etc/kubernetes/ssl/ |
easyrsa方式
1.下载:
1 | curl -L -O https://storage.googleapis.com/kubernetes-release/easy-rsa/easy-rsa.tar.gz |
2.生成 kubernetes 证书和私钥
1 | ./easyrsa --subject-alt-name="IP:172.26.6.1,IP:10.254.0.1,DNS:kubernetes.default" build-server-full kubernetes-master nopass |
3.签发admin证书
1 | ./easyrsa --dn-mode=org --req-cn=admin --req-org=system:masters --req-c= --req-st= --req-city= --req-email= --req-ou= build-client-full admin nopass |
openssl方式
1.生成ca
1 | openssl genrsa -out ca.key 2048 |
2.kubernetes证书和私钥
1 | openssl genrsa -out server.key 2048 |
3.admin证书
1 | openssl genrsa -out admin.key 2048 |