使用 Helm Chart 部署 MinIO 租户
概述
Helm 是一个用于自动将应用程序部署到 Kubernetes 集群的工具。一个 Helm Chart 是一个由 YAML 文件、模板和其他文件组成的集合,它们定义了部署细节。以下步骤使用 Helm Chart 部署由 MinIO 运算符管理的租户。
此步骤要求 Kubernetes 集群具有有效的 运算符 部署。您无法使用 MinIO 运算符租户 Chart 部署独立于运算符的租户。
重要
MinIO 运算符租户 Chart 与社区管理的 MinIO Chart 不同。
社区 Helm Chart 由社区构建、维护和支持。MinIO 不保证对引用该 Chart 的任何特定错误、功能请求或更新提供支持。
The 运算符租户 Chart 由 MinIO 正式维护和支持。MinIO 强烈建议在生产环境中使用官方 Helm Chart 用于 运算符 和 租户。
先决条件
您必须满足以下要求才能使用 Helm 安装 MinIO 租户
现有的 Kubernetes 集群
您本地主机上的
kubectl
CLI 工具,其版本与集群匹配。Helm 版本 3.8 或更高版本。
yq 版本 4.18.1 或更高版本。
现有的 MinIO 运算符安装。
此步骤假设您的 Kubernetes 集群访问权限授予您广泛的管理权限。
有关租户安装要求的更多信息,包括支持的 Kubernetes 版本和 TLS 证书,请参阅 租户部署先决条件。
此步骤假设您熟悉引用的 Kubernetes 概念和实用程序。虽然本文档可能提供有关配置或部署 Kubernetes 相关资源的指导,但它不是官方 Kubernetes 文档 的替代品。
使用 Helm Chart 部署 MinIO 租户
以下步骤使用 MinIO 运算符 Chart 存储库部署 MinIO 租户。与 本地 Chart 安装 相比,此方法支持简化的安装路径。
以下步骤使用 Helm 部署 MinIO 租户,使用官方 MinIO 租户 Chart。
重要
如果您使用 Helm 部署 MinIO 租户,则必须使用 Helm 管理或升级该部署。请勿使用 kubectl krew
、Kustomize 或类似方法来管理或升级 MinIO 租户。
本程序并非涵盖了 租户图表 中所有可能的配置选项。它提供了一个基线,您可以根据自己的需求对其进行修改和调整。
验证您的 MinIO 运算符仓库配置
MinIO 在 https://operator.min.io 维护一个与 Helm 兼容的仓库。如果您的本地 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 6.0.4 v6.0.4 A Helm chart for MinIO Operator minio-operator/tenant 6.0.4 v6.0.4 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 的服务器数量、每个服务器的卷数以及存储类别。字段
描述
服务器
要部署到服务器池中的 MinIO pod 数量。
volumesPerServer
要附加到每个 MinIO pod (
servers
) 的持久卷数量。运算符为租户生成volumesPerServer x servers
持久卷声明。storageClassName
与生成的持久卷声明关联的 Kubernetes 存储类别。
如果没有与指定值匹配的存储类别或如果指定的存储类别无法满足请求的 PVC 数量或存储容量,则租户可能无法启动。
尺寸
为每个生成的 PVC 请求的存储量。
配置租户亲和性或反亲和性
租户图表支持以下 Kubernetes 选择器、亲和性和反亲和性配置。
节点选择器 (
tenant.nodeSelector
)节点/Pod 亲和性或反亲和性 (
spec.pools[n].affinity
)
MinIO 建议使用 Pod 反亲和性配置租户,以确保 Kubernetes 调度程序不会在同一个工作节点上调度多个 pod。
如果您有要部署租户的特定工作节点,请将这些节点标签或过滤器传递给
nodeSelector
或affinity
字段,以约束调度程序将 pod 放置在这些节点上。配置网络加密
MinIO 租户 CRD 提供以下字段,您可以使用它们配置租户 TLS 网络加密。
字段
描述
tenant.certificate.requestAutoCert
启用或禁用 MinIO 自动 TLS 证书生成。
默认情况下为
true
或启用(如果省略)。tenant.certificate.certConfig
自定义 自动 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 服务器环境变量。字段
描述
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 http://127.0.0.1:9000 minio minio123 --insecure
您可以使用
mc mb
在租户上创建存储桶。mc mb myminio/mybucket --insecure
如果您使用受信任的证书颁发机构 (CA) 颁发的 TLS 证书部署了 MinIO 租户,则可以省略
--insecure
标志。有关租户外部连接的更多文档,请参见 连接到租户。
使用本地 Helm 图表部署租户
以下过程使用 Helm 图表的本地副本部署租户。与 基于仓库的安装 相比,此方法可能支持更轻松地预配置租户。
下载 Helm 图表
在您的本地主机上,将租户 Helm 图表下载到一个方便的目录。
curl -O https://raw.githubusercontent.com/minio/operator/master/helm-releases/tenant-6.0.4.tgz
每个图表都包含一个
values.yaml
文件,您可以对其进行自定义以满足您的需求。有关 MinIO 租户values.yaml
中可用选项的详细信息,请参见 租户 Helm 图表。在您首选的文本编辑器中打开
values.yaml
对象。配置租户拓扑
以下字段共享
tenant.pools[0]
前缀,并控制租户中部署的所有 pod 的服务器数量、每个服务器的卷数以及存储类别。字段
描述
服务器
要部署到服务器池中的 MinIO pod 数量。
volumesPerServer
要附加到每个 MinIO pod (
servers
) 的持久卷数量。运算符为租户生成volumesPerServer x servers
持久卷声明。storageClassName
与生成的持久卷声明关联的 Kubernetes 存储类别。
如果没有与指定值匹配的存储类别或如果指定的存储类别无法满足请求的 PVC 数量或存储容量,则租户可能无法启动。
尺寸
为每个生成的 PVC 请求的存储量。
配置租户亲和性或反亲和性
租户图表支持以下 Kubernetes 选择器、亲和性和反亲和性配置。
节点选择器 (
tenant.nodeSelector
)节点/Pod 亲和性或反亲和性 (
spec.pools[n].affinity
)
MinIO 建议使用 Pod 反亲和性配置租户,以确保 Kubernetes 调度程序不会在同一个工作节点上调度多个 pod。
如果您有要部署租户的特定工作节点,请将这些节点标签或过滤器传递给
nodeSelector
或affinity
字段,以约束调度程序将 pod 放置在这些节点上。配置网络加密
MinIO 租户 CRD 提供以下字段,您可以使用它们配置租户 TLS 网络加密。
字段
描述
tenant.certificate.requestAutoCert
启用或禁用 MinIO 自动 TLS 证书生成。
tenant.certificate.certConfig
控制 自动 TLS 的设置。需要
spec.requestAutoCert: true
。tenant.certificate.externalCertSecret
指定一个或多个类型为
kubernetes.io/tls
或cert-manager
的 Kubernetes 密钥。MinIO 使用这些证书根据主机名(服务器名称指示)执行 TLS 握手。tenant.certificate.externalCACertSecret
指定一个或多个类型为
kubernetes.io/tls
的 Kubernetes 密钥,其中包含租户必须信任以允许客户端 TLS 连接的证书颁发机构 (CA) 链。配置 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-6.0.4.tgz
要部署多个租户,请创建一个包含新租户详细信息的 Helm 图表,并重复部署步骤。重新部署同一个图表将更新以前部署的租户。
公开租户 MinIO 端口
要从本地计算机测试 MinIO 客户端
mc
,请转发 MinIO 端口并创建一个别名。转发租户的 MinIO 端口
kubectl port-forward svc/TENANT-NAME-hl 9000 -n TENANT-NAMESPACE
为租户服务创建一个别名
mc alias set myminio http://127.0.0.1:9000 minio minio123 --insecure
此示例使用非 TLS
myminio-hl
服务,这需要--insecure
。如果您配置了 TLS 证书,请省略
--insecure
并使用svc/minio
代替。
您可以使用
mc mb
在租户上创建存储桶。mc mb myminio/mybucket --insecure
有关租户外部连接的更多文档,请参见 连接到租户。