前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >004.Kubernetes二进制部署创建证书

004.Kubernetes二进制部署创建证书

作者头像
木二
发布2019-11-15 17:24:47
4000
发布2019-11-15 17:24:47
举报
文章被收录于专栏:木二天空木二天空

一 创建CA证书和密钥

1.1 安装cfssl工具集

代码语言:javascript
复制
  1 [root@k8smaster01 ~]# mkdir -p /opt/k8s/cert
  2 
  3 [root@k8smaster01 ~]# curl -L https://pkg.cfssl.org/R1.2/cfssl_linux-amd64 -o /opt/k8s/bin/cfssl	#下载cfssl软件
  4 [root@k8smaster01 ~]# curl -L https://pkg.cfssl.org/R1.2/cfssljson_linux-amd64 -o /opt/k8s/bin/cfssljson	#下载json模板
  5 [root@k8smaster01 ~]# curl -L https://pkg.cfssl.org/R1.2/cfssl-certinfo_linux-amd64 -o /opt/k8s/bin/cfssl-certinfo
  6 [root@k8smaster01 ~]# chmod u+x /opt/k8s/bin/*
  7 [root@k8smaster01 ~]# export PATH=/opt/k8s/bin:$PATH

1.2 创建根证书

代码语言:javascript
复制
  1 [root@k8smaster01 ~]# mkdir -p /opt/k8s/work
  2 [root@k8smaster01 ~]# cd /opt/k8s/work
  3 [root@k8smaster01 work]# cfssl print-defaults config > config.json
  4 [root@k8smaster01 work]# cfssl print-defaults csr > csr.json					#创建模版配置json文件
  5 [root@k8smaster01 work]# cp config.json ca-config.json					#复制一份作为CA的配置文件
  6 [root@k8smaster01 work]# cat > ca-config.json <<EOF
  7 {
  8     "signing": {
  9         "default": {
 10             "expiry": "168h"
 11         },
 12         "profiles": {
 13             "kubernetes": {
 14                 "expiry": "87600h",
 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 提供的证书进行验证。
代码语言:javascript
复制
  1 [root@k8smaster01 work]# cp csr.json ca-csr.json					#复制一份作为CA的证书签名请求文件
  2 [root@k8smaster01 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 }
 19 EOF

字段解释:

  • CN: Common Name,kube-apiserver 从证书中提取该字段作为请求的用户名(User Name);浏览器使用该字段验证网站是否合法;
  • C:country;
  • ST:state;
  • L:city;
  • O: Organization,kube-apiserver 从证书中提取该字段作为请求用户所属的组(Group);
  • OU:organization unit。
代码语言:javascript
复制
  1 [root@k8smaster01 ~]# cd /opt/k8s/work
  2 [root@k8smaster01 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目录下。

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

1.3 分发证书

代码语言:javascript
复制
  1 [root@k8smaster01 ~]# cd /opt/k8s/work
  2 [root@k8smaster01 work]# source /opt/k8s/bin/environment.sh
  3 [root@k8smaster01 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
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-11-15 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一 创建CA证书和密钥
    • 1.1 安装cfssl工具集
      • 1.2 创建根证书
        • 1.3 分发证书
        相关产品与服务
        容器服务
        腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档