Kubernetes CSR 颁发的 MinIO Operator 证书

在当前的 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 证书管理流程的简单性和效率使其在竞争中脱颖而出,使其成为寻求强大而可靠的对象存储解决方案的企业的首选。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【算法与设计】期末总结

文章目录 第一章 概述算法与程序时间复杂性求上界 第二章 递归与分治双递归函数——Ackerman函数分治策略大整数乘法两位两位四位x四位 三位x三位两位x六位 第三章 动态规划矩阵连乘基本要素最优子结构子问题重叠 备忘录 第四章 贪心算法活动安排问题基本要素贪心选择性质最优子…

DLS平台:惠誉全球经济展望——今年调增至2.6%,明年调减!

摘要 尽管全球货币政策逐渐转向宽松&#xff0c;惠誉国际评级&#xff08;Fitch Ratings&#xff09;在最新的《全球经济展望》中对2024年全球经济增长进行了上调。然而&#xff0c;由于美国经济增速放缓和其他因素的影响&#xff0c;2025年的全球经济增长预期则被下调。这篇文…

MySQL操作数据库语句

mysql关键字不区分大小写 1. 创建数据库 CREATE DATABASE [IF NOT EXISTS] westos (带[ ]表示该语句可有可无) 2. 删除数据库 DROP DATABASE [IF EXISTS] westos 3.使用数据库 -- tab键的上面&#xff0c;如果你的表名或者字段名是一个特殊的字符&#xff0c;就需要带 …

科普童话投稿

《科普童话》杂志是由国家新闻出版总署批准、黑龙江省教育厅主管、黑龙江省语言文字报刊社主办的正规期刊。《科普童话》以培养科学素养与创新探索精神为办刊宗旨&#xff0c;以科学与艺术统一为编辑方针&#xff0c;以科学教育、教育科学作为自己的出发点&#xff0c;致力于对…

重学java 72.正则表达式

人长大之后就在频繁地离别&#xff0c;相聚反而时日无多 —— 24.6.17 一、正则表达式的概念及演示 1.概述 正则表达式是一个具有特殊规则的字符串 2.作用&#xff1a;校验 3.String中有一个校验正则的方法&#xff1a; boolean matches(String regex) —— 校验字符串是否…

《Nest系列 - 2. Nest 代码生成器,让你告别base代码书写!!!》

紧接上文我们做一些核心梳理 核心梳理&#xff1a; /controllers目录&#xff1a;存放控制器文件&#xff0c;每个控制器对应一组路由和请求处理方法。控制器处理来自客户端的HTTP请求&#xff0c;并返回相应的响应。/modules目录&#xff1a;存放模块文件&#xff0c;每个模块…

Docker(三)-Docker常用命令

1.run run命令执行流程:2.帮助启动类命令 2.1 启动docker systemctl start docker2.2 停止docker systemctl stop docker2.3 重启docker systemctl restart docker2.4查看docker状态 systemctl status docker2.5开机启动 systemctl enable docker2.6查看docker概要信息 …

【python】从python中调用matlab函数

【python】从python中调用matlab函数 【先赞后看养成习惯】求关注点赞收藏 问题描述&#xff1a;用python的时候&#xff0c;有部分计算是也有的matlab写好的代码&#xff0c;要改成python格式又比较麻烦&#xff0c;那么我们可以通过python命令来调用matlab运行并返回指定值 …

【Android面试八股文】谈一谈你对http和https的关系理解

文章目录 HTTPHTTPSSSL/TLS协议HTTPS加密、解密流程HTTP 和 HTTPS 的关系具体的差异实际应用总结扩展阅读HTTP(HyperText Transfer Protocol)和HTTPS(HyperText Transfer Protocol Secure)是用于在网络上进行通信的两种协议。 它们在很多方面是相似的,但关键的区别在于安全…

如何解决跨境传输常见的安全及效率问题?

在当今全球化的商业版图中&#xff0c;企业为了拓展国际市场和增强竞争力&#xff0c;跨境传输数据已成为一项不可或缺的业务活动。合格的数据跨境传输方案&#xff0c;应考虑以下要素&#xff1a; 法律合规性&#xff1a;确保方案符合所有相关国家的数据保护法律和国际法规&am…

JupyterLab使用指南(五):JupyterLab的 扩展

1. 什么是JupyterLab的扩展 JupyterLab 扩展&#xff08;Extension&#xff09;是一种插件机制&#xff0c;用于增强 JupyterLab 的功能。通过安装扩展&#xff0c;用户可以添加新的功能、改进现有功能&#xff0c;甚至自定义界面和工作流。扩展可以覆盖各种用途&#xff0c;从…

轻松掌握使用PuTTY SSH连接cPanel的技巧

作为一名多年的Hostease用户&#xff0c;我深知管理服务器的重要性。在我的工作中&#xff0c;SSH连接是必不可少的工具之一&#xff0c;而PuTTY则是我常用的SSH客户端。今天&#xff0c;我想分享一下如何使用PuTTY SSH连接到cPanel&#xff0c;帮助你更好地管理你的服务器。 第…

Gradle 自动化项目构建-Gradle 核心之 Project

一、前言 从明面上看&#xff0c;Gradle 是一款强大的构建工具&#xff0c;但 Gradle 不仅仅是一款强大的构建工具&#xff0c;它更像是一个编程框架。Gradle 的组成可以细分为如下三个方面&#xff1a; groovy 核心语法&#xff1a;包括 groovy 基本语法、闭包、数据结构、面…

漏洞复现之CVE-2012-1823(PHP-CGI远程代码执行)

关于CGI知识点 CGI模式下的参数&#xff1a; -c 指定php.ini文件的位置 -n 不要加载php.ini文件 -d 指定配置项 -b 启动fastcgi进程 -s 显示文件源码 -T 执行指定次该文件 -h和-&#xff1f; 显示帮助题目如下图&#xff0c;没有什么发现 目录扫描一下 dirsearch -u http://4…

ch552g使用torch-pad测试触摸按键遇到的问题

基本工作原理 通过设置好功能在寄存器和控制寄存器检测引脚输入的值。 实际检测阶段分为3个步骤&#xff1a;第一阶段&#xff1a;选择需要检测的阶段&#xff0c;选择扫描周期1或2ms&#xff0c;开启触摸按键中断&#xff0c;然后在87us内为充电准备阶段&#xff0c;87us内数…

SQL注入-中篇

SQL盲注 一、时间盲注 模拟环境&#xff1a;Less-9 概述 延迟注入&#xff0c;一种盲注的手法&#xff0c;提交对执行时间敏感的sql语句&#xff0c;通过执行时间的长短来判断是否执行成功。 时间注入函数 sleep() if() ascii() substring() length() mid()判断是否存在延…

【跟我学RISC-V】(三)openEuler特别篇

写在前面 这篇文章是跟我学RISC-V指令集的第三期&#xff0c;距离我上一次发文已经过去一个多月了&#xff0c;在这个月里我加入了oerv的实习项目组&#xff0c;并且还要准备期末考试&#xff0c;比较忙。 在这篇文章里我会隆重、详细地介绍一个对RISC-V支持非常友好的Linux发…

Apache Druid-时序数据库

Apache Druid&#xff1a;是是一个集时间序列数据库、数据仓库和全文检索系统特点于一体的分析性数据平台&#xff0c;旨在对大型数据集进行快速的查询分析&#xff08;"OLAP"查询)。Druid最常被当做数据库来用以支持实时摄取、高性能查询和高稳定运行的应用场景&…

Linux top 命令使用教程

转载请标明出处&#xff1a;https://blog.csdn.net/donkor_/article/details/139775547 文章目录 一、top 是什么二、top的基础语法三、top输出信息解读 一、top 是什么 Linux top 是一个在Linux和其他类 Unix 系统上常用的实时系统监控工具。它提供了一个动态的、交互式的实时…

Matlab复数相关

文章目录 MATLAB复数相关知识相关函数 MATLAB复数相关知识 相关函数 假定存在复数zabi 函数说明real(z)返回复数z的实部&#xff08;a&#xff09;imag(z)返回复数z的虚部&#xff08;b&#xff09;abs(z)返回复数的模即|z| &#xff08; ( a 2 ) ( b 2 ) \sqrt{(a^2)(b^2)…