四.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证书与秘钥的更多相关文章

  1. 高可用Kubernetes集群-16. ansible快速部署

    说明 本文档指导采用二进制包的方式快速部署高可用kubernetes集群. 脚本托管:k8s-ansible(持续更新) 参考:高可用kubernetes集群 组件版本 组件 版本 备注 centos ...

  2. 搭建高可用kubernetes集群(keepalived+haproxy)

    序 由于单master节点的kubernetes集群,存在master节点异常之后无法继续使用的缺陷.本文参考网管流程搭建一套多master节点负载均衡的kubernetes集群.官网给出了两种拓扑结 ...

  3. 高可用Kubernetes集群原理介绍

    ■ 文/ 天云软件 云平台开发工程师 张伟 1. 背景 Kubernetes作为容器应用的管理中心,对集群内部所有容器的生命周期进行管理,结合自身的健康检查及错误恢复机制,实现了集群内部应用层的高可用 ...

  4. 高可用Kubernetes集群-3. etcd高可用集群

    五.部署高可用etcd集群 etcd是key-value存储(同zookeeper),在整个kubernetes集群中处于中心数据库地位,以集群的方式部署,可有效避免单点故障. 这里采用静态配置的方式 ...

  5. 高可用Kubernetes集群-1. 集群环境

    参考文档: 部署kubernetes集群1:https://github.com/opsnull/follow-me-install-kubernetes-cluster 部署kubernetes集群 ...

  6. 高可用Kubernetes集群-6. 部署kube-apiserver

    八.部署kube-apiserver 接下来3章节是部署Kube-Master相关的服务,包含:kube-apiserver,kube-controller-manager,kube-schedule ...

  7. 使用Kubeadm搭建高可用Kubernetes集群

    1.概述 Kubenetes集群的控制平面节点(即Master节点)由数据库服务(Etcd)+其他组件服务(Apiserver.Controller-manager.Scheduler...)组成. ...

  8. 基于Containerd安装部署高可用Kubernetes集群

    转载自:https://blog.weiyigeek.top/2021/7-30-623.html 简述 Kubernetes(后续简称k8s)是 Google(2014年6月) 开源的一个容器编排引 ...

  9. 基于saltstack自动化部署高可用kubernetes集群

    SaltStack自动化部署HA-Kubernetes 本项目在GitHub上,会不定期更新,大家也可以提交ISSUE,地址为:https://github.com/skymyyang/salt-k8 ...

随机推荐

  1. Android-应用性能测试

    参考了文章:http://www.cnblogs.com/mliangchen/p/5125114.html 问题一:使用真机在DDMS下,查看不到应用进程,logcat也不全 最后,只能使用Geny ...

  2. POJ 1050 To the Max 最大子矩阵和(二维的最大字段和)

    传送门: http://poj.org/problem?id=1050 To the Max Time Limit: 1000MS   Memory Limit: 10000K Total Submi ...

  3. 【HTML-进阶-如何实现父级块级元素宽度自适应子元素宽度】

    背景 块级元素宽度默认值为100%,而不是auto;因此其宽度不会根据子元素内容动态适应. 如何实现父级元素宽度动态适应其子元素. 方法一 display:inline; 给块级元素设置inline- ...

  4. Kubernetes(一)--简介

    一.什么是kubernetes(K8s)? Kubernetes作为容器编排生态圈中重要一员,是Google大规模容器管理系统borg的开源版本实现,吸收借鉴了google过去十年间在生产环境上所学到 ...

  5. 轻量ORM-SqlRepoEx (十五)最佳实践之数据映射(Map)

    简介:SqlRepoEx是 .Net平台下兼容.NET Standard 2.0人一个轻型的ORM.解决了Lambda转Sql语句这一难题,SqlRepoEx使用的是Lambda表达式,所以,对c#程 ...

  6. DBA手记-BBED 的说明

    在10g中连接生成bbed:cd $ORACLE_HOME/rdbms/libmake -f ins_rdbms.mk $ORACLE_HOME/rdbms/lib/bbed 11g中缺省未提供BBE ...

  7. #leetcode刷题之路19-删除链表的倒数第N个节点

    给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点.示例:给定一个链表: 1->2->3->4->5, 和 n = 2.当删除了倒数第二个节点后,链表变为 1-& ...

  8. [USACO15DEC]最大流Max Flow(树链剖分,线段树)

    FJ给他的牛棚的N(2≤N≤50,000)个隔间之间安装了N-1根管道,隔间编号从1到N.所有隔间都被管道连通了. FJ有K(1≤K≤100,000)条运输牛奶的路线,第i条路线从隔间si运输到隔间t ...

  9. HCDA day1

    OSI有几层: OSI将计算机网络体系结构(architecture)划分为以下七层: 图1.OSI模型 物理层: 将数据转换为可通过物理介质传送的电子信号 相当于邮局中的搬运工人. 物理层(Phys ...

  10. thinkphp3.2 上传图片兼容小程序

    第一步在配置文件中设置图片的大小和路径 return array( //'配置项'=>'配置值' 'img_save'=>[ 'size' =>[ 'app_gszc_Card'=& ...