使用 Helm Charts 部署 MinIO 租户
概述
Helm 是一个用于将应用程序自动部署到 Kubernetes 集群的工具。Helm chart是一组YAML文件、模板和其他文件,用于定义部署详细信息。 以下过程使用Helm Chart部署由MinIO Operator管理的租户。
此过程要求 Kubernetes 集群具有有效的Operator部署。 您不能使用 MinIO Operator 租户图表独立于 Operator 部署租户。
重要
MinIO Operator 租户图表是不同的来自社区管理的MinIO Chart.
Community Helm Chart 由社区构建、维护和支持。 MinIO 不保证对引用该 Chart 的任何错误、功能请求或更新提供支持。
TheOperator Tenant Chart由 MinIO 官方维护和支持。 MinIO 强烈推荐使用官方 Helm ChartOperator和租户用于生产环境。
前提条件
要使用 Helm 安装 MinIO 租户,您必须满足以下要求:
此过程假设您的 Kubernetes 集群访问权限授予您广泛的管理权限。
有关租户安装要求的更多信息,包括支持的 Kubernetes 版本和 TLS 证书,请参阅租户部署先决条件.
此过程假定您已熟悉所引用的Kubernetes概念和工具。 虽然本文档会尽力为配置或部署Kubernetes相关资源提供指导,但它不能替代官方Kubernetes Documentation.
命名空间
租户必须使用自己的命名空间,不能与其他租户共享命名空间。 此外,MinIO强烈建议为租户使用专用命名空间,且在该命名空间中不运行其他应用程序。
使用 Helm Charts 部署 MinIO 租户
以下过程使用 MinIO Operator Chart Repository 部署 MinIO 租户。 与本地图表安装.
以下过程使用 Helm 通过官方 MinIO Tenant Chart 部署 MinIO 租户。
重要
如果你使用 Helm 部署 MinIO 租户,则必须使用 Helm 来管理或升级该部署。
不要使用kubectl krew使用 Helm、Kustomize 或类似方法来管理或升级 MinIO Tenant。
此过程并未详尽说明所有可能的配置选项租户图表它提供了一个基准,您可以根据自己的需求修改和定制租户环境。
验证您的 MinIO Operator 仓库配置
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 OPERATOR vOPERATOR A Helm chart for MinIO Operator minio-operator/tenant OPERATOR vOPERATOR 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 的服务器数量、每个服务器的卷数以及存储类:字段
描述
servers要在服务器池中部署的 MinIO Pod 数量。
volumesPerServer要附加到每个 MinIO pod 的持久卷数量(
servers). 操作员生成volumesPerServer x servers租户的持久卷声明。storageClassName与生成的持久卷声明关联的 Kubernetes 存储类。
如果没有存储类匹配指定的值or如果指定的存储类无法满足请求的PVC数量或存储容量,租户可能无法启动。
size为每个生成的PVC请求的存储容量。
配置租户亲和性或反亲和性
租户图表支持以下 Kubernetes 选择器、亲和性和反亲和性配置:
节点选择器 (
tenant.nodeSelector)Node/Pod Affinity or Anti-Affinity (节点/Pod亲和性或反亲和性 (
spec.pools[n].affinity)
MinIO 建议配置具有 Pod 反亲和性的租户,以确保 Kubernetes 调度程序不会在同一个工作节点上调度多个 Pod。
如果您有特定的工作节点要在其上部署租户,请将这些节点标签或过滤器传递给
nodeSelectororaffinity字段用于约束调度器将 Pod 放置在这些节点上。配置网络加密
MinIO 租户 CRD 提供以下字段,您可以使用这些字段配置租户 TLS 网络加密:
字段
描述
tenant.certificate.requestAutoCert启用或禁用 MinIO自动 TLS 证书生成.
默认值为
true如果省略则启用。tenant.certificate.certConfig自定义以下行为自动 TLS如果启用。
tenant.certificate.externalCertSecret通过服务器名称指示(SNI)为多个主机名启用TLS。
指定一个或多个类型为 Kubernetes 的 secret
kubernetes.io/tlsorcert-manager.tenant.certificate.externalCACertSecret启用对由未知、第三方或内部证书颁发机构(CA)签名的客户端 TLS 证书的验证。
指定一个或多个类型为 Kubernetes 的 secret
kubernetes.io/tls包含给定证书颁发机构的完整CA证书链。配置 MinIO 环境变量
您可以使用环境变量来设置 MinIO Server
tenant.configuration字段。字段
描述
tenant.configuration指定一个Kubernetes不透明密钥,其数据载荷
config.env包含您想要设置的每个 MinIO 环境变量。The
config.env数据载荷必须是一个 base64 编码的字符串。 您可以创建一个本地文件,设置环境变量,然后使用cat LOCALFILE | base64创建有效载荷。YAML 包含一个对象
kind: Secretwithmetadata.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 Client
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租户,则可以省略
--insecureflag.看连接到租户有关租户外部连接的附加文档。
使用本地 Helm Chart 部署租户
以下过程使用Helm Charts的本地副本部署租户。 与使用远程仓库相比,此方法可能更便于预先配置租户。基于仓库的安装.
下载 Helm charts
在本地主机上,将租户 Helm charts 下载到方便的目录中:
curl -O https://raw.githubusercontent.com/minio/operator/master/helm-releases/tenant-OPERATOR.tgz
每个图表包含一个
values.yamlfile you can customize to suit your needs. 有关 MinIO Tenant 中可用选项的详细信息values.yaml, 看到Tenant Helm Charts.打开
values.yaml在您首选的文本编辑器中打开对象。配置租户拓扑
以下字段共享
tenant.pools[0]前缀和控制租户中部署的所有 Pod 的服务器数量、每个服务器的卷数以及存储类:字段
描述
servers要在服务器池中部署的 MinIO Pod 数量。
volumesPerServer要附加到每个 MinIO pod 的持久卷数量(
servers). 操作员生成volumesPerServer x servers租户的持久卷声明。storageClassName与生成的持久卷声明关联的 Kubernetes 存储类。
如果没有存储类匹配指定的值or如果指定的存储类无法满足请求的PVC数量或存储容量,租户可能无法启动。
size为每个生成的PVC请求的存储量。
配置租户亲和性或反亲和性
租户图表支持以下 Kubernetes 选择器、亲和性和反亲和性配置:
节点选择器 (
tenant.nodeSelector)Node/Pod Affinity or Anti-Affinity (节点/Pod亲和性或反亲和性 (
spec.pools[n].affinity)
MinIO 建议配置具有 Pod 反亲和性的租户,以确保 Kubernetes 调度程序不会在同一个工作节点上调度多个 Pod。
如果您有要在其上部署租户的特定工作节点,请将这些节点标签或过滤器传递给
nodeSelectororaffinity字段用于约束调度器将 Pod 放置在这些节点上。配置网络加密
MinIO 租户 CRD 提供以下字段用于配置租户 TLS 网络加密:
字段
描述
tenant.certificate.requestAutoCert启用或禁用 MinIO自动 TLS 证书生成
tenant.certificate.certConfig控制以下设置自动 TLS需要
spec.requestAutoCert: truetenant.certificate.externalCertSecret指定一个或多个类型为 Kubernetes 的 secret
kubernetes.io/tlsorcert-managerMinIO 使用这些证书基于主机名(服务器名称指示)执行 TLS 握手。tenant.certificate.externalCACertSecret指定一个或多个类型为 Kubernetes 的 secret
kubernetes.io/tls包含租户必须信任的证书颁发机构(CA)链,以允许客户端TLS连接。配置 MinIO 环境变量
您可以使用环境变量来设置 MinIO Server
tenant.configuration字段。该字段必须指定一个Kubernetes不透明密钥,其数据载荷
config.env包含您想要设置的每个 MinIO 环境变量。YAML 包含一个对象
kind: Secretwithmetadata.name: storage-configuration设置根用户名、密码、擦除编码奇偶校验配置,并启用租户控制台。请根据您的租户需求进行相应修改。
以下 Helm 命令使用标准 Chart 创建 MinIO 租户:
helm install \ --namespace TENANT-NAMESPACE \ --create-namespace \ TENANT-NAME tenant-OPERATOR.tgz
要部署多个租户,请创建一个包含新租户详细信息的 Helm Chart 并重复部署步骤。 重新部署相同的 Chart 将更新先前部署的租户。
暴露租户 MinIO 端口
测试 MinIO Client
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
看连接到租户有关租户外部连接的附加文档。