文档

MinIO 自定义资源定义

MinIO 运算符安装了一个自定义资源定义 (CRD),该定义描述了一个 MinIO 租户对象。运算符使用此 CRD 在 Kubernetes 集群中配置和管理租户资源。

此页面记录了 CRD 参考,用于自定义运算符部署的租户。本文档假定您熟悉所有引用的 Kubernetes 概念、实用程序和过程。

运算符 CRD v2 参考

软件包 v2 - 此页面提供了 MinIO 运算符 Operator CRD v2 Reference CRD 的快速自动生成的参考。有关 MinIO 运算符 CRD 的更完整文档,请参阅MinIO Kubernetes 文档

Operator CRD v2 Reference API 随 MinIO 运算符 v4.0.0 版发布。MinIO 运算符会自动将使用 /v1 API 的现有租户转换为 /v2

存储桶

Bucket 描述了默认创建的存储桶

字段 描述

name 字符串

region 字符串

objectLock 布尔值

证书配置

CertificateConfig (certConfig) 定义了与运算符在租户创建过程中自动生成的任何 TLS 证书关联的控制属性。如果 spec.autoCert: false,则这些字段无效。

字段 描述

commonName 字符串

可选

要与自动生成的 TLS 证书关联的CommonNameCN 属性。

organizationName 字符串数组

可选

指定一个或多个要与自动生成的 TLS 证书关联的OrganizationNameO 属性。

dnsNames 字符串数组

可选

指定一个或多个 x.509 主题备用名称 (SAN) 与自动生成的 TLS 证书关联。MinIO Server Pod 使用 SNI 根据请求的主机名确定要响应哪个证书。

CertificateStatus

CertificateStatus 跟踪操作符管理的所有证书。

字段 描述

autoCertEnabled 布尔值

AutoCertEnabled 注册我们是否知道租户是否启用了自动证书。

customCertificates CustomCertificates

提供手动添加到操作符的 clientminiominioCAs 自定义 TLS 证书的输出。

CustomCertificateConfig

CustomCertificateConfig(customCertificateConfig)提供与手动添加到操作符(作为租户创建的一部分)的 TLS 证书关联的属性。如果不存在自定义 TLS 证书,则这些字段不包含任何数据。

字段 描述

certName 字符串

可选

输出与手动提供的 TLS 证书关联的一个或多个 CertName 属性。

domains 字符串数组

可选

输出与手动提供的 TLS 证书关联的一个或多个 Domains 属性。

expiry 字符串

可选

输出与手动提供的 TLS 证书关联的一个或多个 Expiry 属性。

expiresIn 字符串

可选

输出与手动提供的 TLS 证书关联的一个或多个 ExpiresIn 属性。

serialNo 字符串

可选

输出与手动提供的 TLS 证书关联的一个或多个 SerialNo 属性。

CustomCertificates

CustomCertificates(customCertificates)提供手动添加到操作符(作为租户创建的一部分)的 TLS 证书的组合。如果不存在自定义 TLS 证书,则这些字段不包含任何数据。

字段 描述

client CustomCertificateConfig 数组

可选

客户端

minio CustomCertificateConfig 数组

可选

Minio

minioCAs CustomCertificateConfig 数组

可选

证书颁发机构

ExposeServices

ExposeServices(exposeServices)定义 MinIO 对象存储和控制台服务的暴露。

字段 描述

minio 布尔值

可选

指示操作符暴露 MinIO 服务。默认为 false

console 布尔值

可选

指示操作符暴露 MinIO 控制台服务。默认为 false

Features

Features(features) - 描述要在 MinIO 租户中启用/禁用哪些 MinIO 功能的对象。

字段 描述

bucketDNS 布尔值

可选

指定 true 以允许客户端使用 DNS 路径 <bucket>.minio.default.svc.cluster.local 访问存储桶。默认为 false

domains TenantDomains

可选

指定用于访问 MinIO 和控制台的域名列表。

enableSFTP 布尔值

可选

启动带有 SFTP 支持的 minio 服务器。

HealthStatus (string)

HealthStatus 表示租户是健康、服务下降还是离线。

KESConfig

KESConfig(kes)定义作为 MinIO 租户一部分部署的 MinIO 密钥加密服务 (KES) StatefulSet 的配置。KES 支持使用外部密钥管理服务 (KMS) 对对象进行服务器端加密。

字段 描述

replicas 整数

可选

指定要在租户中部署的副本 KES Pod 数量。默认为 2

image 字符串

可选

imagePullPolicy PullPolicy

可选

MinIO Docker 镜像的拉取策略。指定以下选项之一:

  • 始终

  • 从不

  • IfNotPresent(默认)

有关详细信息,请参阅 Kubernetes 文档 http://kubernetes.ac.cn/docs/concepts/containers/images#updating-images

serviceAccountName 字符串

可选

用于运行作为租户一部分创建的 MinIO KES Pod 的 Kubernetes 服务账户

kesSecret LocalObjectReference

必需

指定一个 Kubernetes 不透明密钥,其中包含用于设置 MinIO KES 服务的环境变量。

请参阅 MinIO Operator console-secret.yaml 以获取示例。

externalCertSecret LocalCertificateReference

可选

在租户中的每个 MinIO KES Pod 上启用支持 SNI 的 TLS。如果省略了 externalCertSecret **并且** 将 spec.requestAutoCert 设置为 false,则 MinIO KES Pod 将**不会**启用 TLS 部署。

指定一个 Kubernetes TLS 密钥。MinIO 操作符将指定的证书复制到租户中的每个 MinIO Pod。当 MinIO Pod/服务响应 TLS 连接请求时,它使用 SNI 选择与 subjectAlternativeName 匹配的证书。

指定包含以下字段的对象:

  • - name - 包含 TLS 证书的 Kubernetes 密钥的名称。

  • - type - 指定 kubernetes.io/tls

请参阅 MinIO Operator CRD 参考以获取示例以及有关为 MinIO 租户配置 TLS 的更完整文档。

clientCertSecret LocalCertificateReference

可选

指定一个包含自定义根证书颁发机构和 x.509 证书的 Kubernetes TLS 密钥,用于与外部密钥管理服务(如 Hashicorp Vault)执行 mTLS 身份验证。

指定包含以下字段的对象:

  • - name - 包含证书颁发机构和 x.509 证书的 Kubernetes 密钥的名称。

  • - type - 指定 kubernetes.io/tls

gcpCredentialSecretName 字符串

可选

Specify the GCP default credentials to be used for KES to authenticate to GCP key store

gcpWorkloadIdentityPool 字符串

可选

Specify the name of the workload identity pool (This is required for generating service account token)

annotations 对象(键:字符串,值:字符串)

可选

如果提供,则将这些注释用于 KES 对象元数据注释。

labels 对象(键:字符串,值:字符串)

可选

如果提供,则将这些标签用于 KES 对象元数据标签。

resources ResourceRequirements

可选

用于指定 CPU 和内存 资源分配 或限制的 MinIO 租户对象规范。

nodeSelector 对象(键:字符串,值:字符串)

可选

操作符在选择要部署 MinIO KES Pod 的节点时应用的过滤器。操作符仅选择其标签与指定选择器匹配的那些节点。

有关更多信息,请参阅 Kubernetes 文档中关于 将 Pod 分配到节点 的内容。

tolerations Toleration 数组

可选

指定一个或多个 Kubernetes 容忍度 以应用于 MinIO KES Pod。

affinity Affinity

可选

为 KES Pod 指定节点亲和性、Pod 亲和性和 Pod 反亲和性。

topologySpreadConstraints TopologySpreadConstraint 数组

可选

指定一个或多个 Kubernetes 拓扑扩散约束 以应用于在 MinIO 池中部署的 Pod。

keyName 字符串

可选

如果提供,则将其用作 KES 在 KMS 后端创建的密钥的名称。

securityContext PodSecurityContext

指定 MinIO KES Pod 的 安全上下文。操作符仅支持以下 Pod 安全字段:

  • fsGroup

  • fsGroupChangePolicy

  • runAsGroup

  • runAsNonRoot

  • runAsUser

  • seLinuxOptions

containerSecurityContext SecurityContext

指定 MinIO KES Pod 的 安全上下文

env EnvVar 数组

可选

如果提供,则 MinIO 操作符在部署 KES 资源时添加指定的环境变量。

LocalCertificateReference

LocalCertificateReference(externalCertSecretexternalCaCertSecretclientCertSecret)包含一个 Kubernetes 密钥,其中包含用于在 MinIO 租户中启用 TLS 的 TLS 证书或证书颁发机构文件。

字段 描述

name 字符串

必需

包含 TLS 证书或证书颁发机构文件的 Kubernetes 密钥的名称。

type 字符串

必需

Kubernetes 密钥的类型。指定 kubernetes.io/tls

Logging

Logging 描述 MinIO 租户的日志记录。

字段 描述

json 布尔值

anonymous 布尔值

quiet 布尔值

Pool

Pool(pools)在租户上定义一个 MinIO 服务器池。每个池都包含一组 MinIO 服务器 Pod,这些 Pod “池化”其存储资源以支持对象存储和检索请求。每个服务器池都独立于所有其他服务器池,并支持 MinIO 租户中可用存储资源的水平扩展。

请参阅 MinIO Operator CRD 参考以获取 pools 对象的示例以及更完整的文档。

字段 描述

name 字符串

必需 指定池的名称。如果省略此字段,操作符将自动生成池名称。

servers 整数

必需

要在池中部署的 MinIO 服务器 Pod 数量。最小值为 2

MinIO Operator 要求每个池至少有4个卷。具体来说,pools.servers X pools.volumesPerServer的结果必须大于4

volumesPerServer 整数

必需

为池中的每个 MinIO 服务器 Pod 生成的持久卷声明的数量。

MinIO Operator 要求每个池至少有4个卷。具体来说,pools.servers X pools.volumesPerServer的结果必须大于4

volumeClaimTemplate PersistentVolumeClaim

必需

指定 MinIO Operator 在为 MinIO 租户生成持久卷声明时使用的配置选项。

resources ResourceRequirements

可选

用于指定 CPU 和内存 资源分配 或限制的 MinIO 租户对象规范。

nodeSelector 对象(键:字符串,值:字符串)

可选

Operator 在选择池中部署 Pod 的节点时应用的过滤器。Operator 仅选择其标签与指定选择器匹配的节点。

有关更多信息,请参阅 Kubernetes 文档中关于 将 Pod 分配到节点 的内容。

affinity Affinity

可选

指定 MinIO 池中 Pod 的节点亲和性、Pod 亲和性和 Pod 反亲和性。

tolerations Toleration 数组

可选

指定一个或多个Kubernetes 容忍应用于部署在 MinIO 池中的 Pod。

topologySpreadConstraints TopologySpreadConstraint 数组

可选

指定一个或多个 Kubernetes 拓扑扩散约束 以应用于在 MinIO 池中部署的 Pod。

securityContext PodSecurityContext

可选

指定池中 Pod 的安全上下文。Operator 仅支持以下 Pod 安全字段

  • fsGroup

  • fsGroupChangePolicy

  • runAsGroup

  • runAsNonRoot

  • runAsUser

containerSecurityContext SecurityContext

指定池中容器的安全上下文。Operator 仅支持以下容器安全字段

  • runAsGroup

  • runAsNonRoot

  • runAsUser

annotations 对象(键:字符串,值:字符串)

可选

指定要附加到池的自定义标签和注释。可选

如果提供,则将这些注释用于池对象元数据注释(Statefulset 和 Pod 模板)

labels 对象(键:字符串,值:字符串)

可选

如果提供,则将这些标签用于池对象元数据注释(Statefulset 和 Pod 模板)

runtimeClassName 字符串

可选

如果提供,则 Statefulset 上的每个 Pod 将使用指定的 RuntimeClassName 运行,更多信息请访问http://kubernetes.ac.cn/docs/concepts/containers/runtime-class/

PoolState (字符串)

PoolState 表示池的状态。

PoolStatus

PoolStatus 跟踪所有池及其当前状态。

字段 描述

ssName 字符串

state PoolState

legacySecurityContext 布尔值

LegacySecurityContext 代表旧版安全上下文。它表示这些池是在 v4.2.3 之前创建的,当时我们引入了非 root 的默认安全上下文,因此我们应该继续在没有安全上下文的情况下运行此池。

ServiceMetadata

ServiceMetadata (serviceMetadata) 定义 MinIO 对象存储服务和/或 MinIO 控制台服务的自定义标签和注释。

字段 描述

minioServiceLabels 对象(键:字符串,值:字符串)

可选

如果提供,则将这些标签附加到 MinIO 服务。

minioServiceAnnotations 对象(键:字符串,值:字符串)

可选

如果提供,则将这些注释附加到 MinIO 服务。

consoleServiceLabels 对象(键:字符串,值:字符串)

可选

如果提供,则将这些标签附加到控制台服务。

consoleServiceAnnotations 对象(键:字符串,值:字符串)

可选

如果提供,则将这些注释附加到控制台服务。

SideCars

SideCars (sidecars) 定义 Operator 附加到pool中每个 MinIO 服务器 Pod 的容器列表。

字段 描述

containers Container 数组

可选

在 Pod 内运行的容器列表。

volumeClaimTemplates PersistentVolumeClaim 数组

可选

volumeClaimTemplates 是 Pod 允许引用的声明列表。StatefulSet 控制器负责以维护 Pod 身份的方式将网络标识映射到声明。此列表中的每个声明都必须在模板中的一个容器中至少有一个匹配(按名称)的 volumeMount。此列表中的声明优先于模板中任何具有相同名称的卷。

volumes Volume 数组

可选

Pod 所属容器可以挂载的卷列表。更多信息:http://kubernetes.ac.cn/docs/concepts/storage/volumes

resources ResourceRequirements

可选

sidecar 的资源,initcontainer 如果设置了将使用它。

Tenant

Tenant 是一个Kubernetes 对象,描述了一个 MinIO 租户。

字段 描述

apiVersion 字符串

运算符 CRD v2 参考

kind 字符串

租户

metadata ObjectMeta

有关metadata字段,请参阅 Kubernetes API 文档。

scheduler TenantScheduler

spec TenantSpec

必需

MinIO 租户对象的根字段。

TenantDomains

TenantDomains (domains) - 用于从 Kubernetes 集群外部访问租户的域列表。这只会为列出的域配置 MinIO,但仍然需要外部 DNS 配置。列出的域应包含架构和端口(如果使用),例如 https://minio.domain.com:8123

字段 描述

minio 字符串数组

MinIO 使用的域列表。这将启用对对象存储的 DNS 样式访问,其中存储桶名称从域中的子域推断得出。

console 字符串

用于公开 MinIO 控制台的域,这将在从浏览器访问时配置 MinIO 上的重定向。如果控制台通过子路径公开,则域应包含它,例如 https://console.domain.com:8123/subpath/

TenantScheduler

TenantScheduler (scheduler) - 描述用于部署 MinIO 租户的 Kubernetes 调度程序的对象。

字段 描述

name 字符串

可选

指定要用于调度租户 Pod 的Kubernetes 调度程序的名称。

TenantSpec

TenantSpec (spec) 定义 MinIO 租户对象的配置。

以下参数特定于Operator CRD v2 Reference MinIO CRD API spec 定义,作为 MinIO Operator v4.0.0 的一部分添加。

有关此对象的更完整文档,请参阅MinIO Kubernetes 文档

字段 描述

pools Pool 数组

必需

描述部署在 MinIO 租户中的每个 MinIO 服务器池的对象数组。每个池都包含一组 MinIO 服务器 Pod,这些 Pod “池化”其存储资源以支持对象存储和检索请求。每个服务器池都独立于所有其他池,并支持 MinIO 租户中可用存储资源的水平扩展。

MinIO 租户spec**必须**在pools数组中至少有一个元素。

有关示例和更完整的文档,请参阅MinIO Operator CRD 参考中的pools对象。

image 字符串

可选

imagePullSecret LocalObjectReference

可选

指定用于从私有 Docker 存储库中拉取镜像的密钥。

podManagementPolicy PodManagementPolicyType

可选

StatefulSet 创建的 Pod 的 Pod 管理策略。

env EnvVar 数组

可选

如果提供,则 MinIO Operator 在部署租户资源时添加指定的环境变量。

externalCertSecret LocalCertificateReference 数组

可选

在租户中的每个 MinIO Pod 上启用支持 SNI 的 TLS。如果省略了externalCertSecret**并且**requestAutoCert设置为false,则 MinIO 租户将**不**启用 TLS 进行部署。

指定Kubernetes TLS 密钥的数组。MinIO Operator 将指定的证书复制到租户中的每个 MinIO 服务器 Pod。当 MinIO Pod/服务响应 TLS 连接请求时,它使用 SNI 选择具有匹配subjectAlternativeName的证书。

externalCertSecret数组中的每个元素都是一个包含以下字段的对象

  • - name - 包含 TLS 证书的 Kubernetes 密钥的名称。

  • - type - 指定 kubernetes.io/tls

有关为 MinIO 租户配置 TLS 的示例和更完整文档,请参阅MinIO Operator CRD 参考。

externalCaCertSecret LocalCertificateReference 数组

可选

允许 MinIO 服务器 Pod 验证由 Pod 信任存储中不存在的证书颁发机构签发的客户端 TLS 证书。

指定Kubernetes TLS 密钥的数组。MinIO Operator 将指定的证书复制到租户中的每个 MinIO 服务器 Pod。

externalCertSecret数组中的每个元素都是一个包含以下字段的对象

  • - name - 包含证书颁发机构的 Kubernetes 密钥的名称。

  • - type - 指定kubernetes.io/tls

有关为 MinIO 租户配置 TLS 的示例和更完整文档,请参阅MinIO Operator CRD 参考。

externalClientCertSecret LocalCertificateReference

可选

启用 MinIO 租户 Pod 和MinIO KES之间的 mTLS 身份验证。启用 MinIO 租户和 MinIO KES 之间的连接**需要**此功能。

指定Kubernetes TLS 密钥。MinIO Operator 将指定的证书复制到租户中的每个 MinIO 服务器 Pod。密钥**必须**包含以下字段

  • name - 包含 TLS 证书的 Kubernetes 密钥的名称。

  • type - 指定kubernetes.io/tls

指定的证书**必须**对应于 KES 服务器上的身份。有关 KES 身份的更多信息,请参阅KES Wiki

如果使用 MinIO Operator 部署 KES,请将证书的哈希值作为kes对象规范的一部分。

有关为 MinIO 租户配置 TLS 的示例和更完整文档,请参阅MinIO Operator CRD 参考。

externalClientCertSecrets LocalCertificateReference 数组

可选

支持将额外的客户端证书挂载到 MinIO 租户 Pod 中。多个客户端证书将使用以下文件夹结构进行挂载。

  • certs

  • * client-0

  • * * client.crt

  • * * client.key

  • * client-1

  • * * client.crt

  • * * client.key

  • * * client-2

  • * client.crt

  • * * client.key

指定一个 Kubernetes TLS 密钥。MinIO 运营商会将指定的证书复制到租户中的每个 MinIO 服务器 Pod 中,之后可以使用环境变量来引用它们。密钥**必须**包含以下字段

  • name - 包含 TLS 证书的 Kubernetes 密钥的名称。

  • type - 指定kubernetes.io/tls

mountPath 字符串

可选

MinIO 卷(PV)的挂载路径。默认为 /export

subPath 字符串

可选

挂载路径内的子路径。这是 MinIO 存储数据的目录。默认为 ""`(空)

requestAutoCert 布尔值

可选

启用使用 基于 Kubernetes 的 TLS 证书生成 和对 MinIO 租户中的 Pod 和服务的签名。

  • 指定 true 以显式启用自动证书生成(默认)。

  • 指定 false 以禁用自动证书生成。

如果 requestAutoCert 设置为 false **并且** externalCertSecret 被省略,则 MinIO 租户将**不**启用 TLS 部署。

有关为 MinIO 租户配置 TLS 的示例和更完整文档,请参阅MinIO Operator CRD 参考。

certExpiryAlertThreshold 整数

CertExpiryAlertThreshold 是证书过期前触发过期证书警报的最小天数。

liveness 探测

容器存活性探测。如果探测失败,容器将被重启。

readiness 探测

容器就绪探测。如果探测失败,容器将从服务端点中移除。

startup 探测

启动探测允许配置 Pod 在开始接收流量之前,最大允许的启动宽限期。

lifecycle 生命周期

容器的生命周期钩子。

features 特性

可以禁用或启用与 S3 相关的特性,例如 bucketDNS 等。

certConfig 证书配置

可选

启用设置运营商自动生成的全部 TLS 证书的 CommonNameOrganizationdnsName 属性。如果 requestAutoCertfalse,则配置此对象无效。

kes KES 配置

可选

指示 MinIO 运营商使用指定的配置部署 MinIO 密钥加密服务 (KES)。MinIO KES 支持对 MiNIO 租户上的对象执行服务器端加密。

prometheusOperator 布尔值

可选

指示 MinIO 运营商使用 Prometheus 运营商。

租户抓取配置将添加到由 Prometheus 运营商管理的 Prometheus 中。

serviceAccountName 字符串

可选

用于运行作为租户一部分创建的 MinIO Pod 的 Kubernetes 服务账户

priorityClassName 字符串

可选

指示 Pod 的优先级,因此相对于集群中其他 Pod 的重要性。这仅适用于 MinIO Pod。

请参阅 Kubernetes 优先级类文档 以获取更完整的文档。

imagePullPolicy PullPolicy

可选

MinIO Docker 镜像的拉取策略。指定以下选项之一:

  • 始终

  • 从不

  • IfNotPresent(默认)

请参阅 Kubernetes 文档以获取详细信息 http://kubernetes.ac.cn/docs/concepts/containers/images#updating-images

sideCars Sidecar

可选

要在租户中部署的每个 MinIO Pod 旁边运行的一系列容器。

exposeServices 暴露服务

可选

指示运营商暴露 MinIO 和/或控制台服务。

serviceMetadata 服务元数据

可选

指定要附加到 MinIO 服务和/或控制台服务的自定义标签和注释。

users 本地对象引用 数组

可选

一系列 Kubernetes 不透明密钥,用于在租户预配期间生成 MinIO 用户。

数组中的每个元素都是一个由键值对 name: <string> 组成的对象,其中 <string> 引用一个不透明的 Kubernetes 密钥。

每个引用的 Kubernetes 密钥都必须包含以下字段

  • CONSOLE_ACCESS_KEY - MinIO 用户的“用户名”

  • CONSOLE_SECRET_KEY - MinIO 用户的“密码”

默认情况下,运营商使用 consoleAdmin 策略创建每个用户。您可以在租户启动后更改分配的策略。

buckets 数组

可选

创建新租户时创建桶。如果已存在具有给定名称的桶,则跳过。

logging 日志记录

可选

为 MinIO 租户启用 JSON、匿名日志记录。

configuration 本地对象引用

可选

指定一个密钥,其中包含要用于 MinIO 池的额外环境变量配置。预期密钥具有名为 config.env 的键,其中包含 MinIO+ 的所有导出的环境变量。

initContainers 容器 数组

可选

向 StatefulSet 添加自定义 initContainers。

additionalVolumes 数组

可选

如果提供,StatefulSet 将添加这些卷。您应该为相应的卷和卷挂载设置规则。我们不会测试此规则,k8s 将显示结果。

additionalVolumeMounts 卷挂载 数组

可选

如果提供,StatefulSet 将添加这些卷。您应该为相应的卷和卷挂载设置规则。我们不会测试此规则,k8s 将显示结果。

租户使用情况

租户使用情况是关于租户使用情况和容量的指标。

字段 描述

capacity 整数

容量,此租户的使用容量(以字节为单位)。

rawCapacity 整数

容量,此租户的原始容量(以字节为单位)。

usage 整数

使用情况,MinIO 管理的数据量(以字节为单位)。

rawUsage 整数

使用情况,磁盘上的原始使用量(以字节为单位)。

tiers 层级使用情况 数组

层级包括租户中各个层级的使用情况。

层级使用情况

层级使用情况表示租户设置的层级的使用情况。

字段 描述

Name 字符串

层级的名称。

Type 字符串

层级的类型。

totalSize 整数

总大小,层级的使用情况。