附008.Kubernetes TLS证书介绍及创建
一 Kubernetes证书
1.1 TLS
1.2 CA证书创建方式
- openssl
- cfssl
- easyrsa
1.3 Kubernetes组件证书
- etcd证书:etcd集群之间通信加密使用的TLS证书。
- kube-apiserver证书:配置kube-apiserver组件的证书。
- kube-controller-manager证书:用于和kube-apiserver通信认证的证书。
- kube-scheduler证书:用于和kube-apiserver通信认证的证书。
- kubelet证书【可选,非必需】:用于和kube-apiserver通信认证的证书,如果使用TLS Bootstarp认证方式,将没有必要配置。
- kube-proxy证书【可选,非必需】:用于和kube-apiserver通信认证的证书,如果使用TLS Bootstarp认证方式,将没有必要配置。
二 openssl生成证书
2.1 openssl创建证书
[root@master ~]# MASTER_IP=172.24.8.71 #定义MASTER_IP
[root@master ~]# mkdir cert #建议创建独立存储证书的目录
[root@master ~]# cd cert
[root@master cert]# openssl genrsa -out ca.key 2048 #生成一个 2048 bit的ca.key
[root@master cert]# openssl req -x509 -new -nodes -key ca.key -subj "/CN=${MASTER_IP}" -days 10000 -out ca.crt #根据 ca.key 生成一个 ca.crt(使用 -days 设置证书的有效时间)
[root@master cert]# openssl genrsa -out server.key 2048 #生成一个 2048 bit 的 server.key
[root@master cert]# openssl req -new -key server.key -subj "/CN=${MASTER_IP}" -out server.csr #根据 server.key 生成一个 server.csr
[root@master cert]# openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt -days 10000 #根据 ca.key、ca.crt 和 server.csr 生成 server.crt
[root@master cert]# openssl x509 -noout -text -in ./server.crt
三 cfssl生成证书
3.1 cfssl创建证书
[root@master ~]# curl -L https://pkg.cfssl.org/R1.2/cfssl_linux-amd64 -o /usr/local/bin/cfssl #下载cfssl软件
[root@master ~]# chmod u+x /usr/local/bin/cfssl
[root@master ~]# curl -L https://pkg.cfssl.org/R1.2/cfssljson_linux-amd64 -o /usr/local/bin/cfssljson #下载json模板
[root@master ~]# chmod u+x /usr/local/bin/cfssljson
[root@master ~]# curl -L https://pkg.cfssl.org/R1.2/cfssl-certinfo_linux-amd64 -o /usr/local/bin/cfssl-certinfo
[root@master ~]# chmod u+x /usr/local/bin/cfssl-certinfo
[root@master ~]# mkdir cert
[root@master ~]# cd cert/
[root@master cert]# cfssl print-defaults config > config.json
[root@master cert]# cfssl print-defaults csr > csr.json #创建模版配置json文件
[root@master cert]# cp config.json ca-config.json #复制一份作为CA的配置文件
[root@master cert]# vi ca-config.json
{
"signing": {
"default": {
"expiry": "168h"
},
"profiles": {
"kubernetes": {
"expiry": "8760h",
"usages": [
"signing",
"key encipherment",
"server auth"
"client auth"
]
}
}
}
}
- signing: 表示该证书可用于签名其它证书;生成的ca.pem 证书中CA=TRUE;
- server auth: 表示client 可以用该CA 对server 提供的证书进行校验;
- client auth: 表示server 可以用该CA 对client 提供的证书进行验证。
[root@master cert]# cp csr.json ca-csr.json #复制一份作为CA的配置文件
[root@master cert]# vi ca-csr.json
{
"CN": "kubernetes",
"key": {
"algo": "rsa",
"size": 2048
},
"names": [
{
"C": "CN",
"ST": "Shanghai",
"L": "Shanghai",
"O": "k8s",
"OU": "System"
}
]
}
- CN: Common Name,kube-apiserver 从证书中提取该字段作为请求的用户名(User Name);浏览器使用该字段验证网站是否合法;
- C:country;
- ST:state;
- L:city;
- O: Organization,kube-apiserver 从证书中提取该字段作为请求用户所属的组(Group);
- OU:organization unit。
[root@master cert]# cfssl gencert -initca ca-csr.json | cfssljson -bare ca #生成CA密钥(ca-key.pem)和证书(ca.pem)
四 easyrsa生成证书
4.1 easyrsa创建证书
[root@master ~]# mkdir cert
[root@master ~]# curl -LO https://storage.googleapis.com/kubernetes-release/easy-rsa/easy-rsa.tar.gz #下载easyrsa软件
[root@master ~]# tar xzf easy-rsa.tar.gz
[root@master ~]# cd easy-rsa-master/easyrsa3
[root@master easyrsa3]# ./easyrsa init-pki
[root@master easyrsa3]# MASTER_IP=172.24.8.71 #定义MASTER_IP
[root@master easyrsa3]# ./easyrsa --batch "--req-cn=${MASTER_IP}@`date +%s`" build-ca nopass #生成 CA
[root@master easyrsa3]# ./easyrsa --subject-alt-name="IP:${MASTER_IP}" build-server-full server nopass #生成服务器证书和密钥
[root@master easyrsa3]# cp pki/ca.crt pki/issued/server.crt pki/private/server.key /root/cert/ #复制相关证书
- --client-ca-file=/root/cert/ca.crt
- --tls-cert-file=/root/cert/server.crt
- --tls-private-key-file=/root/cert/server.key
五 相关证书及配置项
5.1 API Server 证书
- --tls-cert-file string
- --tls-private-key-file string
5.2 Client CA 证书
- --client-ca-file string
5.3 请求头证书
- --requestheader-allowed-names stringSlice
- --requestheader-client-ca-file string
5.4 kubelet证书
- --kubelet-certificate-authority string
- --kubelet-client-certificate string
- --kubelet-client-key string
- --client-ca-file string
- --tls-cert-file string
- --tls-private-key-file string
- --service-account-key-file stringArray
- --service-account-signing-key-file string
附008.Kubernetes TLS证书介绍及创建的更多相关文章
- 附024.Kubernetes全系列大总结
Kubernetes全系列总结如下,后期不定期更新.欢迎基于学习.交流目的的转载和分享,禁止任何商业盗用,同时希望能带上原文出处,尊重ITer的成果,也是尊重知识.若发现任何错误或纰漏,留言反馈或右侧 ...
- kubernetes(K8S)创建自签TLS证书
TLS证书用于进行通信使用,组件需要证书关系如下: 组件 需要使用的证书 etcd ca.pem server.pem server-key.pem flannel ca.pem server.pem ...
- 二进制搭建kubernetes多master集群【一、使用TLS证书搭建etcd集群】
上一篇我们介绍了kubernetes集群架构以及系统参数配置,参考:二进制搭建kubernetes多master集群[开篇.集群环境和功能介绍] 下面本文etcd集群才用三台centos7.5搭建完成 ...
- 在阿里云托管kubernetes上利用 cert-manager 自动签发 TLS 证书[无坑版]
前言 排错的过程是痛苦的也是有趣的. 运维乃至IT,排错能力是拉开人与人之间的重要差距. 本篇会记录我的排错之旅. 由来 现如今我司所有业务都运行在阿里云托管kubernetes环境上,因为前端需要对 ...
- 4.第三篇 PKI基础概念、cfssl工具介绍及kubernetes中证书
文章转载自:https://mp.weixin.qq.com/s?__biz=MzI1MDgwNzQ1MQ==&mid=2247483787&idx=1&sn=08dd3404 ...
- 基于TLS证书手动部署kubernetes集群(下)
一.master节点组件部署 承接上篇文章--基于TLS证书手动部署kubernetes集群(上),我们已经部署好了etcd集群.flannel网络以及每个节点的docker,接下来部署master节 ...
- 基于TLS证书手动部署kubernetes集群(上)
一.简介 Kubernetes是Google在2014年6月开源的一个容器集群管理系统,使用Go语言开发,Kubernetes也叫K8S. K8S是Google内部一个叫Borg的容器集群管理系统衍生 ...
- Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列之自签TLS证书及Etcd集群部署(二)
0.前言 整体架构目录:ASP.NET Core分布式项目实战-目录 k8s架构目录:Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列目录 一.服务器设置 1.把每一 ...
- Kubernetes 集群部署(1) -- 自签 TLS 证书
集群功能各模块功能描述: Master节点:主要由四个模块组成,APIServer,schedule, controller-manager, etcd APIServer: APIServer负责对 ...
随机推荐
- 系统性能指标之 vmstat
系统性能指标 top top - 19:59:04 up 219 days, 21:51, 2 users, load average: 0.06, 0.06, 0.05 Tasks: 84 tota ...
- 不能进入String.class调试
Window --> Preferences --> Java --> Compiler --> Classfile Generation: "add line nu ...
- NYOJ 24 素数的距离问题
素数的距离问题 时间限制:3000 ms | 内存限制:65535 KB 难度:2 描写叙述 如今给出你一些数.要求你写出一个程序,输出这些整数相邻近期的素数,并输出其相距长度.假设左右有等距离长 ...
- c#开发移动APP-Xamarin入门
原文:c#开发移动APP-Xamarin入门 如果您在.net环境下做开发,并且对WPF技术有一定了解及应用,同时也想进入移动App开发领域,推荐使用Xamarin开发移动应用 关于Xamarin不做 ...
- mybatis 使用经验小结 good
一.多数据源问题 主要思路是把dataSource.sqlSesstionFactory(用来产生sqlSession).MapperScannerConfigurer在配置中区分开,各Mapper对 ...
- ehcache hibernate4整合问题
当在原有hibernate使用ehcache缓存的项目中加入ehcache时,报如下错误时 Caused by: org.hibernate.service.spi.ServiceException: ...
- Golang写https服务端
1. 生成私钥openssl genrsa -out key.pem 20482. 生成证书openssl req -new -x509 -key key.pem -out cert.pem -day ...
- LeapMotion Demo1
原文:LeapMotion Demo1 LeapMotion SDK For c# 只提供了一个Sample.cs. Leap Motion App Home 可以给初入手者提供很好的用户 ...
- .net core注入服务
1.在Startup的ConfigureServices里面,通过IServiceCollection进行注入 public void ConfigureServices(IServiceCollec ...
- .Net 开源服务 and Net站点
小泥鳅博客系统也是一个.NET平台的开源免费博客系统,创建于2008年夏天,基于.Net平台开发,拥有完整的文章发布,评论,订阅,标签等功能,满足个人/团队信息发布需求,可作为Blog,CMS,甚至建 ...