高可用Kubernetes集群-2. ca证书与秘钥
四.CA证书与秘钥
kubernetes集群安全访问有两种方式:"基于CA签名的双向数字证书认证"与"基于BASE或TOKEN的简单认证",生产环境推荐使用"基于CA签名的双向数字证书认证"。
本文档采用 CloudFlare 的 PKI 工具集 cfssl 来生成 Certificate Authority (CA) 证书和秘钥文件,CA 是自签名的证书,用来签名后续创建的其它 TLS 证书。
以kubenode1为例,kubenode2&kubenode3做适当小调整。
1. 安装CFSSL
- [root@kubenode1 ~]# mkdir -p /usr/local/cfssl
- [root@kubenode1 ~]# cd /usr/local/cfssl/
- # cfssl
- [root@kubenode1 cfssl]# wget https://pkg.cfssl.org/R1.2/cfssl_linux-amd64
- [root@kubenode1 cfssl]# mv cfssl_linux-amd64 cfssl
- [root@kubenode1 cfssl]# chmod +x cfssl
- # cfssl-certinfo
- [root@kubenode1 cfssl]# wget https://pkg.cfssl.org/R1.2/cfssl-certinfo_linux-amd64
- [root@kubenode1 cfssl]# mv cfssl-certinfo_linux-amd64 cfssl-certinfo
- [root@kubenode1 cfssl]# chmod +x cfssl-certinfo
- # cfssljson
- [root@kubenode1 cfssl]# wget https://pkg.cfssl.org/R1.2/cfssljson_linux-amd64
- [root@kubenode1 cfssl]# mv cfssljson_linux-amd64 cfssljson
- [root@kubenode1 cfssl]# chmod +x cfssljson
2. 生成CA模板
- # kubenode1节点完成即可
- [root@kubenode1 ~]# cd /usr/local/cfssl/
- # 生产CA配置文件模板
- [root@kubenode1 cfssl]# cfssl print-defaults config > config.json
- # 生产CA证书签名请求文件模板
- [root@kubenode1 cfssl]# cfssl print-defaults csr > csr.json
3. CA配置文件
- # kubenode1节点完成即可,以下的CA证书,签名等可通过scp分发到kubenode2&kubenode3;
- # ca-config.json:1个profiles,分别指定不同的过期时间,使用场景等参数,根据需要在不同场景使用不同的profile签名证书;这里以生成的模板为基础修改;
- # “signing”:表示该证书可用于签名其他证书,生成的ca.pem证书中CA=TRUE;
- # ”server auth“:client可用该CA对server提供的证书进行验证;
- # “client auth”:server可用该CA对client提供的证书进行验证;
- # 注意每个模块或每行有或没有“,”的区别
- [root@kubenode1 cfssl]# cp config.json ca-config.json
- [root@kubenode1 cfssl]# vim ca-config.json
- {
- "signing": {
- "default": {
- "expiry": "8760h"
- },
- "profiles": {
- "kubernetes": {
- "expiry": "8760h",
- "usages": [
- "signing",
- "key encipherment",
- "server auth",
- "client auth"
- ]
- }
- }
- }
- }
4. CA证书签名请求
- # “CN”:Common Name,kube-apiserver从证书中提取该字段作为请求的用户名(User Name);浏览器使用该字段验证网站是否合法;
- # “O”:Organization,kube-apiserver从证书中提取该字段作为请求用户所属的组(Group)
- [root@kubenode1 cfssl]# cp csr.json ca-csr.json
- [root@kubenode1 cfssl]# vim ca-csr.json
- {
- "CN": "kubernetes",
- "key": {
- "algo": "rsa",
- "size": 2048
- },
- "names": [
- {
- "C": "CN",
- "ST": "ChengDu",
- "L": "ChengDu",
- "O": "k8s",
- "OU": "cloudteam"
- }
- ]
- }
5. 生成CA证书与秘钥
- [root@kubenode1 cfssl]# cfssl gencert -initca ca-csr.json | cfssljson -bare ca
- [root@kubenode1 cfssl]# ls ca*
- # 简单查看
- [root@kubenode1 cfssl]# cfssl-certinfo -cert ca.pem
6. 分发CA证书
- # 将生成的CA证书,秘钥,配置文件等分发到所有机器;
- # ca-key.pem与ca.pem重要
- [root@kubenode1 ~]# mkdir -p /etc/kubernetes/ssl
- [root@kubenode1 ~]# cp /usr/local/cfssl/ca* /etc/kubernetes/ssl/
- [root@kubenode1 ~]# scp /usr/local/cfssl/ca* root@172.30.200.22:/etc/kubernetes/ssl/
- [root@kubenode1 ~]# scp /usr/local/cfssl/ca* root@172.30.200.23:/etc/kubernetes/ssl/
高可用Kubernetes集群-2. ca证书与秘钥的更多相关文章
- 高可用Kubernetes集群-16. ansible快速部署
说明 本文档指导采用二进制包的方式快速部署高可用kubernetes集群. 脚本托管:k8s-ansible(持续更新) 参考:高可用kubernetes集群 组件版本 组件 版本 备注 centos ...
- 搭建高可用kubernetes集群(keepalived+haproxy)
序 由于单master节点的kubernetes集群,存在master节点异常之后无法继续使用的缺陷.本文参考网管流程搭建一套多master节点负载均衡的kubernetes集群.官网给出了两种拓扑结 ...
- 高可用Kubernetes集群原理介绍
■ 文/ 天云软件 云平台开发工程师 张伟 1. 背景 Kubernetes作为容器应用的管理中心,对集群内部所有容器的生命周期进行管理,结合自身的健康检查及错误恢复机制,实现了集群内部应用层的高可用 ...
- 高可用Kubernetes集群-3. etcd高可用集群
五.部署高可用etcd集群 etcd是key-value存储(同zookeeper),在整个kubernetes集群中处于中心数据库地位,以集群的方式部署,可有效避免单点故障. 这里采用静态配置的方式 ...
- 高可用Kubernetes集群-1. 集群环境
参考文档: 部署kubernetes集群1:https://github.com/opsnull/follow-me-install-kubernetes-cluster 部署kubernetes集群 ...
- 高可用Kubernetes集群-6. 部署kube-apiserver
八.部署kube-apiserver 接下来3章节是部署Kube-Master相关的服务,包含:kube-apiserver,kube-controller-manager,kube-schedule ...
- 使用Kubeadm搭建高可用Kubernetes集群
1.概述 Kubenetes集群的控制平面节点(即Master节点)由数据库服务(Etcd)+其他组件服务(Apiserver.Controller-manager.Scheduler...)组成. ...
- 基于Containerd安装部署高可用Kubernetes集群
转载自:https://blog.weiyigeek.top/2021/7-30-623.html 简述 Kubernetes(后续简称k8s)是 Google(2014年6月) 开源的一个容器编排引 ...
- 基于saltstack自动化部署高可用kubernetes集群
SaltStack自动化部署HA-Kubernetes 本项目在GitHub上,会不定期更新,大家也可以提交ISSUE,地址为:https://github.com/skymyyang/salt-k8 ...
随机推荐
- [iOS]一些第三方库
BHInfiniteScrollView 地址 https://github.com/qylibohao/BHInfiniteScrollView 功能 图片轮播 TZImagePickerContr ...
- JSON在Java中的使用(一)
1.去JSON官网下载org.json包 https://search.maven.org/#search%7Cgav%7C1%7Cg%3A%22org.json%22%20AND%20a%3A%22 ...
- JQuery弹出Dialog关闭方式close vs destroy
$editDialog.iDialog('close') $(this).dialog('close'); 等Close方法关闭Dialog时,Dialog并不是完全消失,只是隐藏起来.两个Dial ...
- mysql如何把一个表直接拷贝到一个新的表
一:在新表已经建立好的情况下 1,拷贝所有的字段 insert into new_table select * from old_table 2,拷贝部分字段表 insert into new_tab ...
- 【python 虚拟环境 virtualenv的配置】
该目录内生成一个虚目录: #运行activcate下的shell脚本,激活虚拟环境 #pip python包管理器
- HTML5 -- 浏览器数据缓存 -- indexedDB
IndexedDB是一种可以让你在用户的浏览器内持久化存储数据的方法,为web应用提供了丰富的查询功能,使我们的应用在在线和离线都能正常工作. 由于 IndexedDB 本身的规范还在持续演进中,当前 ...
- Delphi判断某个类是否实现了某个接口
通过TObject.GetInterface可以获得对象的实例实现某个接口,前提条件是必须实例化对象后才能运行GetInterface 下面的方法可获取类是否实现了某个接口,并返回接口的偏移: fun ...
- Golddata如何采集需要登录/会话的数据?
概要 本文将介绍使用GoldData半自动登录功能,来采集需要登录网站的数据.GoldData半自动登录功能,就是指通过脚本来执行登录,如果需要验证码或者其它内容需要人工输入时,可以通过收发邮件来执行 ...
- Shellinabox on centos6.9
介绍 一款实用的web linux终端, 并且保证操作安全性(屏蔽root用户) 下面以centos6.9为例 安装 首先安装epel仓库,再安装shellinabox yum -y install ...
- python学习——简介和入门
一.Python简介: Python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为AB ...