MinIO 作为 Helm Chart 仓库

如果您是负责运行基础设施的团队成员,无论是DevOps、SRE还是系统工程师,都至关重要地确保将技术债务降到最低。在这种情况下,您需要确保基础设施中的支持系统数量,例如数据库、缓存系统、消息队列、日志聚合器、监控系统、应用程序性能监控系统,当然还有更多我没有提到的,不会增加管理基础设施的整体复杂性。
作为一名工程师,您始终希望确保您正在设置的基础设施可以被多个团队用于多个应用程序和项目。如果您要选择数据库,请认真评估并选择一个可以为大多数,如果不是全部,应用程序提供服务的数据库。如果运行太多这些不同的数据库服务器,会增加安装、更新、维护、备份、测试备份、监控等的复杂性,这些都会消耗大量资源。
存储系统也是如此。您需要确保用于备份和灾难恢复的存储系统不仅仅用于这些目的,反之亦然。也就是说,您应该拥有支持对象存储、数据库外部表存储、指标和日志存储、配置管理数据、数据湖中的AI/ML数据、大数据,如Spark等无数其他用例的存储系统。这样,您将拥有一个不仅弹性,而且可扩展的存储基础设施,因为越来越多的不同团队和应用程序依赖于存储。虽然管理大量基础设施的开销现在降到最低,但确保为它们提供动力的底层基础设施也具有可扩展性、可靠性和高性能至关重要。MinIO 符合这些用例中的很多用例,因为它具有业界领先的性能和可扩展性。MinIO 能够实现极高的性能——我们已经对它进行过基准测试,在仅使用 32 个标准 NVMe SSD 节点的 GET 操作中达到 325 GiB/s (349 GB/s),在 PUT 操作中达到 165 GiB/s (177 GB/s)——并且它被用于构建数据湖/湖仓、分析和 AI/ML 工作负载。由于 MinIO 在存储基础设施中发挥着至关重要的作用,因此收集、监控和分析性能和使用情况指标非常重要。
MinIO 也是 Kubernetes 的主要支持者,因为它具有开源特性以及在应用程序部署方式方面丰富的可用资源。正如 MinIO 可以部署在任何地方一样,我们希望通过容器部署 MinIO 的更多方法也是理所当然的。从一开始,MinIO 就支持 Docker 部署方式,这是最简单易用的启动和运行方式。您可能还知道,我们维护并分发我们自己的Helm Chart来部署 MinIO Operator 和其他组件。这有助于我们在任何 Kubernetes 应用程序(无论它们是否使用 Helm)旁边部署 MinIO。
但是您是否想知道这些图表是如何实际部署的?今天我们将向您展示如何使用您的 MinIO 集群(在本地、云端或 Kubernetes 上)作为 Helm Chart 存储库。
安装 MinIO
在设置和配置 Helm 存储库之前,请确保您拥有一个正在使用的 MinIO 集群,您已经将其用于现有数据。如果您只想先测试一下,请按照以下说明快速启动一个 MinIO 容器。
我们将使用 4 个磁盘启动一个 MinIO 节点。MinIO 可以运行在任何地方 - 物理、虚拟或容器 - 并且在这个概述中,我们将使用 Docker 创建的容器。
对于 4 个磁盘,在主机上为 `minio` 创建目录
使用以下规范启动 MinIO 节点的 Docker 容器
上面的命令将在 Docker 中启动一个 MinIO 服务,控制台端口在主机上的 `20091` 上监听。它还会将我们创建的本地目录作为卷挂载到容器中,MinIO 将在此处存储其数据。您可以通过 `http://localhost:20091` 访问您的 MinIO 服务。
如果您看到 4 在线
,则表示您已成功使用 4 个驱动器设置 MinIO 节点。
转到浏览器,使用 http://localhost:20091
加载 MinIO 控制台,使用 minioadmin
和 minioadmin
分别登录用户名和密码。点击 创建桶
按钮,并创建 testbucket123
。
安装 Helm
Helm 与 MinIO 的另一个相似之处是它的单二进制文件。您无需在不同位置安装多个文件或依赖项来处理路径问题。您只需运行下面的命令,您就可以开始使用。
$ curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3
$ chmod 700 get_helm.sh
$ ./get_helm.sh
运行 Helm repo update 以确保一切正常工作。
helm repo update
使用 Helm 配置 MinIO
为了在 MinIO 中将 Helm 设置为存储库,我们需要创建一个单独的桶。您可以将其命名为 helm-repo
或使用之前使用的 testbucket123
。确保此桶是公开的,并且可以通过 http/https 访问,无需任何 API 或库。
在这个桶中,我们需要创建一个 Index.yaml。将其视为网站上的 index.html。它是浏览器访问网站时首先查找的页面。同样,当运行 helm
命令时,它将在 MinIO 桶的根目录中查找 index.yaml
,其中将包含该桶中可用的包列表,Helm 可以使用这些包。将其视为 index.html 和 站点地图 页面内容的组合,以便您始终准确地知道要去哪里。Helm 包管理器以相同的方式使用 MinIO 桶中的 index.yaml。
现在让我们开始设置存储库。
创建一个 index.yaml
,其中包含以下内容
apiVersion: v1
entries:
minio:
- apiVersion: v1
created: 2017-06-15T17:48:36.895822482Z
description: Distributed object storage server built for cloud applications and
devops.
digest: 75ff1e3d779d8937cff57c28a102da97a520245d50e22c1a2763cbea064a76cd
home: https://minio.io
icon: https://www.minio.io/img/logo_160x160.png
keywords:
- storage
- object-storage
- S3
maintainers:
- email: hello@acale.ph
name: Acaleph
- email: hello@minio.io
name: Minio
name: minio
sources:
- https://github.com/minio/minio
urls:
- https://play.minio.io:9000/minio-helm/minio-0.1.2.tgz
version: 0.1.2
将 index.yaml
上传到桶的根目录
mc cp ./index.yaml myminio/testbucket123
将图表 tarball 也上传到桶的根目录
mc cp minio-0.1.2.tgz myminio/testbucket123
添加 MinIO 桶的公共 http
端点
helm repo add myrepo http://localhost:20091/testbucket123
见证奇迹的时刻!尝试从您添加为 Helm 存储库的 MinIO 桶安装 Helm 包
helm install myrepo/minio
单一控制面板
此术语通常用于描述监控。但它也可以用来解释基础设施的状态。通过使用 MinIO 集群的另一种有用方法,您已自动减少了团队和整个组织的技术债务。通过使用 MinIO,您还可以利用我们的 SUBNET 支持门户,该门户提供了一支工程师团队,他们实际上编写了 MinIO 的核心代码库,可以帮助您完成一些集群的重要任务,例如架构初始设置、开发 DR 计划以及根据更多数据的需求扩展集群、应用程序和用例的增加。
有关更多信息,请使用博客右下角的实时聊天与我们的专家联系,以了解更多关于 SUBNET 体验的信息,或发送电子邮件至 hello@min.io。