部署、管理和保护类似 S3 的基础设施,其中 MinIO 提供对象存储,Kubernetes 提供计算基础设施。
DevOps 工具的交钥匙多集群部署和管理,提供自由创新,无需锁定或中断,同时确保跨位置、云和平台的一致开发人员体验。
使用 MinIO 进行 Kubernetes 存储可以控制软件堆栈,具有灵活性,可以避免云锁定,并在混合云和多云环境中提供一致的对象存储。
MinIO 是高性能的 Kubernetes 原生对象存储,与 S3 API 兼容。我们建议在需要完整的 S3 API 功能以在 Kubernetes 上进行对象存储的任何地方使用 MinIO。MinIO 在多个云提供商、本地和边缘提供单一全局命名空间和一致的对象存储接口。
MinIO 与 Kubernetes 原生集成,以简化跨多个云和边缘的大规模多租户对象存储即服务的运营。MinIO 可以通过多种工具进行管理。在 Kubernetes 环境中,MinIO 运算符和 kubectl 插件简化了 DevOps 和基础设施团队的部署和管理。
以 Kubernetes 作为引擎,MinIO 能够在 Kubernetes 运行的任何地方运行 - 在现代的云原生世界中,基本上就是无处不在。请参阅以下由 Kubernetes 驱动的环境,以及有关集成的详细信息
虽然 MinIO 集成到其他 Kubernetes 环境中,但我们一直支持有兴趣使用 Kubernetes 创建客户架构的开发人员。我们的 Kubernetes 架构如下
MinIO 为任何 Kubernetes 发行版提供一致、高性能且可扩展的对象存储。MinIO 从一开始就设计为 Kubernetes 原生,并与 S3 兼容。开发人员可以快速为其所有云原生应用程序部署持久对象存储。MinIO 和 Kubernetes 的组合提供了一个强大的平台,允许应用程序跨任何多云和混合云基础设施扩展,并且仍然可以集中管理和保护,避免公共云锁定。
大规模部署 MinIO 的关键要求是能够跨 Kubernetes 存储类别(NVMe、HDD、公共云)进行分层。这使企业能够管理成本和性能。
MinIO 支持将老旧对象从快速 NVMe 层自动迁移到更具成本效益的 HDD 层,甚至迁移到成本优化的冷公共云存储层。
在分层时,MinIO 在各层之间提供统一的命名空间。跨层的移动对应用程序是透明的,并由客户策略触发。
MinIO 和 Kubernetes 通过在源头对对象进行加密,安全可靠地启用混合云和多云存储,确保客户保留对数据的完全控制。Kubernetes 在公共云内部部署时,可以高效地管理持久块存储和更便宜的对象存储层之间的跨层数据。
MinIO 的所有通信都基于 HTTPs、RESTFUL API,并将支持任何标准的 Kubernetes 兼容入口控制器。这包括基于硬件和软件定义的解决方案。最受欢迎的选择是 NGINX。
我们建议使用 HashiCorp Vault 在对象存储系统之外存储密钥。这是云原生应用程序的最佳实践。
我们建议在所有生产环境中的所有存储桶上默认启用加密。MinIO 使用 AES-256-GCM 或 ChaCha20-Poly1305 加密来保护数据完整性和机密性,而性能影响可以忽略不计。
MinIO 支持所有三种服务器端加密(SSE-KMS、SSE-S3 和 SSE-C)模式。SSE-S3 和 SSE-KMS 与服务器端的 KMS 集成,而 SSE-C 使用客户端提供的密钥。MinIO 支持在 KMS 中设置存储桶级别的默认加密密钥,并支持 AWS-S3 语义(SSE-S3)。客户端还可以使用 SSE-KMS 请求标头在 KMS 上指定单独的密钥。
MinIO 依赖于外部 KMS 来引导其内部密钥加密服务器(KES 服务),以实现高性能的每个对象加密。每个租户在其隔离的命名空间中运行自己的 KES 服务器。
通过第三方 OpenID Connect/LDAP 兼容身份提供者(例如 Keycloak、Okta/Auth0、Google、Facebook、ActiveDirectory 和 OpenLDAP)管理 Kubernetes 和 MinIO 的单点登录 (SSO)。MinIO 建议使用 OpenID Connect 兼容的 Keycloak IDP。
管理员可以使用外部 IDP 集中管理用户/应用程序身份。MinIO 增强了 IDP,提供 AWS IAM 风格的用户、组、角色、策略和令牌服务 API。企业通过基础设施独立且统一的身份和访问管理 (IAM) 层获得显著的架构灵活性。
TLS 用于加密所有流量,包括应用程序和 MinIO 之间的节点间流量。TLS 证书建立网络连接资源(如 MinIO 服务器域)的身份,并保护网络通信。
MinIO 运算符会自动配置、预配、管理和更新 MinIO 租户的证书。租户在各自的 Kubernetes 命名空间中完全相互隔离,并使用自己的证书以提高安全性。
MinIO 建议在 Kubernetes 上运行时使用 Prometheus 兼容的系统进行监控和警报。MinIO 发布了所有可以想象到的与对象存储相关的 Prometheus 指标,从存储桶容量到访问指标。这些指标可以在任何 Prometheus 兼容的工具或 MinIO 控制台中收集和可视化。
外部监控解决方案会定期抓取 MinIO Prometheus 端点。MinIO 建议使用 Grafana 来监控 MinIO 中的 Prometheus 提要。管理员建立基线并为通知设置警报阈值,然后可以通过 Alertmanager 将这些通知路由到通知平台(如 PagerDuty、Freshservice 甚至 SNMP)。
启用 MinIO 审计会为对象存储集群上的每个操作生成日志。除了审计日志,MinIO 还会记录控制台错误,以用于操作故障排除。
MinIO 支持将日志输出到 Elastic Stack(或第三方)以进行分析和警报。为了简化操作,我们建议对 Kubernetes 和 MinIO 使用相同的日志记录和审计工具。
Kubernetes 依赖对象存储。从构建 MinIO 的工程师那里了解 Kubernetes 本机对象存储的来龙去脉。