kubernetes学习:3.创建tls证书和秘钥

K8S部署步骤:2-创建ca证书与秘钥 kubernetes系统各组件需要使用TLS(SSL)证书对通信进行加密,本文档使用CloudFlare的PKI工具集cfssl 来生成Certificate Authority (CA) 证书和秘钥文件,CA是自签名的证书,用来签名后续创建的其它TLS证书。 在所有节点安装cfssl $ wget https://pkg.cfssl.org/R1.2/cfssl_linux-amd6... 阅读详情

kubernete tls证书和秘钥

传输k8s各组件之间的通信可以使用http方式,但是为了安全起见,生产环境需要使用https方式通信,所以我们需要生成tls证书进行加密传输。


构建环境

再次介绍下我们本次搭建的环境:

节点名称 ip 配置
wecloud-test-k8s-1(master) 192.168.99.183 4核,4G,50G磁盘
wecloud-test-k8s-2(node1) 192.168.99.189 4核,4G,50G磁盘
wecloud-test-k8s-3(node2) 192.168.99.185 4核,4G,50G磁盘
wecloud-test-k8s-4(node3) 192.168.99.196 4核,4G,50G磁盘

生成tls证书的工具:cfssl

生成的 CA 证书和秘钥文件如下:
ca-key.pem
ca.pem
kubernetes-key.pem
kubernetes.pem
kube-proxy.pem
kube-proxy-key.pem
admin.pem
admin-key.pem

使用证书的组件如下:

etcd:使用 ca.pem、kubernetes-key.pem、kubernetes.pem;
kube-apiserver:使用 ca.pem、kubernetes-key.pem、kubernetes.pem;
kubelet:使用 ca.pem;
kube-proxy:使用 ca.pem、kube-proxy-key.pem、kube-proxy.pem;
kubectl:使用 ca.pem、admin-key.pem、admin.pem;
kube-controller-manager:使用 ca-key.pem、ca.pem

证书的创建过程是在192.168.99.183(master)节点上进行的,生成好证书只需要把证书分发给其他节点,这样就可以进行加密通信了。


安装tls和秘钥


安装cfssl

直接在官网下载cfssl相关二进制包:

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

增加可执行权限后,将可执行二进制文件拷贝到全局变量可以识别的目录/usr/local/bin:

[root@wecloud-test-k8s-1 ~]# chmod +x cfssl-certinfo_linux-amd64 
[root@wecloud-test-k8s-1 ~]# chmod +x cfssljson_linux-amd64 
[root@wecloud-test-k8s-1 ~]# chmod +x cfssl_linux-amd64 
[root@wecloud-test-k8s-1 ~]# mv cfssl_linux-amd64 /usr/local/bin/cfssl
[root@wecloud-test-k8s-1 ~]# mv cfssljson_linux-amd64 /usr/local/bin/cfssljson
[root@wecloud-test-k8s-1 ~]# mv cfssl-certinfo_linux-amd64 /usr/local/bin/cfssl-certinfo

创建CA文件


创建 CA 配置文件
[root@wecloud-test-k8s-1 ~]# mkdir /root/ssl
[root@wecloud-test-k8s-1 ~]# cd /root/ssl/
[root@wecloud-test-k8s-1 ssl]# cfssl print-defaults config > config.json
[root@wecloud-test-k8s-1 ssl]# cfssl print-defaults csr > csr.json

生成配置文件模板

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

expiry: 其中expiry是过期时间,可以指定多个;
signing: 表示该证书可以签名其他证书;
server auth: 表示客户端可以用该证书对服务端进行验证;
client auth: 表示服务端可以用该证书对客户端进行验证;


创建CA证书签名请求

创建ca-csr.json文件:

{
  "CN": "kubernetes",
  "key": {
    "algo": "rsa",
    "size": 2048
  },
  "names": [
    {
      "C": "CN",
      "ST": "ZheJiang",
      "L": "HangZhou",
      "O": "k8s",
      "OU": "System"
    }
  ]
}
  • “CN”:Common Name,kube-apiserver 从证书中提取该字段作为请求的用户名 (User Name);浏览器使用该字段验证网站是否合法;
  • “O”:Organization,kube-apiserver 从证书中提取该字段作为请求用户所属的组 (Group);

生成 CA 证书和私钥
[root@wecloud-test-k8s-1 ssl]# cfssl gencert -initca ca-csr.json | cfssljson -bare ca
2018/04/01 17:16:31 [INFO] generating a new CA key and certificate from CSR
2018/04/01 17:16:31 [INFO] generate received request
2018/04/01 17:16:31 [INFO] received CSR
2018/04/01 17:16:31 [INFO] generating key: rsa-2048
2018/04/01 17:16:31 [INFO] encoded CSR
2018/04/01 17:16:31 [INFO] signed certificate with serial number 249255656321361266442489392967889104825701924957
[root@wecloud-test-k8s-1 ssl]# ls
ca-config.json  ca.csr  ca-csr.json  ca-key.pem  ca.pem  config.json  csr.json 

ca-key.pem 和 ca.pem分别为生成的私钥和证书。


创建kubernetes证书

创建 kubernetes 证书签名请求文件 kubernetes-csr.json:

{
    "CN": "kubernetes",
    "hosts": [
      "127.0.0.1",
      "192.168.99.183",
      "192.168.99.189",
      "192.168.99.185",
      "192.168.99.196",
      "10.254.0.1",
      "kubernetes",
      "kubernetes.default",
      "kubernetes.default.svc",
      "kubernetes.default.svc.cluster",
      "kubernetes.default.svc.cluster.local"
    ],
    "key": {
        "algo": "rsa",
        "size": 2048
    },
    "names": [
        {
            "C": "CN",
            "ST": "ZheJiang",
            "L": "HangZhou",
            "O": "k8s",
            "OU": "System"
        }
    ]
}

hosts 字段不为空则需要指定授权使用该证书的 IP 或域名列表,把我们整个集群需要的节点都添加进去。


生成kubernetes证书和私钥
[root@wecloud-test-k8s-1 ssl]# cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=kubernetes kubernetes-csr.json | cfssljson -bare kubernetes

查看生成结果:

[root@wecloud-test-k8s-1 ssl]# ls
ca-config.json  ca-csr.json  ca.pem       csr.json        kubernetes-csr.json  kubernetes.pem
ca.csr          ca-key.pem   config.json  kubernetes.csr  kubernetes-key.pem

创建 admin 证书

创建 admin 证书签名请求文件 admin-csr.json:

《Kubernetes证书篇:Kubernetes TLS证书介绍及创建两种方案》 阅读详情

相关推荐

(3)二进制文件方式部署Kubernetes高可用集群----------创建TLS证书和秘钥

目录 2 创建TLS证书和秘钥 2.1 生成的CA证书和密钥文件 2.2 使用证书的组件 2.3 二进制源码包安装cfssl 2.3.1 二进制源码包下载 2.3.2 默认安装路径 2.3.3 自定义安装路径 2.4 创建CA证书和私钥 2.4.1 生成CA配置文件 2.4.2 编辑CA配置文件(ca-config.json) 2.4.2 编辑CA签名请求文件(ca-conf...

应无所住而生其心 2397

《kubernetes-1.8.0》01-环境准备

01-环境准备《kubernets 1.8.0 测试环境安装部署》时间:2017-11-21一、环境介绍测试环境采用4台虚拟机,所有kubernets组件均采用rpm方式安装,使用systemd来做管理,网络组件采用calico,Master实现HA。rpm安装包来自 Mritd 所做的tarball,版本1.8.0。下载链接:漠然提供的百度云 密码: 4zaz。资源分配: IP 组件

Hek's blog 4033

Kubernetes (K8s)安装部署过程(一)之证书安装

一、安装前主题环境准备   1、docker安装   建议使用官网yum源安装,添加yum源之后,直接yum install docker即可   2、关闭所有节点的selinux   最好修改配置文件为disabled,而不是临时更改,避免以后重启引起不必要的麻烦   3、安装私有仓库环境Harbor   具体安装过程参考我的博客:https://blog.csdn.net/baidu_38432732/article/details/106430307   4、基本架构 IP 节点

云深海阔专栏 8355

【kubeEdge】离线部署

根据k8s的这个规则,可以将节点通过 label 的方式进行分组,比如将某几个节点都打上标签为 name=edge,当调度应用到 edge 节点时,会找到 label 为 edge 的所有节点,根据设置的副本数,将应用启动起来,如果设置的副本数超过了设置 edge 标签的节点数,则多出的将会显示 pending 状态,从而无法启动。清除 keadm init 或 keadm join 造成的影响均可使用 keadm reset,这个操作会删除 /etc/kubeedge 下的文件,如有需要请提前备份。

qq_42944740的博客 1716

通用定时器脉冲计数实验(STM32CubeMx配置)

通用定时器脉冲计数实验

a1169511636的博客 5509

Qt绘图库对决:QWT与QCustomPlot的实战选型指南

本文为Qt开发者提供了QWT与QCustomPlot两大绘图库的实战选型指南。文章从功能特性、性能资源、开发效率三大维度进行深度对比,并结合工业监控、科学计算、嵌入式设备等典型场景,给出了清晰的决策清单。对于需要专业科学图表(如极坐标、等高线图)的场景推荐QWT;对于追求高性能、实时性、快速开发及嵌入式部署的通用图表需求,QCustomPlot是更优选择。

alpha的博客 241

S7-1200模拟量

将两种不同的金属或合金金属焊接起来,构成一个闭合回路,利用温差电动势来测量温度,当两端存在温度梯度时,回路中就会有电流通过,此时两端之间就存在电动势--热电动势,这就是所谓的塞贝克效应(seebeck effect)。温差越大,热电动势越高。热电偶是有正负极性的,所以需要确保导线连接到正确的极性,否则会造成明显的测量误差。为了使温度补偿达到最佳效果,必须将热电偶模块安装在温度稳定的环境中简述:两种金属,每一种金属随温度变化是不同的,出现温差--由俩金属构成的回路就会有电流经过,因此两端形成热电动势。

王阿妹小天才的博客 2589

(最新更新!)2024全国大学生数学建模竞赛(国赛)B题决策优化+鲁棒模型完整建模全解全析

2024全国大学生数学建模竞赛(国赛)B题完整建模全解全析(已更新!)

Yilu264的博客 9417

解锁笔记智能对话:手把手配置 Obsidian Copilot 插件与硅基流动模型

本文详细介绍了如何为Obsidian笔记软件配置Copilot插件,并接入硅基流动AI模型,从而为个人知识库添加智能对话能力。通过手把手教程,指导用户完成插件安装、API Key获取、模型配置及索引构建,最终实现基于个人笔记内容的深度语义问答,提升知识管理效率。

corn8的博客 612

AUTOSAR进阶图解==>AUTOSAR_SWS_ADCDriver

本文深入解析了AUTOSAR ADC Driver的架构设计和技术实现。主要内容包括:1)ADC Driver在AUTOSAR分层架构中的定位及核心功能;2)详细的模块架构设计,涵盖初始化管理、组转换管理、优先级处理等核心子组件;3)全面的配置模型说明,包括主配置类、通用配置、通道配置等关键数据结构;4)状态机机制和操作序列分析。通过分层设计和标准化接口,ADC Driver实现了硬件抽象和软件解耦,提供了良好的可移植性和可维护性。

一名留德华的,康德的信徒的,专注于汽车电子领域的博客 786

TC3XX - MCAL知识点(二十七):SENT Mcal配置及代码实战(单边半字节传输协议)

SENT协议只有一根线,异步传输!Sent协议的全称为Single Edge Nibble Trans .isson,单边半字节传输协议,是一种单线异步串行通信协议。Sent报文包含8个Nibble和一个校准位如图1所示,每一个Nibble数据被编码成PWM方式。设计这种协议的目的是用在与汽车ECU快速交互信息的传感器上,以此来取代低精确度的10bit AD和PWM。Sent是一种点对点的单方向从传感器到控制端的协议,控制器不需要同步信号。

梦想技术家 2271

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

上一篇: kubernetes学习:2.kubernetes集群搭建(一)架构介绍
下一篇: kubernetes学习:4.安装kubectl命令
linux_player_c
博客等级 码龄13年 214粉丝 134原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值