文档

使用 Helm 图表部署 MinIO 租户

概述

Helm 是一个用于自动将应用程序部署到 Kubernetes 集群的工具。Helm 图表 是一组 YAML 文件、模板和其他文件,用于定义部署详细信息。以下过程使用 Helm 图表来部署由 MinIO 运算符管理的租户。

此过程要求 Kubernetes 集群具有有效的 运算符 部署。您不能使用 MinIO 运算符租户图表来独立于运算符部署租户。

重要

MinIO 运算符租户图表与社区管理的 MinIO 图表 不同

社区 Helm 图表由社区构建、维护和支持。MinIO 不保证对引用该图表的任何错误、功能请求或更新提供支持。

运算符租户图表 由 MinIO 正式维护和支持。MinIO 强烈建议在生产环境中使用官方 Helm 图表用于 运算符租户

先决条件

您必须满足以下要求才能使用 Helm 安装 MinIO 租户

  • 一个现有的 Kubernetes 集群

  • 您的本地主机上的 kubectl CLI 工具,其版本与集群匹配。

  • Helm 版本 3.8 或更高版本。

  • yq 版本 4.18.1 或更高版本。

  • 一个现有的 MinIO 运算符安装

此过程假定您的 Kubernetes 集群访问权限授予您广泛的管理权限。

有关租户安装要求的更多信息,包括支持的 Kubernetes 版本和 TLS 证书,请参阅租户部署前提条件

此过程假定您熟悉提到的 Kubernetes 概念和实用程序。虽然本文档可能提供有关以尽力而为的方式配置或部署 Kubernetes 相关资源的指导,但它不能替代官方Kubernetes 文档

使用 Helm 图表部署 MinIO 租户

以下过程使用 MinIO Operator 图表存储库部署 MinIO 租户。与本地图表安装相比,此方法支持简化的安装路径。

以下过程使用 Helm 部署 MinIO 租户,使用官方 MinIO 租户图表。

重要

如果您使用 Helm 部署 MinIO 租户,则必须使用 Helm 管理或升级该部署。请勿使用kubectl krew、Kustomize 或类似方法来管理或升级 MinIO 租户。

此过程并非详尽无遗,没有涵盖租户图表中可用的所有配置选项。它提供了一个基线,您可以根据自己的需求修改和定制租户。

  1. 验证您的 MinIO Operator 存储库配置

    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
    
  2. 创建 Helmvalues.yaml 的本地副本以进行修改

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

    在您喜欢的文本编辑器中打开values.yaml 对象。

  3. 配置租户拓扑结构

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

    字段

    描述

    servers

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

    volumesPerServer

    要附加到每个 MinIO Pod(servers) 的持久卷数量。操作员为租户生成volumesPerServer x servers 持久卷声明。

    storageClassName

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

    如果不存在与指定值匹配的存储类如果指定的存储类无法满足请求的 PVC 数量或存储容量,则租户可能无法启动。

    size

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

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

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

    • 节点选择器(tenant.nodeSelector)

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

    MinIO 建议使用 Pod 反亲和性配置租户,以确保 Kubernetes 调度程序不会在同一工作节点上调度多个 Pod。

    如果您有要部署租户的特定工作节点,请将这些节点标签或过滤器传递给nodeSelectoraffinity 字段,以限制调度程序将 Pod 放置到这些节点上。

  5. 配置网络加密

    MinIO 租户 CRD 提供以下字段,您可以使用这些字段配置租户 TLS 网络加密

    字段

    描述

    tenant.certificate.requestAutoCert

    启用或禁用 MinIO自动 TLS 证书生成

    默认为true 或启用(如果省略)。

    tenant.certificate.certConfig

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

    tenant.certificate.externalCertSecret

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

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

    tenant.certificate.externalCACertSecret

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

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

  6. 配置 MinIO 环境变量

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

    字段

    描述

    tenant.configuration

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

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

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

    根据需要修改它以反映您的租户要求。

  7. 部署租户

    使用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
    
  8. 公开租户 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 图表的本地副本部署租户。与基于存储库的安装相比,此方法可能支持更容易地预先配置租户。

  1. 下载 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 对象。

  2. 配置租户拓扑结构

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

    字段

    描述

    servers

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

    volumesPerServer

    要附加到每个 MinIO Pod(servers) 的持久卷数量。操作员为租户生成volumesPerServer x servers 持久卷声明。

    storageClassName

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

    如果不存在与指定值匹配的存储类如果指定的存储类无法满足请求的 PVC 数量或存储容量,则租户可能无法启动。

    size

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

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

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

    • 节点选择器(tenant.nodeSelector)

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

    MinIO 建议使用 Pod 反亲和性配置租户,以确保 Kubernetes 调度程序不会在同一工作节点上调度多个 Pod。

    如果您有要部署租户的特定工作节点,请将这些节点标签或过滤器传递给nodeSelectoraffinity 字段,以限制调度程序将 Pod 放置到这些节点上。

  4. 配置网络加密

    MinIO 租户 CRD 提供以下字段,您可以使用这些字段配置租户 TLS 网络加密

    字段

    描述

    tenant.certificate.requestAutoCert

    启用或禁用 MinIO自动 TLS 证书生成

    tenant.certificate.certConfig

    控制自动 TLS 的设置。需要spec.requestAutoCert: true

    tenant.certificate.externalCertSecret

    指定一个或多个类型为kubernetes.io/tlscert-manager 的 Kubernetes 秘密。MinIO 使用这些证书根据主机名(服务器名称指示)执行 TLS 握手。

    tenant.certificate.externalCACertSecret

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

  5. 配置 MinIO 环境变量

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

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

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

    根据需要修改它以反映您的租户要求。

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

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

    要部署多个租户,请使用新租户的详细信息创建一个 Helm 图表,然后重复部署步骤。重新部署同一个图表将更新以前部署的租户。

  7. 公开租户 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
      

      此示例使用非 TLSmyminio-hl 服务,它需要--insecure

      如果您配置了 TLS 证书,请省略--insecure 并使用svc/minio 代替。

    您可以使用mc mb 在租户上创建存储桶

    mc mb myminio/mybucket --insecure
    

请参阅连接到租户,获取有关外部连接到租户的更多文档。