码迷,mamicode.com
首页 > Web开发 > 详细

二进制安装kubernetes v1.11.2 (第二章 创建CA证书和秘钥文件)

时间:2018-10-24 15:50:40      阅读:211      评论:0      收藏:0      [点我收藏+]

标签:需要   json   共享   ca证书   cer   bat   conf   dig   for   

继续前一章。

三、创建CA证书和秘钥文件

kubernetes系统的各组件需要使用TLS证书对通信进行加密,本文采用CloudFlare的PKI工具cfssl来生成Certificate Authority(CA)和其他证书

生成的CA证书和秘钥文件如下。证书文件只需要创建一次。其他节点使用的时候,复制即可

……pem
待补充
……pem

使用证书的组件如下

…………
待补充
…………

3.1 安装cfssl工具

[k8s@k8s-m1 ~]$ cd /opt/k8s/cert
[k8s@k8s-m1 k8s]$ sudo mkdir -p /opt/k8s/cert && sudo chown -R k8s /opt/k8s && cd /opt/k8s [k8s@k8s-m1 k8s]$ wget https://pkg.cfssl.org/R1.2/cfssl_linux-amd64 [k8s@k8s-m1 k8s]$ mv cfssl_linux-amd64 /opt/k8s/bin/cfssl [k8s@k8s-m1 k8s]$ wget https://pkg.cfssl.org/R1.2/cfssljson_linux-amd64 [k8s@k8s-m1 k8s]$ mv cfssljson_linux-amd64 /opt/k8s/bin/cfssljson [k8s@k8s-m1 k8s]$ wget https://pkg.cfssl.org/R1.2/cfssl-certinfo_linux-amd64 [k8s@k8s-m1 k8s]$ mv cfssl-certinfo_linux-amd64 /opt/k8s/bin/cfssl-certinfo [k8s@k8s-m1 k8s]$ chmod +x /opt/k8s/bin/*

3.2 创建根证书(CA)

CA证书是集群所有节点共享的,只需要创建一个CA证书,后续创建的所有证书都由它签名。

3.3 创建CA证书配置文件

CA证书的配置文件用于配置根证书的使用场景(profile)和具体的参数(usage,过期时间,服务端认证,客户端认证,加密等),后续在前签名其他证书的时候,需要制定特定场景。

cat > ca-config.json <<EOF
{
  "signing": {
    "default": {
      "expiry": "87600h"
    },
    "profiles": {
      "kubernetes": {
        "usages": [
            "signing",
            "key encipherment",
            "server auth",
            "client auth"
        ],
        "expiry": "87600h"
      }
    }
  }
}
EOF
  • signing:表示该证书可以用于签名其他证书,生成的ca.pem证书中CA=TRUE;
  • server auth:表示client可以用该证书对server提供的证书进行验证;
  • client auth:表示server可以用该证书对client提供的证书进行验证;

3.4 创建证书签名请求文件

cat > ca-csr.json <<EOF
{
  "CN": "kubernetes",
  "key": {
    "algo": "rsa",
    "size": 2048
  },
  "names": [
    {
      "C": "CN",
      "ST": "BeiJing",
      "L": "BeiJing",
      "O": "k8s",
      "OU": "4Paradigm"
    }
  ]
}
EOF
  • CN:Common Name,kube-apiserver从证书中提取该字段作为请求的用户名(User Name),浏览器用该字段验证网站是否合法;
  • O: Organization,kube-apiserver从证书中提取该字段作为请求用户所属的组(Group);
  • kube-apiserver将提取的User、Group作为RBAC授权的用户标识;

3.5 生成CA证书和私钥

cfssl gencert -initca ca-csr.json | cfssljson -bare ca
ls ca*

3.6 分发证书文件

source /opt/k8s/bin/environment.sh # 导入 NODE_IPS 环境变量
for node_ip in ${NODE_IPS[@]}
  do
    echo ">>> ${node_ip}"
    ssh k8s@${node_ip} "sudo mkdir -p /etc/kubernetes/cert && sudo chown -R k8s /etc/kubernetes"
    scp ca*.pem ca-config.json k8s@${node_ip}:/etc/kubernetes/cert
  done

参考

  • 各种CA证书类型:https://github.com/kubernetes-incubator/apiserver-builder/blob/master/docs/concepts/auth.md

 

二进制安装kubernetes v1.11.2 (第二章 创建CA证书和秘钥文件)

标签:需要   json   共享   ca证书   cer   bat   conf   dig   for   

原文地址:https://www.cnblogs.com/aast/p/9842774.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!