使用Helm Charts部署MinIO租户
概述
Helm 是一种用于自动化部署应用程序到 Kubernetes 集群的工具。 Helm 图表 是一组 YAML 文件、模板和其他文件,用于定义部署细节。 以下过程使用 Helm 图表 部署由 MinIO Operator 管理的租户。
此过程需要 Kubernetes 集群具有有效的 Operator 部署。 您不能使用 MinIO Operator 租户 图表来部署独立于 Operator 的租户。
重要
MinIO Operator 租户图表 与社区管理的 MinIO Chart 是 不同 的。
社区 Helm Chart 由社区构建、维护和支持。 MinIO 不保证支持任何给定的错误、功能请求或引用该图表的更新。
MinIO正式维护并支持 Operator Tenant Chart。 MinIO 强烈建议在生产环境中使用官方的 Helm 图表来部署 Operator 和 Tenants。
先决条件
要使用 Helm 安装 MinIO 租户,您必须满足以下要求:
现有的 Kubernetes 集群
您的本地主机上安装了版本与集群匹配的
kubectl
CLI 工具。Helm 版本需要在 3.8 或更高版本。
yq 版本需要在 4.18.1 或更高版本。.
现有的 MinIO Operator 安装。
此过程假定您的 Kubernetes 集群访问权限授予了您广泛的管理员权限。
有关租户安装要求的更多信息,包括支持的 Kubernetes 版本和 TLS 证书,请参考和阅读 租户部署先决条件。
此过程假定您熟悉所引用的 Kubernetes 概念和实用程序。 虽然本文档可能会尽最大努力提供有关配置或部署 Kubernetes 相关资源的指导,但它不能替代官方的 Kubernetes 文档 。
命名空间
租户必须使用自己的命名空间,不能与其他租户共享命名空间。 此外,MinIO 强烈建议租户使用专用命名空间,命名空间中不运行其他应用程序。
使用 Helm Charts 部署 MinIO 租户
下面的过程使用 MinIO Operator Chart 存储库部署 MinIO 租户。 与 本地图表安装 相比,此方法支持简化的安装路径。
下面的步骤使用 Helm,使用官方 MinIO 租户图表部署 MinIO 租户。
重要
如果使用 Helm 部署 MinIO 租户,则必须使用 Helm 管理或升级该部署。
请勿使用 kubectl krew
、Kustomize 或类似方法管理或升级 MinIO 租户。
本步骤并没有穷尽 Tenant Chart 中所有可能的配置选项。 它提供了一个基准,您可以在此基础上根据自己的要求修改和定制租户。
验证 MinIO 操作员 Repo 配置
MinIO 维护一个与 Helm 兼容的存储库,网址是 https://operator.min.io。 如果本地 Helm 配置中还不存在版本库,请在继续之前添加它:
helm repo add minio-operator https://operator.min.io您可以使用
helm search
验证软件仓库内容:helm search repo minio-operator答复以下内容:
NAME CHART VERSION APP VERSION DESCRIPTION minio-operator/minio-operator 4.3.7 v4.3.7 A Helm chart for MinIO Operator minio-operator/operator 7.1.1 v7.1.1 A Helm chart for MinIO Operator minio-operator/tenant 7.1.1 v7.1.1 A Helm chart for MinIO Operator创建 Helm
values.yaml
的本地副本以供修改curl -sLo values.yaml https://raw.githubusercontent.com/minio/operator/master/helm/tenant/values.yaml用你喜欢的文本编辑器打开
values.yaml
对象。配置租户拓扑
以下字段共享
tenant.pools[0]
前缀,并控制部署在租户中的所有 pod 的服务器数量、每台服务器的卷和存储类别:
Field
Description
servers
服务器池中要部署的 MinIO pod 数量。
volumesPerServer
要附加到每个 MinIO pod (
servers
) 的持久卷的数量。 操作员为租户生成 ``volumesPerServer x servers``(每服务器卷)持久卷申请。
storageClassName
要与生成的持久卷声明关联的 Kubernetes 存储类。
如果没有与指定值匹配的存储类, 或 如果指定的存储类无法满足所要求的 PVC 数量或存储容量,租户可能无法启动。
size
为每个生成的 PVC 申请的存储容量。
配置租户亲和性或反亲和性
租户图表支持以下 Kubernetes 选择器、亲和与反亲和配置:
节点选择器 (
tenant.nodeSelector
)节点/节点亲和性或反亲和性 (
spec.pools[n].affinity
)MinIO 建议使用 Pod Anti-Affinity 配置租户,以确保 Kubernetes 计划不会在同一个工作节点上调度多个 pod。
如果您想在特定的工作节点上部署租户,可将这些节点标签或筛选器传递给
nodeSelector
或affinity
字段,以限制调度程序将 pod 放在这些节点上。配置网络加密
MinIO 租户 CRD 提供以下字段,可用于配置租户 TLS 网络加密:
- header-rows:
1
- widths:
30 70
Field
Description
tenant.certificate.requestAutoCert
启用或禁用 MinIO automatic TLS certificate generation。
默认为
true
或启用(如果省略)。
tenant.certificate.certConfig
自定义 automatic TLS 的行为(如果启用)。
tenant.certificate.externalCertSecret
通过服务器名称指示 (SNI) 为多个主机名启用 TLS。
指定一个或多个
kubernetes.io/tls
或cert-manager
类型的 Kubernetes 秘密。
tenant.certificate.externalCACertSecret
启用验证由未知、第三方或内部证书颁发机构 (CA) 签发的客户端 TLS 证书。
指定一个或多个类型为
kubernetes.io/tls
的 Kubernetes 秘密,其中包含特定机构的 CA 证书的完整链。
配置 MinIO 环境变量
您可以使用
tenant.configuration
字段设置 MinIO 服务器环境变量。Field
Description
tenant.configuration
指定 Kubernetes 不透明机密,其数据有效载荷
config.env
包含要设置的每个 MinIO 环境变量。config.env ``数据有效载荷 **必须** 是一个 base64 编码的字符串。 您可以创建一个本地文件,设置环境变量,然后使用 ``cat LOCALFILE | base64
创建有效载荷。YAML 包括一个对象
kind: Secret
和metadata.name: storage-configuration
,其中设置了根用户名、密码、擦除奇偶校验设置,并启用了租户控制台。根据需要进行修改,以反映租户的要求。
部署租户
使用
helm
安装租户图表,并将values.yaml
作为覆盖项:helm install \ --namespace TENANT-NAMESPACE \ --create-namespace \ --values values.yaml \ TENANT-NAME minio-operator/tenant您可以使用以下命令监控进度:
watch kubectl get all -n TENANT-NAMESPACE公开租户 MinIO S3 API 端口
要从本地计算机测试 MinIO 客户端
mc
,请转发 MinIO 端口并创建别名。
转发租户的 MinIO 端口:
kubectl port-forward svc/TENANT-NAME-hl 9000 -n TENANT-NAMESPACE
为租户服务创建别名:
mc alias set myminio https://localhost:9000 minio minio123 --insecure您可以使用
mc mb
在租户上创建一个桶:mc mb myminio/mybucket --insecure如果使用由可信证书颁发机构(CA)颁发的 TLS 证书部署 MinIO 租户,则可以省略
--insecure
标记。请参阅 连接租户,了解有关租户外部连接的其他文档。
使用本地 Helm Chart 部署租户
以下过程使用Helm Charts的本地副本部署租户。 与:ref:`基于存储库的安装<deploy-tenant-helm-repo>`相比,这种方法可以支持更容易的租户预配置。
下载 Helm 图表
在您的本地主机上,将租户Helm图表下载到方便的目录中:
curl -O https://raw.githubusercontent.com/minio/operator/master/helm-releases/tenant-7.1.1.tgz
每个图表都包含一个
values.yaml
文件,您可以根据需要进行自定义。 有关MinIO Tenantvalues.yaml
中可用的选项的详细信息,请参见:多租户 Helm 图表。用你喜欢的文本编辑器打开
values.yaml
对象。配置租户拓扑
以下字段共享
tenant.pools[0]
前缀,并控制部署在租户中的所有 pod 的服务器数量、每台服务器的卷和存储类别:Field
Description
servers
服务器池中要部署的 MinIO pod 数量。
volumesPerServer
要附加到每个 MinIO pod (
servers
) 的持久卷的数量。 操作员为租户生成 ``volumesPerServer x servers``(每服务器卷)持久卷申请。storageClassName
要与生成的持久卷声明关联的 Kubernetes 存储类。
如果没有与指定值匹配的存储类, 或 如果指定的存储类无法满足所要求的 PVC 数量或存储容量,租户可能无法启动。
size
为每个生成的 PVC 申请的存储容量。
配置租户亲和性或反亲和性
租户图表支持以下 Kubernetes 选择器、亲和与反亲和配置:
节点选择器 (
tenant.nodeSelector
)节点/节点亲和性或反亲和性 (
spec.pools[n].affinity
)
MinIO 建议使用 Pod Anti-Affinity 配置租户,以确保 Kubernetes 计划不会在同一个工作节点上调度多个 pod。
如果您想在特定的工作节点上部署租户,可将这些节点标签或筛选器传递给
nodeSelector
或affinity
字段,以限制调度程序将 pod 放在这些节点上。配置网络加密
MinIO 租户 CRD 提供以下字段,您可以从中配置租户 TLS 网络加密:
Field
Description
tenant.certificate.requestAutoCert
启用或禁用 MinIO automatic TLS certificate generation
tenant.certificate.certConfig
控制 automatic TLS 的设置。 需要
spec.requestAutoCert: true
tenant.certificate.externalCertSecret
指定一个或多个
kubernetes.io/tls
或cert-manager
类型的 Kubernetes 秘密。 MinIO 使用这些证书来执行基于主机名(服务器名称指示)的 TLS 握手。tenant.certificate.externalCACertSecret
指定一个或多个 “kubernetes.io/tls
类型的 Kubernetes secrets
,其中包含租户必须信任的证书颁发机构 (CA) 链,以允许客户端 TLS 连接。配置 MinIO 环境变量
您可以使用
tenant.configuration
字段设置 MinIO 服务器环境变量。该字段必须指定 Kubernetes 不透明机密,其数据有效载荷
config.env
包含要设置的每个 MinIO 环境变量。YAML 包括一个对象
kind: Secret
和metadata.name: storage-configuration
,其中设置了根用户名、密码、擦除奇偶校验设置,并启用了租户控制台。根据需要进行修改,以反映租户的要求。
以下Helm命令使用标准图表创建MinIO租户:
helm install \ --namespace TENANT-NAMESPACE \ --create-namespace \ TENANT-NAME tenant-7.1.1.tgz
要部署多个租户,请创建一个Helm图表,包含新租户的详细信息,并重复执行部署步骤。 重新部署相同的图表将更新之前部署的租户。
暴露租户MinIO端口
要从本地机器测试MinIO客户端
mc
,请转发MinIO端口并创建别名。转发租户的MinIO端口:
kubectl port-forward svc/TENANT-NAME-hl 9000 -n TENANT-NAMESPACE
为租户服务创建别名:
mc alias set myminio https://localhost:9000 minio minio123 --insecure
此示例使用非 TLS
myminio-hl
服务,该服务需要--insecure
选项。如果您已经配置了 TLS 证书,请省略
--insecure
并改用svc/minio
。
您可以使用
mc mb
在租户上创建存储桶:mc mb myminio/mybucket --insecure
请参阅 连接租户,了解有关租户外部连接的其他文档。