根據(jù)不同服務(wù)使用的證書的不同單獨(dú)配置即可。

其它幾個(gè)類證書文件
token.csv

該文件為一個(gè)用戶的描述文件,基本格式為 Token,用戶名,UID,用戶組;這個(gè)文件在 apiserver 啟動(dòng)時(shí)被 apiserver 加載,  
然后就相當(dāng)于在集群內(nèi)創(chuàng)建了一個(gè)這個(gè)用戶;接下來(lái)就可以用 RBAC 給他授權(quán)

bootstrap.kubeconfig

該文件中內(nèi)置了 token.csv 中用戶的 Token,以及 apiserver CA 證書;kubelet 首次啟動(dòng)會(huì)加載此文件,  
使用 apiserver CA 證書建立與 apiserver 的 TLS 通訊,使用其中的用戶 Token 作為身份標(biāo)識(shí)像 apiserver 發(fā)起 CSR 請(qǐng)求

生成證書過(guò)程簡(jiǎn)介
安裝cfssl

CFSSL是CloudFlare開(kāi)源的一款PKI/TLS工具。CFSSL 包含一個(gè)命令行工具和一個(gè)用于 簽名,驗(yàn)證并且捆綁TLS證書的 HTTP API 服務(wù).
使用Go語(yǔ)言編寫。

CFSSL包括:

一組用于生成自定義 TLS PKI 的工具;
cfssl程序,是CFSSL的命令行工具;
multirootca程序是可以使用多個(gè)簽名密鑰的證書頒發(fā)機(jī)構(gòu)服務(wù)器;
mkbundle程序用于構(gòu)建證書池;
cfssljson程序,從cfssl和multirootca程序獲取JSON輸出,并將證書,密鑰,CSR和bundle寫入磁盤;

PKI借助數(shù)字證書和公鑰加密技術(shù)提供可信任的網(wǎng)絡(luò)身份。通常,證書就是一個(gè)包含如下身份信息的文件:

證書所有組織的信息
公鑰
證書頒發(fā)組織的信息
證書頒發(fā)組織授予的權(quán)限,如證書有效期、適用的主機(jī)名、用途等
使用證書頒發(fā)組織私鑰創(chuàng)建的數(shù)字簽名

下載

wget https://pkg.cfssl.org/R1.2/cfssl_linux-amd64
wget https://pkg.cfssl.org/R1.2/cfssljson_linux-amd64
wget https://pkg.cfssl.org/R1.2/cfssl-certinfo_linux-amd64

安裝

chmod  x cfssl_linux-amd64 cfssljson_linux-amd64 cfssl-certinfo_linux-amd64
mv cfssl_linux-amd64 /usr/local/bin/cfssl
mv cfssljson_linux-amd64 /usr/local/bin/cfssljson
mv cfssl-certinfo_linux-amd64 /usr/bin/cfssl-certinfo

證書生成過(guò)程演示
制作server ca證書

cat << EOF | tee ca-config.json
{
  signing: {
    default: {
      expiry: 87600h
    },
    profiles: {
      server: {
         expiry: 87600h,
         usages: [
            signing,
            key encipherment,
            server auth,
            client auth
        ]
      }
    }
  }
}
EOF

字段說(shuō)明:
expiry : 87600h  10 年
ca-config.json:可以定義多個(gè) profiles,分別指定不同的過(guò)期時(shí)間、使用場(chǎng)景等參數(shù);后續(xù)在簽名證書時(shí)使用某個(gè) profile;
signing:表示該證書可用于簽名其它證書;生成的 ca.pem 證書中 CA=TRUE;
server auth:表示client可以用該 CA 對(duì)server提供的證書進(jìn)行驗(yàn)證;
client auth:表示server可以用該CA對(duì)client提供的證書進(jìn)行驗(yàn)證;
cat << EOF | tee ca-csr.json
{
    CN: server,
    key: {
        algo: rsa,
        size: 2048
    },
    names: [
        {
            C: CN,
            L: Beijing,
            ST: Beijing,
            O: k8s,
            OU: System
        }
    ]
}
EOF

字段說(shuō)明:
CN:Common Name,kube-apiserver 從證書中提取該字段作為請(qǐng)求的用戶名 (User Name);瀏覽器使用該字段驗(yàn)證網(wǎng)站是否合法;
O:Organization,kube-apiserver 從證書中提取該字段作為請(qǐng)求用戶所屬的組 (Group);

生成CA證書和私鑰

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

驗(yàn)證ca 證書

k8s-ssl]# ls
ca-config.json
ca-csr.json

ca.csr
ca-key.pem
ca.pem

制作server證書

cat << EOF | tee server-csr.json
{
    CN: server,
    hosts: [
      10.254.0.1,
      127.0.0.1,
      172.20.101.157,
      172.20.101.165,
      172.20.101.164,
      172.20.101.160,
      172.20.101.166,
      172.20.101.167,
      server,
      server.default,
      server.default.svc,
      server.default.svc.cluster,
      server.default.svc.cluster.local
    ],
    key: {
        algo: rsa,
        size: 2048
    },
    names: [
        {
            C: CN,
            L: Beijing,
            ST: Beijing,
            O: k8s,
            OU: System
        }
    ]
}
EOF

字段說(shuō)明:
如果hosts字段不為空則需要指定授權(quán)使用該證書的IP或域名列表,該證書后續(xù)被 etcd 集群和 kubernetes master 集群使用,

上面分別指定了 etcd 集群:
      172.20.101.157,
      172.20.101.165,
      172.20.101.164,
kubernetes master 集群的主機(jī) IP:
      172.20.101.157,
      172.20.101.165,
      172.20.101.164,
kubernetes node 節(jié)點(diǎn) IP:
      172.20.101.160,
      172.20.101.166,
      172.20.101.167,

service-cluster-ip-range 網(wǎng)段和第一個(gè)IP,
      10.254.0.1,

也可以寫物理節(jié)點(diǎn)的主機(jī)名。
另外集群配置高可用使用vip的IP地址也填上。

生成 kubernetes 證書和私鑰

cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=server server-csr.json | cfssljson -bare server

驗(yàn)證

ll server*

server.csr
server-csr.json
server-key.pem
server.pem

制作kube-proxy證書

cat << EOF | tee kube-proxy-csr.json
{
  CN: system:kube-proxy,
  hosts: [],
  key: {
    algo: rsa,
    size: 2048
  },
  names: [
    {
      C: CN,
      L: Beijing,
      ST: Beijing,
      O: k8s,
      OU: System
    }
  ]
}
EOF

字段說(shuō)明:
CN 指定該證書的Use為system:kube-proxy;
kube-apiserver 預(yù)定義的 RoleBinding system:node-proxier 將User system:kube-proxy 與 Role system:node-proxier 綁定,該 Role 授予了調(diào)用 kube-apiserver Proxy 相關(guān) API 的權(quán)限;

創(chuàng)建 kube-proxy 證書

cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=server kube-proxy-csr.json | cfssljson -bare kube-proxy

驗(yàn)證

kube-*

kube-proxy.csr
kube-proxy-csr.json
kube-proxy-key.pem
kube-proxy.pem

創(chuàng)建 admin 證書

cat >admin-csr.json<<EOF
{
    CN: admin,
    key: {
        algo: rsa,
        size: 2048
    },
    names: [
        {
            C: CN,
            ST: BeiJing,
            L: BeiJing,
            O: system:masters,
            OU: System
        }
    ]
}
EOF

字段說(shuō)明:
O 指定該證書的 Group 為 system:masters,kubelet 使用該證書訪問(wèn) kube-apiserver 時(shí) ,由于證書被 CA 簽名,所以認(rèn)證通過(guò),  
同時(shí)由于證書用戶組為經(jīng)過(guò)預(yù)授權(quán)的 system:masters,所以被授予訪問(wèn)所有 API 的權(quán)限;

生成 admin ca

cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=server admin-csr.json | cfssljson -bare admin

驗(yàn)證

ll admin*

admin.csr
admin-csr.json
admin-key.pem
admin.pem

清理 csr srl

find . -name *.csr -o -name *.srl|xargs  rm -f

驗(yàn)證證書:
使用 opsnssl 命令驗(yàn)證key內(nèi)容

openssl x509  -noout -text -in  server.pem

cfssl-certinfo -cert server.pem

后面的pem可以換成已生成key文件,然后核對(duì)key內(nèi)容。

集群核對(duì)key信息

集群搭建完成,通過(guò)命令: kubectl get clusterrolebinding cluster-admin -o yaml ,查看 clusterrolebinding cluster-admin 的 subjects 的 kind 是 Group,name 是 system:masters。 roleRef 對(duì)象是 ClusterRole cluster-admin。

即:system:masters Group 的 user 或者 serviceAccount 都擁有 cluster-admin 的角色。 因此在使用 kubectl 命令時(shí)候,  
才擁有整個(gè)集群的管理權(quán)限??梢允褂?kubectl get clusterrolebinding cluster-admin -o yaml 來(lái)查看。

參考文檔:

https://blog.51cto.com/lookingdream/2176846
https://jimmysong.io/kubernetes-handbook/practice/create-tls-and-secret-key.html

更多關(guān)于云服務(wù)器,域名注冊(cè),虛擬主機(jī)的問(wèn)題,請(qǐng)?jiān)L問(wèn)三五互聯(lián)官網(wǎng):m.shinetop.cn

贊(0)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享網(wǎng)絡(luò)內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。郵箱:3140448839@qq.com。本站原創(chuàng)內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明出處:三五互聯(lián)知識(shí)庫(kù) » kubernetes ssl證書梳理

登錄

找回密碼

注冊(cè)

主站蜘蛛池模板: 亚洲制服无码一区二区三区| 爆乳日韩尤物无码一区| 国产最大成人亚洲精品| 色欧美片视频在线观看| 久久亚洲精品人成综合网| 国产日韩精品一区在线不卡| 国产情侣激情在线对白| 国产精品揄拍100视频| 98日韩精品人妻一二区| 亚洲男人AV天堂午夜在| 国产高清亚洲一区亚洲二区| 一本一道av无码中文字幕麻豆| 国产精品午夜福利视频| 国产成人精品久久一区二区| 国产对白老熟女正在播放| 一区二区免费高清观看国产丝瓜| 亚洲 欧美 动漫 少妇 自拍| 国产精品色一区二区三区| 精品无码人妻| 精品国产一区二区三区卡| 国产中文三级全黄| 亚洲成人av在线高清| 元码人妻精品一区二区三区9| 无码人妻一区二区三区兔费| 亚洲国产精品一区在线看| 伊人色综合一区二区三区影院视频| 少妇被粗大的猛烈进出| 久久精产国品一二三产品| 图片区小说区av区| 99久久精品费精品国产一区二| 四虎在线播放亚洲成人| 中文字幕有码日韩精品| 国内永久福利在线视频图片| 国产av一区二区三区综合| 久久国产精品精品国产色| 亚洲男人天堂2018| 国产av麻豆mag剧集| 亚洲欧洲日产国无高清码图片| 美女一区二区三区亚洲麻豆| 无码人妻精品一区二区三区下载| 999精品全免费观看视频|