附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负责对 ...
随机推荐
- EditText 详细信息(监听事件时,输入改变、透明背景、提示改变文字颜色、密文输入)
1.对EditText输入监视.给EditText 捆绑 addTextChangedListener 监控事件 能够. 2.EditText输入内容.密文显示: android:password=& ...
- Linux性能测试 ps命令
名称:ps 使用权限:所有使用者 使用方式:ps [options] [--help] 说明:显示瞬间行程 (process) 的动态 参数: ps 的参数非常多, 在此仅列出几个常用的参数并大略介绍 ...
- python实现DES加密算法和3DES加密算法
pyDes.py ############################################################################# # Documentati ...
- 新浪微博API OAuth1 Python3客户端
#!/usr/local/bin/python3 # coding=gbk # http://www.cnblogs.com/txw1958/ # import os, io, sys, re, ti ...
- STM32处理器AD难度整理
1.STM32的AD变化,任务组可以转换成两组:规则组和注射组.随机序列按随机顺序变换多种渠道构成了一组转换.例如.能够完成转换中,例如按照以下顺序:通道3.通道8.通道2.通道2.通道0.通道2.通 ...
- WebService它Soap头验证进入
1.创建一个新的类.如"AuthHeaderUser",在传承"System.Web.Services.Protocols.SoapHeader"类别 2.新W ...
- 知乎C++问题整理
如何平衡性能,合理选择C++STL集装箱? ANSER: 首先要搞清楚,假设STL问题,那么问题出在哪里? STL能够简单地觉得就是算法+数据结构,全部容器的算法选择和实现都是经过精心设计和严格測试的 ...
- fzu-1753 Another Easy Problem-高速求N!多少个月p
它计算每个C(N,M)什么号码乘以像.... #include <iostream> #include<stdio.h> #include<vector> #inc ...
- gtest写了第一个测试用例错误和结算过程
安装好gtest后,编写第一个測试案例test_main.cpp #include <iostream> #include <gtest/gtest.h> using name ...
- abp项目 从sql server迁移至mysql
官方资料:https://aspnetboilerplate.com/Pages/Documents/EF-MySql-Integration 实验发现,还差了两步 整理一下,步骤如下: 1.引用My ...