Kubernetes CSR 颁发的 MinIO Operator 证书

news2024/10/7 2:17:48

在当前的 Kubernetes 环境中,创建、管理和自动化 TLS 证书的标准方法是使用 kind: CertificateSigningRequest (CSR)资源。此原生 Kubernetes 资源提供了一种强大而高效的方式来处理集群中证书的整个生命周期。

通过利用 CSR 资源,您可以简化和自动化证书管理的各个方面,包括:

1 . **创建证书:**CSR 允许您轻松地为服务生成新证书,从而确保集群中组件之间的安全通信。

2 . **续订证书:**借助 CSR,您可以在证书过期之前自动续订证书,从而消除手动干预并降低服务中断的风险。

3 . **吊销证书:**如果由于安全问题或其他原因需要吊销证书,CSR 提供了一种简单的机制来使证书失效并防止其进一步使用。

我们将重点利用 Kubernetes CSR 资源专门用于创建可供 MinIO 使用的证书。在本指南结束时,您将清楚地了解如何使用 CSR 生成证书、将其安全地存储在 Kubernetes Secret 中,以及配置 MinIO 以访问和使用生成的证书。

生成的私钥和公有证书将安全地存储在名为 operator-tls 的 Kubernetes Secret 中。操作员可以访问此密钥,允许他们利用证书进行安全通信。

教程

首先,我们将使用带有 P-256 曲线的椭圆曲线数字签名算法 (ECDSA) 生成一个自签名私钥。ECDSA 是一种广泛使用且安全的算法,用于生成密钥对。

步骤 1:生成自签名私钥

首先,我们将使用带有 P-256 曲线的“椭圆曲线数字签名算法”(ECDSA) 生成一个自签名私钥。ECDSA 是一种广泛使用且安全的算法,用于生成密钥对。

openssl ecparam -name prime256v1 -genkey -noout -out private.key

或者,您可以使用其他算法,即使用 RSA。

openssl genrsa -out private.key 2048

步骤 2:生成证书签名请求 (CSR)

生成私钥后,我们现在可以创建证书签名请求 (CSR)。CSR 包含有关请求证书的实体的信息,并使用私钥进行签名。

openssl req -new -key private.key -out curve.csr \

-subj "/O=system:nodes/CN=system:node:operator.minio-operator.svc" \

-addext "subjectAltName = DNS:operator,DNS:operator.minio-operator.svc,DNS:operator.minio-operator.svc.cluster.local"

第 3 步:以 Base64 对 CSR 进行编码

要将 CSR 包含在 Kubernetes 资源中,我们需要将其转换为 base64 编码的字符串。

base64 curve.csr

步骤 4:创建 Kubernetes CertificateSigningRequest

创建一个包含以下内容的文件 csr-manual.yaml ,并替换 <copy base64 encoded curve.csr here> 为上一步中的 base64 编码的 CSR。

apiVersion: certificates.k8s.io/v1

kind: CertificateSigningRequest

metadata:

  name: operator-minio-operator-csr

spec:

  request: <copy base64 encoded curve.csr here>

  signerName: kubernetes.io/kubelet-serving

  expirationSeconds: 604800 #extend here for 1 year long

  groups:

  - system:serviceaccounts

  - system:serviceaccounts:minio-operator

  - system:authenticated

  - system:nodes

  usages:

	- "digital signature"

	- "key encipherment"

	- "server auth"

  username: system:serviceaccount:minio-operator:minio-operator

注意:关于 EKS 1.21 和 1.22:在 EKS 1.22+ 上不允许使用 signerName kubernetes.io/legacy-unknown ,您应该像上面的示例一样设置 signerName,或者beta.eks.amazonaws.com/app-serving有关 EKS 上 CSR 签名的更多详细信息,请参阅证书签名文档。在早期版本的 EKS(1.21 及更低版本)上,您可以使用证书 CSR API v1beta1 并发送 signerName kubernetes.io/legacy-unknown。

注意:在 Kubernetes 1.21 及更低版本上:该字段 expirationSeconds 是在 Kubernetes 1.22 中引入的,在此之前,该字段被静默删除且不被执行

使用在上一步中创建 csr-manual.yaml 的文件,创建 Kubernetes CSR 资源。

kubectl apply -f csr-manual.yaml

第 6 步:批准 CSR

手动批准 CSR。这是一次性步骤。

kubectl certificate approve operator-minio-operator-csr

步骤 7:检索签名证书

.status.certificate Kubernetes csr 资源中的密钥获取公共证书。

kubectl get csr operator-minio-operator-csr -o jsonpath="{.status.certificate}" | base64 --decode > public.crt

步骤 8:验证证书

让我们验证我们上面获取的证书。

从 CSR 资源中提取证书,它将位于 base64 中。解码 base64 并使用 OpenSSL 读取它,如下所示。

kubectl get csr operator-minio-operator-csr -ojsonpath="{.status.certificate}" | base64 --decode | openssl x509 -noout -text

将出现与此类似的证书说明:

Certificate:

	Data:

    	Version: 3 (0x2)

    	Serial Number:

        	19:35:68:7b:bc:16:51:b1:95:14:15:45:13:27:e2:b7

	Signature Algorithm: sha256WithRSAEncryption

    	Issuer: CN=kubernetes

    	Validity

        	Not Before: Mar 15 22:25:10 2023 GMT

        	Not After : Mar 14 22:25:10 2024 GMT

    	Subject: O=system:nodes, CN=system:node:operator.minio-operator.svc

    	Subject Public Key Info:

        	Public Key Algorithm: id-ecPublicKey

            	Public-Key: (256 bit)

            	pub:

                	04:5b:53:08:98:54:8f:45:c9:e9:15:49:73:cc:50:

                	fe:32:ec:33:de:f8:79:6e:87:a9:7d:01:3e:c3:b0:

                	20:21:69:46:33:a5:44:92:18:90:79:4f:b4:e5:d9:

                	a7:94:5f:b1:4b:73:57:e3:3a:cc:d8:be:24:94:3f:

                	32:2d:d3:f4:38

            	ASN1 OID: prime256v1

            	NIST CURVE: P-256

    	X509v3 extensions:

        	X509v3 Key Usage: critical

            	Digital Signature, Key Encipherment

        	X509v3 Extended Key Usage:

            	TLS Web Server Authentication

        	X509v3 Basic Constraints: critical

            	CA:FALSE

        	X509v3 Authority Key Identifier:

            	keyid:73:58:4C:D0:20:80:2A:C4:7A:5E:EE:26:C0:28:50:CA:F2:05:48:73


        	X509v3 Subject Alternative Name:

            	DNS:operator, DNS:operator.minio-operator.svc, DNS:operator.minio-operator.svc.cluster.local

	Signature Algorithm: sha256WithRSAEncryption

     	64:1c:de:99:cd:54:e8:eb:08:fd:89:c5:6a:94:a5:29:dd:a9:

...

输出将显示证书详细信息,包括使用者、颁发者、有效期和扩展名。

步骤 9:创建 Kubernetes 密钥

最后,这是橡胶与道路相遇的地方。我们将创建一个 Kubernetes secret 供 Operator 使用

kubectl create secret generic --from-file=./private.key --from-file=./public.crt operator-tls -n minio-operator

下次操作员启动时,它不会尝试创建证书或机密,而是使用我们存储在密钥 minio-operator 中的证书或机密。

使用 MinIO 和 Kubernetes 简化证书管理

我们不可能用另一个对象存储来编写这个简短的教程。其他类似的对象存储设置起来非常复杂且耗时,但我们只是将 MinIO 运算符设置为使用来自密钥的证书,只需使用内置的 Kubernetes 资源即可获得太多提升。

虽然其他对象存储解决方案通常需要复杂的配置和耗时的设置过程,但 MinIO 的设计和与 Kubernetes 的紧密集成使开发人员和管理员能够专注于他们的核心业务逻辑,因为他们知道他们的对象存储是安全的并且经过了适当的身份验证。MinIO 证书管理流程的简单性和效率使其在竞争中脱颖而出,使其成为寻求强大而可靠的对象存储解决方案的企业的首选。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1835674.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

做户用光伏代理需要多少钱?

随着全球对可再生能源和清洁能源的关注度日益提高&#xff0c;光伏技术作为其中的佼佼者&#xff0c;已经成为许多投资者和创业者关注的焦点。户用光伏系统作为其中的一个重要分支&#xff0c;其市场潜力巨大&#xff0c;吸引了越来越多的投资者和创业者进入这一领域。那么&…

MaxKB-无需代码,30分钟创建基于大语言模型的本地知识库问答系统

简介 MaxKB 是一个基于大语言模型 (LLM) 的智能知识库问答系统。它能够帮助企业高效地管理知识&#xff0c;并提供智能问答功能。想象一下&#xff0c;你有一个虚拟助手&#xff0c;可以回答各种关于公司内部知识的问题&#xff0c;无论是政策、流程&#xff0c;还是技术文档&a…

python连接数据库,相关数据处理

随机生成一千个数据插入large_db中 # 这是一个示例 Python 脚本。# 按 ShiftF10 执行或将其替换为您的代码。 # 按 双击 Shift 在所有地方搜索类、文件、工具窗口、操作和设置。 import pandas as pd from sqlalchemy import create_engine from faker import Faker# 初始化fa…

空气流量和空气压力参数解耦系统simulink建模与仿真

目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 5.完整工程文件 1.课题概述 空气流量和空气压力参数解耦系统simulink建模与仿真&#xff0c;在许多系统中&#xff0c;空气流量&#xff08;Q&#xff09;和压力&#xff08;P&#xff09;之间存在耦合关…

shell脚本编程(概念、编程和语句)

一、shell脚本概述 1、shell脚本概念 Shell 脚本是利用 shell 的功能所写的一个程序。这个程序是使用纯文本文件&#xff0c;将一些 shell 的语法与命令&#xff08;含外部命令&#xff09;写在里面&#xff0c;搭配正则表达式、管道命令与数据流重定向等功能。 2、Shell 脚…

openlayers 点击多边形弹框,高亮多边形,自定义属性传递,鼠标悬浮多边形上动态修改鼠标样式

本篇介绍一下使用openlayers点击多边形弹框&#xff0c;高亮多边形&#xff0c;自定义属性传递&#xff0c;鼠标悬浮多边形上动态修改鼠标样式 1 需求 加载天地图,polygon传递自定义属性标悬浮在polygon上&#xff0c;根据自定义属性&#xff0c;动态修改鼠标样式为pointer点…

【机器学习300问】124、什么是LSTM?LSTM的基本结构是怎样的?

长短期记忆网络&#xff08;LSTM&#xff09;是一种解决隐变量模型长期信息保存和短期输入缺失问题的方法&#xff0c;有趣的是&#xff0c;长短期记忆网络的设计比门控循环单元稍微复杂一些&#xff0c; 却比门控循环单元早诞生了近20年。 一、什么是LSTM&#xff1f; LSMT全…

迷你手持小风扇十大名牌排名有哪些?公认迷你小风扇排行榜揭开!

随着夏季的到来&#xff0c;炎热的天气让人们迫切需要一款便携、高效的降温工具。迷你手持小风扇因其小巧便携、操作简单而备受欢迎&#xff0c;成为人们日常生活中不可或缺的降温神器。然而&#xff0c;市场上迷你手持小风扇品牌繁多&#xff0c;如何挑选一款既实用又耐用的小…

SpringBoot + thymeleaf 修改文件,刷新页面不能实时展示修改后的内容问题解决

修改页面后文件后&#xff0c;刷新页面&#xff0c;内容不变&#xff0c;是因为项目没有编译&#xff0c;没有将新的页面文件编译&#xff0c;以下方法可以完美解决次问题 具体内容请查看&#xff1a;http://www.haozgx.top/blog/article/2

GD32调试篇:JLink驱动下载安装

本文章基于兆易创新GD32 MCU所提供的2.2.4版本库函数开发 向上代码兼容GD32F450ZGT6中使用 后续项目主要在下面该专栏中发布&#xff1a; https://blog.csdn.net/qq_62316532/category_12608431.html?spm1001.2014.3001.5482 感兴趣的点个关注收藏一下吧! 电机驱动开发可以跳转…

学会这几点,轻松制作引人入胜的电子期刊

随着数字化时代的到来&#xff0c;电子期刊已经成为了信息传播的重要载体。它以方便快捷、形式多样、互动性强等特点&#xff0c;受到了广泛的欢迎。那么&#xff0c;如何制作一份引人入胜的电子期刊呢&#xff1f;下面就来为大家分享几点制作电子期刊的小技巧。 1.选择合适的制…

【机器学习】第2章 线性回归及最大熵模型

一、概念 1.回归就是用一条曲线对数据点进行拟合&#xff0c;该曲线称为最佳拟合曲线&#xff0c;这个拟合过程称为回归。 2.一个自变量 叫 一元线性回归&#xff0c;大于一个自变量 叫 多元线性回归。 &#xff08;1&#xff09;多元回归&#xff1a;两个x&#xff0c;一个…

Vue3鼠标悬浮个人头像时出现修改头像,点击出现弹框,上传头像使用cropperjs可裁剪预览

实现效果&#xff1a; 鼠标悬浮到头像上&#xff0c;下方出现修改头像 点击修改头像出现弹框&#xff0c;弹框中可上传头像&#xff0c;并支持头像的裁剪及预览 实现方式&#xff1a; 1.tempalte中 <div class"img-box"><img v-if"avatarImgUrl&qu…

开始报名啦!智能可观测运维技术 MeetUp 议题硬核来袭

「龙蜥社区“走进系列”MeetUp」是由龙蜥社区与生态合作伙伴联合主办的系列月度活动&#xff0c;每期走进一家企业&#xff0c;聚焦龙蜥社区和合作伙伴的技术、产品和创新动态&#xff0c;展示硬核技术&#xff0c;共建繁荣生态。 龙蜥社区“走进系列”第 11 期走进中兴通讯-智…

【Axure高保真原型】动态统计中继器表格项目数

今天和大家分享动态统计中继器表格项目数的原型模板&#xff0c;具体包括以下功能&#xff1a; 表格下方可以自动根据表格内容统计表格的总项目数、启用和禁用数、选中和未选中数 我们可以点击开发切换启用和禁用 点击多选按钮&#xff0c;选中或取消选中对应行内容 选中后可…

关于Markdown的使用与创建

这里写自定义目录标题 欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题&#xff0c;有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants 创建一个自定义列表如何创建一个…

《收获,不止oracle》读书笔记一:oracle体系结构

从图中可以看出,oracle数据库是由实例和一组数据库文件组成。实例是由oracle开辟的内存区和一组后台进程组成的。

【多线程】线程状态

&#x1f970;&#x1f970;&#x1f970;来都来了&#xff0c;不妨点个关注叭&#xff01; &#x1f449;博客主页&#xff1a;欢迎各位大佬!&#x1f448; 文章目录 1. 枚举线程所有状态2. 线程转移2.1 示意图2.2 观察 NEW 、 RUNNABLE 、 TERMINATED 状态的转换2.3 观察 WAI…

fastsam-pytorch基于YOLACT方法的实例分割分支的目标检测器模型

FastSAM 论文 Fast Segment Anything 模型结构 以yolov8-seg的instance segmentation为基础&#xff0c;检测时集成instance segmentation分支,主要分为两步全实例分割(all instance Segmentation)和基于prompt的mask输出(Prompt-guided Selection)&#xff0c;仅使用了2%的…

采用了宽电压设计的测径仪为什么仍旧需要到现场勘察电力环境

关键字: 测径仪宽电压设计,测径仪电压范围,电压影响测径仪,测径仪车间电压 设备宽电压设计是指该设备能够在一定范围的电压波动内正常工作&#xff0c;而不会因为电压的轻微变化而导致性能下降或损坏。宽电压设计通常涉及到电源电路的优化和设计&#xff0c;以确保设备在电压波…