MinIO Kubernetes Operator
MinIO 是一个 Kubernetes 原生的高性能对象存储,提供与 S3 兼容的 API。 MinIO Kubernetes Operator 支持将 MinIO 租户部署到私有和公共云基础设施("混合"云)上。
MinIO Operator 安装了一个Custom Resource Definition (CRD)支持将 MinIO 租户描述为 Kubernetes对象.
MinIO Operator 存在于其独立的命名空间中。 在该 Operator 的命名空间内,MinIO Operator 使用两个 Pod:
基础 Operator 的 Operator Pod 负责部署、管理、修改和维护租户。
Operator图形用户界面的控制台Pod,即Operator控制台。
查看 MinIO OperatorCRD 参考有关 MinIO CRD 的完整文档。
Operator 先决条件
Kubernetes Version
MinIO 支持维护的 Kubernetes API用于部署 Operator。
运行已终止生命周期的API版本的Kubernetes基础设施如果用于部署Operator,可能会表现出意外或不希望的行为。
Kustomize 和kubectl
Kustomize是一个基于 YAML 的模板工具,允许您以声明式和可重复的方式定义 Kubernetes 资源。 Kustomize 已内置在kubectl命令行工具。
此过程假设您的本地主机同时拥有匹配版本的kubectl为您的 Kubernetes 集群和对该集群的必要访问权限以创建新资源。
The默认 MinIO Operator Kustomize 模板为本地环境自定义配置提供了一个起点。 您可以修改默认的 Kustomization 文件或应用您自己的配置。补丁为您的 Kubernetes 集群自定义 Operator 部署。
Kubernetes TLS Certificate API
MinIO Operator 使用 Kubernetes 管理 TLS 证书签名请求(CSR)certificates.k8s.io TLS证书管理API在以下情况下创建已签名的TLS证书:
当
autoCert已启用。对于 MinIO 控制台,当
MINIO_CONSOLE_TLS_ENABLE环境变量设置为on.对于STS服务当
OPERATOR_STS_ENABLED环境变量设置为on.用于检索集群的健康状态。
MinIO Operator 读取位于operator-ca-tlssecret 并在租户命名空间内同步此 secret,以信任私有证书颁发机构,例如在使用 cert-manager 时。
对于任何这些情况,MinIO Operator需要Kuberneteskube-controller-manager配置包括以下内容配置设置:
--cluster-signing-key-file- 指定用于签署集群范围证书的 PEM 编码 RSA 或 ECDSA 私钥。--cluster-signing-cert-file- 指定用于颁发集群范围证书的PEM编码的x.509证书颁发机构证书。
Kubernetes TLS API 使用 CA 签名算法来生成新的 TLS 证书。 MinIO 推荐使用 ECDSA(例如NIST P-256 曲线) 或 EdDSA(例如Curve25519) TLS 私钥/证书因其计算需求低于 RSA。 参见支持的 TLS 密码套件有关支持的 TLS 密码套件的完整列表。
如果Kubernetes集群未配置为响应生成的CSROperator 无法完成初始化。 某些 Kubernetes 提供商默认不指定这些配置值。
要检查是否kube-controller-manager指定集群签名密钥和证书文件,请使用以下命令:
kubectl get pod kube-controller-manager-$CLUSTERNAME-control-plane \
-n kube-system -o yaml
替换
$CLUSTERNAME使用 Kubernetes 集群的名称。
确认输出内容包含高亮显示的行。 上述示例命令的输出可能与您终端中的输出有所不同:
spec:
containers:
- command:
- kube-controller-manager
- --allocate-node-cidrs=true
- --authentication-kubeconfig=/etc/kubernetes/controller-manager.conf
- --authorization-kubeconfig=/etc/kubernetes/controller-manager.conf
- --bind-address=127.0.0.1
- --client-ca-file=/etc/kubernetes/pki/ca.crt
- --cluster-cidr=10.244.0.0/16
- --cluster-name=my-cluster-name
- --cluster-signing-cert-file=/etc/kubernetes/pki/ca.crt
- --cluster-signing-key-file=/etc/kubernetes/pki/ca.key
...
重要
MinIO Operator 使用指定的证书颁发机构(CA)自动为所有 MinIO 租户 Pod 生成 TLS 证书。 Kubernetes 集群外部的客户端必须信任 Kubernetes 集群 CA 才能连接到 MinIO Operator 或 MinIO 租户。
无法信任Kubernetes集群CA的客户端可以禁用与MinIO Operator或MinIO租户连接的TLS验证。
或者,您可以生成由已知可信CA签名的x.509 TLS证书,并将这些证书传递给MinIO租户。 参见网络加密(TLS)获取更完整的文档。