K8S-Demo集群实践03:准备集群各组件间HTTPS通讯需要的x509证书

  • 这里一次准备好集群内部通讯需要的所有证书
  • 你可以跳过本篇,在后续部署过程中需要相应证书的时候再创建

一、安装证书生产工具CFSSL

  • 本案例使用CloudFlare的PKI工具集cfssl创建所有证书
  • CSR:Certificate Signing Request 证书签名请求文件
[root@master1 ~]# mkdir -p /opt/install/soft/cfssl
[root@master1 ~]# cd /opt/soft/cfssl
[root@master1 cfssl]# wget https://github.com/cloudflare/cfssl/releases/download/v1.4.1/cfssl_1.4.1_linux_amd64
[root@master1 cfssl]# mv cfssl_1.4.1_linux_amd64 /opt/k8s/bin/cfssl
[root@master1 cfssl]# wget https://github.com/cloudflare/cfssl/releases/download/v1.4.1/cfssljson_1.4.1_linux_amd64
[root@master1 cfssl]# mv cfssljson_1.4.1_linux_amd64 /opt/k8s/bin/cfssljson
[root@master1 cfssl]# wget https://github.com/cloudflare/cfssl/releases/download/v1.4.1/cfssl-certinfo_1.4.1_linux_amd64
[root@master1 cfssl]# mv cfssl-certinfo_1.4.1_linux_amd64 /opt/k8s/bin/cfssl-certinfo
[root@master1 cfssl]# chmod +x /opt/k8s/bin/*
  • 获取缺省配置,可以根据需要在这个基础上修改
[root@master1 ~]# cd /opt/install/cert
[root@master1 cert]# cfssl print-defaults config > ca-config.json
[root@master1 cert]# cfssl print-defaults csr > ca-csr.json

二、创建根证书

  • CA(Certificate Authority)是自签名的根证书,用来签名其它证书
  • 如果没有特殊说明,后续操作均在master1节点上执行
  • 证书临时存放目录 /opt/install/cert

1、创建根证书配置文件 ca-config.json

[root@master1 ~]# cd /opt/install/cert
[root@master1 cert]# cat > ca-config.json <<EOF
{
  "signing": {
    "default": {
      "expiry": "87600h"
    },
    "profiles": {
      "k8s-demo-server": {
        "usages": [
            "signing",
            "key encipherment",
            "server auth",
            "client auth"
        ],
        "expiry": "87600h"
      },
      "k8s-demo-client": {
        "usages": [
            "signing",
            "key encipherment",
            "client auth"
        ],
        "expiry": "87600h"
      }
    }
  }
}
EOF
  • expiry: “87600h”:证书有效期设置为10年
  • signing:表示该证书可用于签名其它证书(生成的 ca.pem 证书中 CA=TRUE)
  • key encipherment:秘钥加密
  • server auth:表示client可以用该该证书对server提供的证书进行验证
  • client auth:表示server可以用该该证书对client提供的证书进行验证

2、创建证书签名请求文件 ca-csr.json

[root@master1 ~]# cd /opt/install/cert
[root@master1 cert]# cat > ca-csr.json <<EOF
{
  "CN": "k8s-demo-ca",
  "key": {
    "algo": "rsa",
    "size": 2048
  },
  "names": [{
    "C" : "CN",
    "ST": "GuangDong",
    "L" : "ShenZhen",
    "O" : "k8s-demo",
    "OU": "jason@vip.qq.com"
  }],
  "ca": {
    "expiry": "87600h"
  }
}
EOF
  • CN :Common Name,kube-apiserver从证书中提取该字段作为请求的用户名 (User Name),浏览器使用该字段验证网站是否合法
  • C :国家
  • ST :州,省
  • L : 地区,城市
  • O :Organization,组织名,公司名称,kube-apiserver从证书中提取该字段作为请求用户所属的组 (Group)
  • OU :组织内部单位名称,部门名称
  • 不同证书csr文件的CN、O、C、ST、L、OU组合必须不同,否则可能出现PEER’S CERTIFICATE HAS AN INVALID SIGNATURE错误

3、生成CA 根证书及私钥

[root@master1 ~]# cd /opt/install/cert
[root@master1 cert]# cfssl gencert -initca ca-csr.json | cfssljson -bare ca
[root@master1 cert]# ls
ca-config.json  ca.csr  ca-csr.json  ca-key.pem  ca.pem

4、分发证书

[root@master1 ~]# cd /opt/install/cert
[root@master1 cert]# for node_ip in ${ALL_IPS[@]}
  do
    echo ">>> ${node_ip}"
    ssh root@${node_ip} "mkdir -p /opt/k8s/etc/cert"
    scp ca*.pem ca-config.json root@${node_ip}:/opt/k8s/etc/cert
  done

三、生成集群管理员admin的证书(kubectl->kube-apiserver)

1、准备证书签

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值