zoukankan      html  css  js  c++  java
  • 004.Kubernetes二进制部署创建证书

    一 创建CA证书和密钥

    1.1 安装cfssl工具集

      1 [root@master01 ~]# mkdir -p /opt/k8s/cert
      2 
      3 [root@master01 ~]# curl -L https://pkg.cfssl.org/R1.2/cfssl_linux-amd64 -o /opt/k8s/bin/cfssl         #下载cfssl软件
      4 [root@master01 ~]# curl -L https://pkg.cfssl.org/R1.2/cfssljson_linux-amd64 -o /opt/k8s/bin/cfssljson #下载json模板
      5 [root@master01 ~]# curl -L https://pkg.cfssl.org/R1.2/cfssl-certinfo_linux-amd64 -o /opt/k8s/bin/cfssl-certinfo
      6 [root@master01 ~]# chmod u+x /opt/k8s/bin/*

    提示:本步骤操作仅需要在master01节点操作。

    1.2 创建根证书配置文件

      1 [root@master01 ~]# mkdir -p /opt/k8s/work
      2 [root@master01 ~]# cd /opt/k8s/work
      3 [root@master01 work]# cfssl print-defaults config > config.json
      4 [root@master01 work]# cfssl print-defaults csr > csr.json	#创建模版配置json文件
      5 [root@master01 work]# cp config.json ca-config.json		#复制一份作为CA的配置文件
      6 [root@master01 work]# cat > ca-config.json <<EOF
      7 {
      8     "signing": {
      9         "default": {
     10             "expiry": "876000h"
     11         },
     12         "profiles": {
     13             "kubernetes": {
     14                 "expiry": "876000h",
     15                 "usages": [
     16                     "signing",
     17                     "key encipherment",
     18                     "server auth",
     19                     "client auth"
     20                 ]
     21             }
     22         }
     23     }
     24 }
     25 EOF

    字段解释:

    config.json:可以定义多个profiles,分别指定不同的过期时间、使用场景等参数;后续在签名证书时使用某个profile;

    • signing: 表示该证书可用于签名其它证书;生成的ca.pem 证书中CA=TRUE;
    • server auth: 表示client 可以用该CA 对server 提供的证书进行校验;
    • client auth: 表示server 可以用该CA 对client 提供的证书进行验证;
    • "expiry": "876000h":表示证书有效期设置为 100 年。

    提示:本步骤操作仅需要在master01节点操作。

    1.3 创建根证书签名请求文件

      1 [root@master01 work]# cp csr.json ca-csr.json	#复制一份作为CA的证书签名请求文件
      2 [root@master01 work]# cat > ca-csr.json <<EOF
      3 {
      4     "CN": "kubernetes",
      5     "key": {
      6         "algo": "rsa",
      7         "size": 2048
      8     },
      9     "names": [
     10         {
     11             "C": "CN",
     12             "ST": "Shanghai",
     13             "L": "Shanghai",
     14             "O": "k8s",
     15             "OU": "System"
     16         }
     17     ],
     18     "ca": {
     19         "expiry": "876000h"
     20  }
     21 }
     22 EOF

    提示:本步骤操作仅需要在master01节点操作。

    字段解释:

    • CN: Common Name,kube-apiserver 从证书中提取该字段作为请求的用户名(User Name);浏览器使用该字段验证网站是否合法;
    • C:country;
    • ST:state;
    • L:city;
    • O: Organization,kube-apiserver 从证书中提取该字段作为请求用户所属的组(Group);
    • OU:organization unit。
      1 [root@master01 work]# cfssl gencert -initca ca-csr.json | cfssljson -bare ca #生成CA密钥(ca-key.pem)和证书(ca.pem)

    提示:生成证书后,Kubernetes集群需要双向TLS认证,则可将ca-key.pem和ca.pem拷贝到所有要部署的机器的/etc/kubernetes/ssl目录下。不同证书 csr 文件的 CN、C、ST、L、O、OU 组合必须不同,否则可能出现 PEER'S CERTIFICATE HAS AN INVALID SIGNATURE 错误;

    后续创建证书的 csr 文件时,CN 都不相同(C、ST、L、O、OU 相同),以达到区分的目的;

    更多TLS证书创建方式参考《附008.Kubernetes TLS证书介绍及创建》。

    1.3 分发证书

      1 [root@master01 ~]# cd /opt/k8s/work
      2 [root@master01 work]# source /root/environment.sh
      3 [root@master01 work]# for all_ip in ${ALL_IPS[@]}
      4   do
      5     echo ">>> ${all_ip}"
      6     ssh root@${all_ip} "mkdir -p /etc/kubernetes/cert"
      7     scp ca*.pem ca-config.json root@${all_ip}:/etc/kubernetes/cert
      8   done

    提示:本步骤操作仅需要在master01节点操作。


  • 相关阅读:
    wxpython 文本框TextCtrl
    python py文件转换成exe
    安装NTP到CentOS(YUM)
    安装NFS到CentOS(YUM)
    安装MongoDB到Ubuntu(APT)
    安装MongoDB到CentOS(YUM)
    安装Mailx到CentOS(YUM)
    安装MYSQL到Ubuntu(APT)
    安装MYSQL到CentOS(YUM)
    安装Kubernetes到CentOS(Minikube)
  • 原文地址:https://www.cnblogs.com/itzgr/p/11865146.html
Copyright © 2011-2022 走看看