使用 Helm Charts 部署 Silo Tenant
概览
Helm 是一个用于将应用自动部署到 Kubernetes 集群的工具。 Helm chart 是一组定义部署细节的 YAML 文件、模板和其他文件。 以下步骤使用 Helm Chart 部署由 MinIO Operator 管理的 Tenant。
本步骤要求 Kubernetes 集群中已存在一个有效的 Operator 部署。 你不能使用 MinIO Operator Tenant chart 在脱离 Operator 的情况下独立部署 Tenant。
重要
MinIO Operator Tenant Chart 与服务端仓库中的旧社区 MinIO Chart 不同。本指南使用 Operator Tenant Chart,因为它提供明确的 Tenant 镜像覆盖。上游 Operator 仓库已于 2026 年 3 月 20 日归档,因此本文固定其最终 v7.1.1 Chart,仅作为冻结的兼容基线;Silo 不继承上游厂商的支持承诺。
前提条件
要使用 Helm 安装 MinIO Tenant,你必须满足以下要求:
- 一个现有的 Kubernetes 集群
- 本地主机上安装了与集群版本匹配的
kubectlCLI 工具 - Helm 3.8 或更高版本
- yq 4.18.1 或更高版本
- 一个现有的 MinIO Operator 安装
本步骤默认你对 Kubernetes 集群的访问权限具备较广泛的管理能力。
有关 Tenant 安装要求的更多信息,包括受支持的 Kubernetes 版本和 TLS 证书,请参阅 Tenant 部署前提条件。
本步骤默认你已经熟悉相关 Kubernetes 概念和工具。 虽然本文档可能会以 best-effort 方式提供 Kubernetes 相关资源的配置或部署指导,但它不能替代官方 Kubernetes Documentation。
命名空间
租户必须使用自己的命名空间,不能与其他租户共享命名空间。 此外,MinIO 强烈建议为租户使用专用命名空间,且该命名空间内不要运行其他应用。
使用 Helm Charts 部署 Silo Tenant
以下步骤使用 MinIO Operator Chart Repository 部署 MinIO Tenant。 与 本地 chart 安装 相比,这种方式的安装路径更简单。
以下步骤使用 Helm 通过已归档上游项目的 v7.1.1 Tenant Chart 部署 MinIO Tenant。
重要
如果你使用 Helm 部署 MinIO Tenant,就必须使用 Helm 来管理或升级该部署。 不要使用 kubectl krew、Kustomize 或类似方式来管理或升级 MinIO Tenant。
本步骤并未穷尽 Tenant Chart 中所有可能的配置项。 它只提供一个基线,你可以在此基础上按需修改和定制 Tenant。
-
验证 MinIO Operator Repo 配置
已归档项目的端点 https://operator.min.io 当前仍提供
v7.1.1Chart。 如果该仓库尚未存在于本地 Helm 配置中,请先添加后再继续:你可以使用
helm search验证仓库内容:返回结果应类似如下:
-
创建 Helm
values.yaml的本地副本以供修改请使用文本编辑器打开
values.yaml。继续之前,替换上游服务端镜像默认值,并禁用继承的原地更新器:仅当更新标签已在 Silo 下载页 发布,并通过你的部署验证后才应使用。Silo 生产环境的 values 文件不应保留
quay.io/minio/minio或latest。 -
配置 Tenant 拓扑
以下字段都带有
tenant.pools[0]前缀,用于控制 Tenant 中所有 pod 的 server 数量、每个 server 的卷数量以及存储类:字段
描述
servers要在 服务器池 中部署的 MinIO pod 数量。
volumesPerServer每个 MinIO pod(
servers)要挂载的持久卷数量。 Operator 会为该 Tenant 生成volumesPerServer x servers个 Persistent Volume Claim。storageClassName与生成的 Persistent Volume Claim 关联的 Kubernetes 存储类。
如果不存在与指定值匹配的存储类,或者 指定的存储类无法满足所请求的 PVC 数量或存储容量,Tenant 可能无法启动。
size为每个生成的 PVC 请求的存储容量。
-
配置 Tenant Affinity 或 Anti-Affinity
Tenant Chart 支持以下 Kubernetes Selector、Affinity 和 Anti-Affinity 配置:
- Node Selector (
tenant.nodeSelector) - Node/Pod Affinity or Anti-Affinity (
spec.pools[n].affinity)
MinIO 建议为 Tenant 配置 Pod Anti-Affinity,以确保 Kubernetes 调度器不会将多个 pod 调度到同一个 worker node 上。
如果你希望将租户部署到特定 worker node 上,请将对应的 node label 或过滤条件传入
nodeSelector或affinity字段,以约束调度器仅在这些节点上放置 pod。 - Node Selector (
-
配置网络加密
MinIO Tenant CRD 提供了以下字段,你可以通过它们配置租户的 TLS 网络加密:
字段
描述
tenant.certificate.requestAutoCert启用或禁用 MinIO 自动 TLS 证书生成。
若省略该字段,默认值为
true,即启用。tenant.certificate.certConfig在启用的情况下,自定义 自动 TLS 的行为。
tenant.certificate.externalCertSecret通过 Server Name Indication (SNI) 为多个主机名启用 TLS。
指定一个或多个类型为
kubernetes.io/tls或cert-manager的 Kubernetes secret。tenant.certificate.externalCACertSecret启用对由未知、第三方或内部 Certificate Authorities (CA) 签发的客户端 TLS 证书的校验。
指定一个或多个类型为
kubernetes.io/tls的 Kubernetes secret,其中包含某个 CA 的完整证书链。 -
配置 Silo 环境变量
你可以使用
tenant.configuration字段设置服务端MINIO_*环境变量。这些名称属于 MinIO 兼容契约,不得改名。字段
描述
tenant.configuration指定一个 Kubernetes opaque secret,其数据负载
config.env包含你希望设置的每一个 MinIO 环境变量。config.env数据负载 必须 是一个 base64 编码字符串。 你可以先创建一个本地文件,在其中设置环境变量,再通过cat LOCALFILE | base64生成该负载。该 YAML 中包含一个
kind: Secret且metadata.name: storage-configuration的对象,用于设置 root 用户名、密码、纠删码校验设置,以及启用 Tenant Console。请根据 Tenant 的实际需求修改这些值。
-
部署 Tenant
使用
helm安装 Tenant Chart,并将values.yaml作为覆盖配置:你可以使用以下命令监控进度:
-
暴露 Tenant 的 MinIO S3 API 端口
若要在本地机器上测试 MinIO Client
mc,请转发 MinIO 端口并创建别名。- 转发 Tenant 的 MinIO 端口:
- 为 Tenant 服务创建别名:
你可以使用
mc mb在 Tenant 上创建存储桶:如果你为 MinIO Tenant 部署的是由受信任 Certificate Authority (CA) 签发的 TLS 证书,则可以省略
--insecure参数。有关连接 Tenant 的更多文档,请参阅 连接到 Tenant。
使用本地 Helm Chart 部署 Tenant
以下步骤使用 Helm Charts 的本地副本部署 Tenant。 与 基于仓库的安装 相比,这种方式可能更便于在安装前完成 Tenant 预配置。
-
下载 Helm charts
在本地主机上拉取已固定的 Tenant Chart,并将默认 values 提取为单独覆盖文件:
每个 chart 都包含一个可按需定制的
values.yaml文件。 有关 MinIO Tenantvalues.yaml可用选项的详细信息,请参阅 租户 Helm Charts。请使用文本编辑器打开
values.yaml:将tenant.image.repository设为pgsty/minio,将tenant.image.tag固定为已发布 Silo 版本,并在tenant.env中加入MINIO_UPDATE=off,与 基于仓库的流程 中的示例一致。 -
配置 Tenant 拓扑
以下字段都带有
tenant.pools[0]前缀,用于控制 Tenant 中所有 pod 的 server 数量、每个 server 的卷数量以及存储类:字段
描述
servers要在 服务器池 中部署的 MinIO pod 数量。
volumesPerServer每个 MinIO pod(
servers)要挂载的持久卷数量。 Operator 会为该 Tenant 生成volumesPerServer x servers个 Persistent Volume Claim。storageClassName与生成的 Persistent Volume Claim 关联的 Kubernetes 存储类。
如果不存在与指定值匹配的存储类,或者 指定的存储类无法满足所请求的 PVC 数量或存储容量,Tenant 可能无法启动。
size为每个生成的 PVC 请求的存储容量。
-
配置 Tenant Affinity 或 Anti-Affinity
Tenant Chart 支持以下 Kubernetes Selector、Affinity 和 Anti-Affinity 配置:
- Node Selector (
tenant.nodeSelector) - Node/Pod Affinity or Anti-Affinity (
spec.pools[n].affinity)
MinIO 建议为 Tenant 配置 Pod Anti-Affinity,以确保 Kubernetes 调度器不会将多个 pod 调度到同一个 worker node 上。
如果你希望将租户部署到特定 worker node 上,请将对应的 node label 或过滤条件传入
nodeSelector或affinity字段,以约束调度器仅在这些节点上放置 pod。 - Node Selector (
-
配置网络加密
MinIO Tenant CRD 提供了以下字段,你可以通过它们配置租户的 TLS 网络加密:
字段 描述 tenant.certificate.requestAutoCert启用或禁用 MinIO 自动 TLS 证书生成 tenant.certificate.certConfig控制 自动 TLS 的设置。 需要 spec.requestAutoCert: truetenant.certificate.externalCertSecret指定一个或多个类型为 kubernetes.io/tls或cert-manager的 Kubernetes secret。 MinIO 会基于主机名(Server Name Indication)使用这些证书执行 TLS 握手。tenant.certificate.externalCACertSecret指定一个或多个类型为 kubernetes.io/tls的 Kubernetes secret,其中包含 Tenant 为允许客户端 TLS 连接而必须信任的 Certificate Authority (CA) 证书链。 -
配置 Silo 环境变量
你可以使用
tenant.configuration字段设置服务端MINIO_*环境变量。这些名称仍属兼容契约。该字段必须指定一个 Kubernetes opaque secret,其数据负载
config.env包含你希望设置的每一个 MinIO 环境变量。该 YAML 中包含一个
kind: Secret且metadata.name: storage-configuration的对象,用于设置 root 用户名、密码、纠删码校验设置,以及启用 Tenant Console。请根据 Tenant 的实际需求修改这些值。
-
以下 Helm 命令使用已固定的本地 Chart 与经审查 values 创建 Silo Tenant:
若要部署多个 Tenant,请创建一个包含新 Tenant 详细配置的 Helm chart,并重复上述部署步骤。 重新部署同一个 chart 会更新此前已部署的 Tenant。
-
暴露 Tenant 的 MinIO 端口
若要在本地机器上测试 MinIO Client
mc,请转发 MinIO 端口并创建别名。-
转发 Tenant 的 MinIO 端口:
-
为 Tenant 服务创建别名:
该示例使用 HTTPS,但本地客户端可能不信任 Tenant 提供的证书,因此包含
--insecure。如果 Tenant 提供客户端信任的证书,请省略该参数。应确认当前 Tenant 实际生成的服务名,而不要假定固定为svc/minio。
你可以使用
mc mb在 Tenant 上创建存储桶: -
有关连接 Tenant 的更多文档,请参阅 连接到 Tenant。