k8s使用自定义证书将客户端认证接入到API Server

自定义证书使用kubectl认证接入API Server
kubeconfig是API Server的客户端连入API Server时使用的认证格式的客户端配置文件。
使用kubectl config view查看其配置

 1 kubectl config view
 2 apiVersion: v1
 3 clusters:  #集群列表
 4 - cluster:
 5     certificate-authority-data: DATA+OMITTED
 6     server: https://192.168.1.100:6443
 7   name: kubernetes
 8 contexts:    #上下文列表(使用哪个账号访问哪个集群)
 9 - context:
10     cluster: kubernetes
11     user: kubernetes-admin
12   name: kubernetes-[email protected]
13 current-context: kubernetes-[email protected]  #当前使用的账号
14 kind: Config
15 preferences: {}
16 users:   #用户列表
17 - name: kubernetes-admin
18   user:
19     client-certificate-data: REDACTED
20     client-key-data: REDACTED

创建、删除集群\用户\上下文列表
kubectl config (set-cluster\delete-cluster)\(set-credentials)\(set-context\delete-context)
创建账号前需要创建账号用于服务器端的认证的证书及密钥
切换用户:kubectl config use-context

使用kubeadm创建的集群,集群的证书及密钥在/etc/kubernetes/pki下。里面的证书和私钥都有各自的功能;
如:apiserver-kubectl-client.crt和apiserver-kubectl-client.key就可以用来给创建的账户所使用。

示例:
使用openssl创建用于自己创建账号所使用的证书及密钥(自签)
使用带有自签证书的用户在集群中创建用户,切换用户查看权限:
1.创建一个smbands的用户私钥:
  (umask 077; openssl genrsa -out smbands.key 2048)
  注意:证书持有者名称就是用户名,所以用户名必须与证书持有者名称一致;
  如:用户名为smbands,那么持有者也应该为smbands。创建完成后会生成一个smbands.key的文件。
2.基于刚生成的私钥去生成一个证书生成请求smbands.csr
   openssl req -new -key smbands.key -out smbands.csr -subj "/CN=smbands"
   会生成一个生成证书请求文件smbands.csr
3.使用ca.crt签署证书
   openssl x509 -req -in smbands.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out smbands.crt -days 365
   生成smbands的用户证书smbands.crt
使用:openssl x509 -in smbands.crt -text -noout查看生成的证书信息

使用创建的用户在集群中创建账户和上下文
1.在集群中创建用户:
  kubectl config set-credentials smbands --client-certficate=URL/smbands.crt --client-key=URL/smbands.key --embed-certs=true
2.在集群中为新建的用户定义上下文,使用户可以切换至创建的用户:
  kubectl config set-context [email protected](用户名@集群名) --cluster=kubernetes --user=smbands
3.切换集群账户:
  kubectl config use-context [email protected]
此时集群账户就切换为smbands了,不过这样默认的用户是没有管理员权限的。下一篇将会写到如何使用RBAC将自定义用户绑定到自定义角色分配自定义权限。
此时的kubeconfig如下显示:

 1 kubectl config view
 2 apiVersion: v1
 3 clusters:
 4 - cluster:
 5     certificate-authority-data: DATA+OMITTED
 6     server: https://192.168.1.100:6443
 7   name: kubernetes
 8 contexts:
 9 - context:
10     cluster: kubernetes
11     user: kubernetes-admin
12   name: kubernetes-[email protected]
13 - context:
14     cluster: kubernetes
15     user: smbands
16   name: [email protected]
17 current-context: [email protected]
18 kind: Config
19 preferences: {}
20 users:
21 - name: kubernetes-admin
22   user:
23     client-certificate-data: REDACTED
24     client-key-data: REDACTED
25 - name: smbands
26   user:
27     client-certificate-data: REDACTED
28     client-key-data: REDACTED

原文地址:https://www.cnblogs.com/Smbands/p/10901543.html

时间: 2024-10-08 02:39:30

k8s使用自定义证书将客户端认证接入到API Server的相关文章

拿nodejs快速搭建简单Oauth认证和restful API server攻略

拿nodejs快速搭建简单Oauth认证和restful API server攻略:http://blog.csdn.net/zhaoweitco/article/details/21708955 最近一直在鼓捣这个东西,拿出来分享下一下经验吧,其实很简单,一点也不难. 首先需求是这样,给自己的网站要增加API服务,API分为两种,公共的和私有授权的,授权的使用Oauth方法认证身份,API格式均为JOSN和JSONP. 嗯,别的语言我也没怎么学过,首先是找合适的框架进行实现吧.本身网站使用的e

K8S集群证书已过期且etcd和apiserver已不能正常使用下的恢复方案

在这种比较极端的情况下,要小心翼翼的规划和操作,才不会让集群彻底死翘翘.首先,几个ca根证书是10年期,应该还没有过期.我们可以基于这几个根证书,来重新生成一套可用的各组件认证证书. 前期,先制定以下方案步骤,能否实现,待验证. 一,制作证书的基本文件. Ca-csr.json(因为根证书是OK的,所以这个文件,可是列在这里,不会用上) { "CN": "kubernetes", "key": { "algo": "

HTTPS的证书未经权威机构认证的情况下,访问HTTPS站点的两种方法

注意一下文章中提到的jsse在jdk1.4以后已经集成了,不必纠结. 摘 要 JSSE是一个SSL和TLS的纯Java实现,通过JSSE可以很容易地编程实现对HTTPS站点的访问.但是,如果该站点的证书未经权威机构的验证,JSSE将拒绝信任该证书从而不能访问HTTPS站点.本文在简要介绍JSSE的基础上提出了两种解决该问题的方法. 引言 过去的十几年,网络上已经积累了大量的Web应用.如今,无论是整合原有的Web应用系统,还是进行新的Web开发,都要求通过编程来访问某些Web页面.传统的方法是使

接入新浪、腾讯微博和人人网的Android客户端实例 接入新浪、腾讯微博和人人网的Android客户端实例

做了个Android项目,需要接入新浪微博,实现时也顺带着研究了下腾讯微博和人人网的Android客户端接入,本文就跟大家分享下三者的Android客户端接入方法. 一.实例概述 说白了,接入微博就是让你的应用程序可以调用新浪微博,腾讯微博和人人网的api,实现微博发送,分享给好友等等的功能啦.当然也可以实现让你的客户端使用微博账号进行登录.我们这篇文章要讲的就是访问这些社交平台提供的api的时候比较关键的一步,获取调用api接口的token,token可以理解为我们的客户端程序与社交平台api

CA证书申请、认证原理

(一) 证书的申请 密钥文件的格式用OpenSSL生成的就只有PEM和DER两种格式,PEM的是将密钥用base64编码表示出来的,直接打开你能看到一串的英文字母,DER格式是二进制的密钥文件,直接打开,你可以看到........你什么也看不懂!.X509是通用的证书文件格式定义.pkcs的一系列标准是指定的存放密钥的文件标准,你只要知道PEM DER X509 PKCS这几种格式是可以互相转化的. 1.创建私钥 : openssl genrsa -out ca/ca-key.pem 1024

探究公钥、私钥、对称加密、非对称加密、hash加密、数字签名、数字证书、CA认证、https它们究竟是什么,它们分别解决了通信过程的哪些问题。

一.准备 1. 角色:小白.美美.小黑. 2. 剧情:小白和美美在谈恋爱:小黑对美美求而不得.心生怨念,所以从中作梗. 3. 需求:小白要与美美需通过网络进行通信,联络感情,所以必须保证通信的安全性. 二.由通信过程中可能出现的问题来引出公钥.私钥.对称加密.非对称加密.hash加密.数字签名.数字证书.CA认证.https的相关知识 1. 场景1: 小白和美美在 http 协议下进行通信. 1.1 能否完成通信:能. 1.2 还可能出现其他问题:容易受到网络中间人攻击:在http协议下进行通信

Greenplum中角色权限及客户端认证管理

角色权限及客户端认证管理 GP数据库逻辑结构 在GP中,Database(数据库).Schema(模式)以及Role(角色)三者之间的关系如下所示: 一个数据库下可以有多个模式,一个模式只属于一个数据库.模式在GP中也被称为Namespace,不同数据库之间的模式没有关系,可以重名: 语言在使用之前必须创建,一个语言只属于一个数据库: 表.视图.索引.序列.函数必须属于一个模式: 一个文件空间可以有多个表空间,一个表空间只属于一个文件空间,文件空间和角色之间没有关系: 表空间和表时一对多的关系,

Android 使Volley完美支持自定义证书的Https

其实在最早的版本里,Volley甚至是不支持https协议的,只能跑http,当然你也可以自己修改他的源码让他支持,如今volley的代码经过一些改进以后, 已经可以完美支持https协议了,无论是在2.3版本以上还是在2.3版本以下,大家可以尝试用volley去访问github 是成功的,但是你如果用volley去访问 12306这种类似的 用自定义证书的网站 就很容易失败.那我下面就把volley 代码稍作修改,让volley也可以完美支持自定义证书的https请求. 当然代码只是展示功能使

自定义WebService和客户端调用《二》

问题?自定义WebService和客户端调用<二>,客户端调用有几种方式 一.JDK创建WebService服务和使用 Oracle前身sun公司,早就意识到WebService的强大,和它的未来前景,所以在JDK中早就封装了这样的创建WebService服务. 查看DJK-API文档: 1.新建Java或web工程,建一个类(这个类作为服务端): <span style="font-family:Microsoft YaHei;font-size:18px;">