中文文档

使用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 图表来部署 OperatorTenants

先决条件

要使用 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 中所有可能的配置选项。 它提供了一个基准,您可以在此基础上根据自己的要求修改和定制租户。

  1. 验证 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
    
  2. 创建 Helm values.yaml 的本地副本以供修改

    curl -sLo values.yaml https://raw.githubusercontent.com/minio/operator/master/helm/tenant/values.yaml
    

    用你喜欢的文本编辑器打开 values.yaml 对象。

  3. 配置租户拓扑

    以下字段共享 tenant.pools[0] 前缀,并控制部署在租户中的所有 pod 的服务器数量、每台服务器的卷和存储类别:

    Field

    Description

    servers

    服务器池中要部署的 MinIO pod 数量。

    volumesPerServer

    要附加到每个 MinIO pod ( servers ) 的持久卷的数量。 操作员为租户生成 ``volumesPerServer x servers``(每服务器卷)持久卷申请。

    storageClassName

    要与生成的持久卷声明关联的 Kubernetes 存储类。

    如果没有与指定值匹配的存储类, 如果指定的存储类无法满足所要求的 PVC 数量或存储容量,租户可能无法启动。

    size

    为每个生成的 PVC 申请的存储容量。

  4. 配置租户亲和性或反亲和性

    租户图表支持以下 Kubernetes 选择器、亲和与反亲和配置:

    • 节点选择器 ( tenant.nodeSelector )

    • 节点/节点亲和性或反亲和性 ( spec.pools[n].affinity )

    MinIO 建议使用 Pod Anti-Affinity 配置租户,以确保 Kubernetes 计划不会在同一个工作节点上调度多个 pod。

    如果您想在特定的工作节点上部署租户,可将这些节点标签或筛选器传递给 nodeSelectoraffinity 字段,以限制调度程序将 pod 放在这些节点上。

  5. 配置网络加密

    MinIO 租户 CRD 提供以下字段,可用于配置租户 TLS 网络加密:

    header-rows:

    1

    widths:

    30 70

      • Field

      • Description

      • tenant.certificate.certConfig

      • 自定义 automatic TLS 的行为(如果启用)。

      • tenant.certificate.externalCertSecret

      • 通过服务器名称指示 (SNI) 为多个主机名启用 TLS。

        指定一个或多个 kubernetes.io/tlscert-manager 类型的 Kubernetes 秘密。

      • tenant.certificate.externalCACertSecret

      • 启用验证由未知、第三方或内部证书颁发机构 (CA) 签发的客户端 TLS 证书。

        指定一个或多个类型为 kubernetes.io/tls 的 Kubernetes 秘密,其中包含特定机构的 CA 证书的完整链。

  1. 配置 MinIO 环境变量

    您可以使用 tenant.configuration 字段设置 MinIO 服务器环境变量。

    Field

    Description

    tenant.configuration

    指定 Kubernetes 不透明机密,其数据有效载荷 config.env 包含要设置的每个 MinIO 环境变量。

    config.env ``数据有效载荷 **必须** 是一个 base64 编码的字符串。 您可以创建一个本地文件,设置环境变量,然后使用 ``cat LOCALFILE | base64 创建有效载荷。

    YAML 包括一个对象 kind: Secretmetadata.name: storage-configuration ,其中设置了根用户名、密码、擦除奇偶校验设置,并启用了租户控制台。

    根据需要进行修改,以反映租户的要求。

  1. 部署租户

    使用 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
    
  2. 公开租户 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>`相比,这种方法可以支持更容易的租户预配置。

  1. 下载 Helm 图表

    在您的本地主机上,将租户Helm图表下载到方便的目录中:

    curl -O https://raw.githubusercontent.com/minio/operator/master/helm-releases/tenant-7.1.1.tgz
    

    每个图表都包含一个 values.yaml 文件,您可以根据需要进行自定义。 有关MinIO Tenant values.yaml 中可用的选项的详细信息,请参见:多租户 Helm 图表

    用你喜欢的文本编辑器打开 values.yaml 对象。

  2. 配置租户拓扑

    以下字段共享 tenant.pools[0] 前缀,并控制部署在租户中的所有 pod 的服务器数量、每台服务器的卷和存储类别:

    Field

    Description

    servers

    服务器池中要部署的 MinIO pod 数量。

    volumesPerServer

    要附加到每个 MinIO pod ( servers ) 的持久卷的数量。 操作员为租户生成 ``volumesPerServer x servers``(每服务器卷)持久卷申请。

    storageClassName

    要与生成的持久卷声明关联的 Kubernetes 存储类。

    如果没有与指定值匹配的存储类, 如果指定的存储类无法满足所要求的 PVC 数量或存储容量,租户可能无法启动。

    size

    为每个生成的 PVC 申请的存储容量。

  3. 配置租户亲和性或反亲和性

    租户图表支持以下 Kubernetes 选择器、亲和与反亲和配置:

    • 节点选择器 ( tenant.nodeSelector )

    • 节点/节点亲和性或反亲和性 ( spec.pools[n].affinity )

    MinIO 建议使用 Pod Anti-Affinity 配置租户,以确保 Kubernetes 计划不会在同一个工作节点上调度多个 pod。

    如果您想在特定的工作节点上部署租户,可将这些节点标签或筛选器传递给 nodeSelectoraffinity 字段,以限制调度程序将 pod 放在这些节点上。

  4. 配置网络加密

    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/tlscert-manager 类型的 Kubernetes 秘密。 MinIO 使用这些证书来执行基于主机名(服务器名称指示)的 TLS 握手。

    tenant.certificate.externalCACertSecret

    指定一个或多个 “kubernetes.io/tls 类型的 Kubernetes secrets ,其中包含租户必须信任的证书颁发机构 (CA) 链,以允许客户端 TLS 连接。

  5. 配置 MinIO 环境变量

    您可以使用 tenant.configuration 字段设置 MinIO 服务器环境变量。

    该字段必须指定 Kubernetes 不透明机密,其数据有效载荷 config.env 包含要设置的每个 MinIO 环境变量。

    YAML 包括一个对象 kind: Secretmetadata.name: storage-configuration ,其中设置了根用户名、密码、擦除奇偶校验设置,并启用了租户控制台。

    根据需要进行修改,以反映租户的要求。

  6. 以下Helm命令使用标准图表创建MinIO租户:

    helm install \
    --namespace TENANT-NAMESPACE \
    --create-namespace \
    TENANT-NAME tenant-7.1.1.tgz
    

    要部署多个租户,请创建一个Helm图表,包含新租户的详细信息,并重复执行部署步骤。 重新部署相同的图表将更新之前部署的租户。

  7. 暴露租户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
    

请参阅 连接租户,了解有关租户外部连接的其他文档。

Join Slack 商业支持购买咨询