1. kubernetes创建跟证书和秘钥

目录

  • 1. kubernetes创建跟证书和秘钥
  • 2. ETCD集群部署及维护
  • 3. kubectl部署以及基本使用
  • 4. Master节点部署及维护
    • 4.1 kube-apiserver
    • 4.2 kube-scheduler
    • 4.3 kube-controller-manager
  • 5. Node节点部署及维护
    • 5.1 Flannel部署及维护
    • 5.2 kubernetes runtime部署及维护
    • 5.3 kubelet
    • 5.4 kube-proxy

00.安装CFSSL

cfssl和 cfssljson 命令行工具用于提供 PKI Infrastructure 基础设施与生成 TLS 证书。

Linux

# 或许你需要先执行 `yum install -y wget` 以安装 wget
wget https://pkg.cfssl.org/R1.2/cfssl_linux-amd64
wget https://pkg.cfssl.org/R1.2/cfssljson_linux-amd64
chmod +x cfssl_linux-amd64 cfssljson_linux-amd64
sudo mv cfssl_linux-amd64 /usr/local/bin/cfssl
sudo mv cfssljson_linux-amd64 /usr/local/bin/cfssljson

验证

验证 cfssl 的版本为 1.2.0 或是更高

$ cfssl version
Version: 1.2.0
Revision: dev
Runtime: go1.6

注意:cfssljson 命令行工具没有提供查询版本的方法。

01.配置CA并创建TLS证书

我们将使用 CloudFlare's PKI 工具 cfssl 来配置 PKI Infrastructure,然后使用它去创建 Certificate Authority(CA),并为 etcd、kube-apiserver、kubelet 以及 kube-proxy 创建 TLS 证书。

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

新建 CA 配置文件

mkdir /root/certificated
cd /root/certificated
cfssl print-defaults config > config.json
cfssl print-defaults csr > csr.json
# 根据config.json文件的格式创建如下的ca-config.json文件
# 过期时间设置成了 87600h
cat > ca-config.json <

字段说明

  • ca-config.json:可以定义多个 profiles,分别指定不同的过期时间、使用场景等参数;后续在签名证书时使用某个 profile;
  • signing:表示该证书可用于签名其它证书;生成的 ca.pem 证书中 CA=TRUE
  • server auth:表示client可以用该 CA 对server提供的证书进行验证;
  • client auth:表示server可以用该CA对client提供的证书进行验证;

创建 CA 证书签名请求

创建 ca-csr.json 文件,内容如下:

cat > ca-csr.json << EOF 
{
  "CN": "kubernetes",
  "key": {
    "algo": "rsa",
    "size": 2048
  },
  "names": [
    {
      "C": "CN",
      "ST": "BeiJing",
      "L": "BeiJing",
      "O": "kubernetes",
      "OU": "System"
    }
  ],
    "ca": {
       "expiry": "87600h"
    }
}
EOF
  • CNCommon Name,kube-apiserver 从证书中提取该字段作为请求的用户名 (User Name);浏览器使用该字段验证网站是否合法;

  • OOrganization,kube-apiserver 从证书中提取该字段作为请求用户所属的组 (Group);

  • C: 国家

  • ST: 省份

  • L: 城市

  • OU: 部门或单位名称

生成 CA 凭证和私钥

cfssl gencert -initca ca-csr.json | cfssl-json -bare ca

结果将生成以下两个文件:

ca-key.pem
ca.pem

你可能感兴趣的:(1. kubernetes创建跟证书和秘钥)