锁定 MinIO 操作员权限

虽然您可以使用 deployment 或 statefulset 在 Kubernetes 上部署 MinIO,但在 Kubernetes 上部署 MinIO 的推荐方法是通过官方的 MinIO Operator。为什么?

MinIO Operator 简化了 Kubernetes 集群上的 MinIO 管理,不仅在初始部署期间(第 0 天和第 1 天),而且在正在进行的第 2 天操作期间。例如,通过添加服务器池来扩展集群时,只需运行几个 kubectl 命令即可。有关更多详细信息,请参阅使用池扩展 MinIO 群集。

MinIO Operator 支持将 MinIO 租户部署到任何云、本地、边缘或混合环境中的 Kubernetes 集群上,基本上是在可以运行 Kubernetes 集群的任何地方。MinIO Operator 使用自定义资源定义 (CRD) 和 Kubernetes 插件安装该插件,该 krew 插件提供了使用 kubectl minio 命令管理 MinIO 租户的能力。

下面我们来详细看一下上面的图表。MiniO Operator 将部署在专用命名空间中;我们稍后将向您展示这如何派上用场。命名空间由 2 个 Pod 组成:

Operator:Operator Pod 负责租户的维护,如部署、管理、修改等操作。

控制台:控制台 pod 是一个图形界面,用于执行与使用 kubectl minio 命令使用 CLI 类似的功能。

除此之外,MinIO Operator 部署的每个租户都需要位于单独的命名空间中。它还需要在 pod 中创建以下 3 个容器。

初始化容器:用于在启动时配置主 MinIO 容器,一旦 MinIO 容器启动,此容器就会终止。

MinIO 容器:这是运行 MinIO 的容器(类似于单个裸机安装)。这是租户最终附加持久性卷声明 (PVC) 以与存储对象的持久性卷 (PV) 通信的容器。

Sidecar 容器:这是一个容器,用于监视群集中的各种操作,例如租户的配置机密和根凭据。如果这些被更改,它们将自动更新。MinIO 还构建了一个名为 Sidekick 的 sidecar 容器,这是一个微型负载均衡器,作为 sidecar 连接到每个客户端应用程序进程;您可以消除集中式负载均衡器瓶颈和 DNS 故障转移管理。Sidekick 通过就绪 API 和 HTTP 错误返回检查其运行状况,从而自动避免将流量发送到故障服务器。

如您所见,部署 MinIO 集群需要多个移动部件,例如容器、命名空间和 PVC。这些移动部件需要特定权限才能执行其操作。虽然我们始终遵循安全最佳实践,并将 MinIO Operator 设计为使用尽可能少的权限,但有时必须进一步锁定 MinIO 部署,以满足金融和医疗保健等领域的监管要求,这些领域存储了 AI/ML 和其他敏感数据/IP 的模型。

在这篇文章中,我们将向您展示如何为MinIO Operator配置最严格的命名空间权限,同时能够充分利用MinIO Operator的强大功能和灵活性进行日常操作。

如何锁定操作员

在完成锁定 MinIO Operator 的过程时,我们假设您熟悉 Kubernetes 的概念和过程。虽然我们可能会向你展示一些最佳实践,但这篇博文并不能替代 Kubernetes 文档。考虑到这一点,让我们开始吧。

我们将使用 Kustomize 安装 MinIO Operator,请务必事先按照这些说明安装 Kustomize。

生成 operator.yaml 文件并将所有资源连接到一个文件中

kustomize build github.com/minio/operator/resources/\?ref\=v5.0.9 > operator.yaml

打开 operator.yaml .以下部分将与 console-sa-roleconsole-sa-binding 相关。删除与这两个设置相关的所有内容。

---apiVersion: rbac.authorization.k8s.io/v1kind: ClusterRolemetadata:name: console-sa-rolerules:…---apiVersion: rbac.authorization.k8s.io/v1kind: ClusterRoleBindingmetadata:name: console-sa-bindingroleRef:apiGroup: rbac.authorization.k8s.iokind: ClusterRolename: console-sa-rolesubjects:- kind: ServiceAccountname: console-sanamespace: default

请注意,由于规则数量的原因,上述 yaml 已被截断。我们向您展示了 yaml 的开头和结尾,请务必删除这两个部分之间的所有内容。

我们将删除默认情况下授予控制台的宽松权限。这样做的缺点是,由于令牌将仅限于操作员的集群角色,因此 JWT 控制台 UI 将不再能够创建命名空间或删除卷。这些任务必须在操作员的自动化范围之外手动完成。

从中删除 console-sa-role operator.yamlconsole-sa-binding 资源后,应用其余资源。

kubectl apply -f operator.yaml

通常,下一步是使用以下命令通过端口转发访问租户控制台

kubectl minio proxy

但在本例中,尽管我们可以访问 UI,但由于包含控制台的锁定命名空间,我们无法创建任何租户。那么,我们如何部署租户呢?让我们再次使用 Kustomize 来生成部署租户所需的资源的 yaml。

kustomize build github.com/minio/operator/examples/kustomization/tenant-lite\?ref\=v5.0.9 > tenant.yaml

构建租户 yaml 后,可以按如下方式部署它

kubectl apply -f tenant.yaml

让我们进行测试,以确保我们可以访问新创建的租户

# mc alias set myminio https://minio.tenant-lite.svc.cluster.local:443 minio minio123
Added `myminio` successfully.

创建存储桶以验证它是否已创建

root@ubuntu:/# mc mb myminio/ajtest
Bucket created successfully `myminio/ajtest`.

检查 MinIO 群集和纠删集的状态

root@ubuntu:/# mc admin info myminio●  myminio-pool-0-0.myminio-hl.tenant-lite.svc.cluster.local:9000Uptime: 3 minutesVersion: 2024-01-09T19:57:37ZNetwork: 4/4 OKDrives: 2/2 OKPool: 1●  myminio-pool-0-1.myminio-hl.tenant-lite.svc.cluster.local:9000Uptime: 3 minutesVersion: 2024-01-09T19:57:37ZNetwork: 4/4 OKDrives: 2/2 OKPool: 1●  myminio-pool-0-2.myminio-hl.tenant-lite.svc.cluster.local:9000Uptime: 3 minutesVersion: 2024-01-09T19:57:37ZNetwork: 4/4 OKDrives: 2/2 OKPool: 1●  myminio-pool-0-3.myminio-hl.tenant-lite.svc.cluster.local:9000Uptime: 3 minutesVersion: 2024-01-09T19:57:37ZNetwork: 4/4 OKDrives: 2/2 OKPool: 1Pools:1st, Erasure sets: 1, Drives per erasure set: 88 drives online, 0 drives offline

最后的思考

我们以简单易用为指导原则构建了 MinIO Operator。我们不会捆绑只会增加攻击面的额外功能,并且默认安装尽可能开箱即用,从而消除了过于宽松的访问进行配置的风险 - MinIO 操作员仅拥有执行其操作所需的权限。

在某些环境中,可能需要进一步锁定 MinIO Operator。集群角色访问真正需要的唯一权限是控制台 Pod,您可以对 kubectl minio 和 的组合使用来 mc 管理集群。

或者,如果公司安全标准要求这样做,您可以考虑使用角色而不是群集角色在同一命名空间中部署操作员和租户。这不是我们建议的最佳方法,但如果您需要将所有内容限制为单个命名空间,这是一种折衷方案。

MinIO Kubernetes 部署主要设计用于 Operator。MinIO Operator 不仅简化了 MinIO 集群的初始部署,还有助于在新版本发布时升级 MinIO 集群。最重要的是,MinIO Operator 允许您部署多个 MinIO 租户,并且允许您通过设置允许使用的空间量、存储桶数量等限制,在不同团队和部门之间逻辑地分离数据。它确实是一个强大的资源。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【LVGL源码移植环境搭建】

LVGL源码移植&环境搭建 ■ LVGL源码移植■ 下载LVGL源码■ 修改LVGL文件夹■■■■ 视频链接 Ubuntu模拟器环境建置 ■ LVGL源码移植 ■ 下载LVGL源码 LVGL源码 我们以选择v8.2.0为例,选择8.2.0下载 ■ 修改LVGL文件夹 1.我们只需要关注这5个文件即可&…

世界坐标系转换为平面地图坐标

将世界坐标系转换为平面地图坐标的方法通常涉及地图投影。地图投影是一种将地球(一个三维球体)上的点转换为平面(二维)地图上的点的方法。 这里介绍几种常见的地图投影方法: 墨卡托投影(Mercator Projection): 这是最常见的投影方式之一,尤其用于航海地图。它将经纬度…

解决:AttributeError: ‘str’ object has no attribute ‘capabilities’

解决:AttributeError: ‘str’ object has no attribute ‘capabilities’ 文章目录 解决:AttributeError: str object has no attribute capabilities背景报错问题报错翻译报错位置代码报错原因解决方法方法一:使用Service对象方法二&#x…

线性代数----------学习记录

线性代数发展历程 (1)线性方程组:例如二元一次方程组; (2)行列式:determinant,克莱默,莱布尼兹; (3)矩阵:方程个数与未知数的个数可…

vxe-table3.0的表格树如何做深层查找,返回搜索关键字的树形结构

vxe-table2.0版本是提供深层查找功能的,因为他的数据源本身就是树形结构,所以深层查找查询出来也是树形结构。 但是vxe-table3.0版本为了做虚拟树功能,将整个数据源由树形垂直结构变成了扁平结构,便不提供深层查询功能&#xff0c…

WAP在线封装APP工具:革新移动体验的技术

一、融合式设计:打破原生与网页应用的界限WAP封装App工具的最新版本已经能够实现无缝融合网页内容与原生应用功能。这些工具不仅仅是简单地将网页“包装”成APP,而是通过创新的融合式设计,让用户在使用过程中几乎感受不到两者之间的差异。例如…

综合案例 - 商品列表

文章目录 需求说明1.my-tag组件封装(完成初始化)2.may-tag封装(控制显示隐藏)3.my-tag组件封装(v-model处理:信息修改)4.my-table组件封装(整个表格)①数据不能写死&…

工业交换机的详细介绍

工业交换机是一种用于工业领域的网络通信设备,其设计专注于满足工业环境下的高可靠性、高带宽和低延迟的要求。与传统的家用交换机相比,工业交换机具有更强的耐高温、抗震动、抗干扰等特性,能够适应恶劣的工业环境。同时,工业交换…

宠物处方单子怎么开,宠物门诊处方管理软件教程

宠物处方单子怎么开,宠物门诊处方管理软件教程 一、前言 宠物店电子处方软件操作教程以 佳易王宠物店电子处方管理系统V16.0为例说明。 如图,在开处方的时候,点击导航栏菜单,兽医处方按钮 点击 增加新单,填写宠物及…

大模型重塑车载语音交互:赛道巨头如何引领新周期?

车载语音交互赛道正进入新一轮竞争周期。 高工智能汽车注意到,传统车载语音交互赛道当前基本已进入成熟期,主要为任务型助手,包括从单轮对话到多轮对话,单音区到多音区,从单一的导航、多媒体娱乐等座舱功能扩展智能驾…

正则表达式(RE)

什么是正则表达式 正则表达式,又称规则表达式(Regular Expression)。正则表达式通常被用来检索、替换那些符合某个规则的文本 正则表达式的作用 验证数据的有效性替换文本内容从字符串中提取子字符串 匹配单个字符 字符功能.匹配任意1个…

在centos 7 中 安装 配置 并 远程连接 MySQL5.7

目录 安装MySQL 1.卸载CentOS7系统自带的mariadb 2.安装依赖库 3.上传MySQL并解压 4.安装MySQL 配置MySQL 1.修改登录密码 2.修改字符集 3.配置远程连接 前言: 安装MySQL版本:mysql-5.7.30-1.el7.x86_64.rpm-bundle 文件需求后台私信 以下7条为…

(蓝桥杯每日一题)求最长回文串

问题描述 给出一个长度为 n 的小写字符串,求一个最长的子串 S,满足SXY,X,Y>1,且X,Y 均为回文串。 输入格式 输入包括一行: 第一行是一个长度为 n 的小写字符串。 输出格式 输出包括一行: 一行一个整数,表…

STM32连接阿里云物联网平台

文章目录 引言一、STM32连接阿里云物联网平台思路二、ESP8266烧录固件三、使用AT指令连接阿里云物联网平台四、STM32环形串口缓冲区驱动程序五、STM32连接阿里云驱动程序 引言 连续写了两篇关于阿里云连接的文章,都是使用Arduino ESP8266 & Arduino ESP32的方式…

关于如何将Win幻兽帕鲁服务端存档转化为单人本地存档的一种方法(无损转移)

本文转自博主的个人博客:https://blog.zhumengmeng.work,欢迎大家前往查看。 原文链接:点我访问 **起因:**最近大火的开放世界缝合体游戏幻兽帕鲁的大火也是引起了博主的注意,然后博主和周边小伙伴纷纷入手,博主也是利…

安装好IntelliJ IDEA点击无反应,如何解决配置文件不一致导致的启动问题

在我们的开发生涯中,遇到IDE工具出现问题是在所难免的。最令人头疼的莫过于,你的IDEA(IntelliJ IDEA)无法启动,而且没有任何错误提示。这篇文章将详细讲解如何解决IntelliJ IDEA 2023.3.3版本启动失败的问题,这个问题可能也适用于…

LeetCode.2808. 使循环数组所有元素相等的最少秒数

题目 题目链接 分析 我们最终形成的数组一定是当前数组nums 中的一个数字。 所以我们的想法就是枚举数组 nums 中的所有数字,取最小值。 题目告诉我们每一秒都可以向左右扩散一位,那么多个相同的 x 同时扩散,扩散完整个数组耗时就取决于两…

使用.NET6 Avalonia开发跨平台三维应用

本文介绍在Vistual Studio 2022中使用Avalonia和集成AnyCAD Rapid AvaloniaUI三维控件的过程。 0 初始化环境 安装Avalonia.Templates dotnet new install Avalonia.Templates若之前安装过可忽略此步骤。 1 创建项目 选择创建AvaloniaUI项目 选一下.NET6版本和Avalonia版…

文件上传之大文件分块上传进度控制处理

在分块上传内容结束以后的事件监听,我们会实现 unlinkSync 删除临时文件操作,那么试想一下,在这个事件监听中,我们是否可以通过totalChunks以及currentChunk获取当前上传的进度情况呢? 后端 upload上传接口&#xff…

学习嵌入式的第十二天-------二维数组函数的调用和指针的运算

二维数组函数调用 输入设备-------cpu------输出设备 | V 存储器 总线: 总线宽度:32位或64位 (1.数据总线2.控制总线3.地址总线) 练习: 定义一个二维整型数组,实现一个函数…