在 15 分钟内或更短时间内在 Amazon EKS 上安装 MinIO

Install MinIO on Amazon EKS in 15 Minutes or Less

Amazon Elastic Kubernetes Service (EKS) 是一项托管服务,允许您在 AWS 上运行 Kubernetes,而无需自行安装和管理 Kubernetes。 MinIO,可在 AWS Marketplace 中获得,与 Amazon EKS 服务原生集成,为您提供了一种直接、简化和自动化的方式来部署和运行您自己的 多租户对象存储即服务,在 15 分钟或更短的时间内。

MinIO 旨在作为一种多租户和多用户对象存储系统,可以从 TBs 到 EBs 及更高扩展,并且可以无缝扩展。租户在其自己的命名空间中完全彼此隔离。通过遵循 Kubernetes 插件和运算符范式,MinIO 可以无缝地融入现有的 DevOps 实践和工具链。

组织通常在 多个云 中运行 MinIO - 公共云、私有云、内部部署、托管云、边缘云 - 不管它在哪里运行,MinIO 始终在那里运行,允许您在底层硬件和软件的变化中实现一致性。开发人员知道他们的代码可以运行 - 虽然每个人都声称 S3 API 兼容性,但 MinIO 是地球上测试和实施最广泛的 S3 API 兼容对象存储。高级 多站点活动-活动复制 在多个 MinIO 部署之间同步数据,以实现高可用性和地理负载均衡。

MinIO 从一开始就旨在集成到现有平台和 DevOps 工具链中。一组 丰富的集成 - 从外部身份提供者到密钥管理系统再到监控工具等等 - 简化了部署和持续运营。MinIO 还深度集成到 AWS 生态系统中,以利用 EKS 和 AWS 管理、安全和报告功能。例如,您可以使用 AWS Managed Prometheus 跟踪 MinIO 指标并发出警报,或使用 AWS Elastic Load Balancing 负载均衡传入请求。

值得注意的一个集成是能够跨 AWS 存储类别(例如 EBS、S3、S3 IA 和 S3 Glacier)分层。这为企业提供了管理其存储基础设施成本和性能的机制。MinIO 会自动将陈旧对象从热 EBS 层过渡到经济高效的暖和冷 AWS S3 存储层。MinIO 保持单个对象存储命名空间,因为它例如依赖于 数据生命周期管理策略 将 EBS 和主层视为主层,将 S3 IA 视为辅助层,将 S3 Glacier 视为三级/归档层。

我们构建 MinIO 使其容器化并成为 Kubernetes 原生,这意味着您可以在 EKS 上运行它,而无需操作云规模基础设施。继续阅读以了解如何在 15 分钟或更短的时间内部署完整的 AWS S3 替代品。

以下步骤将指导您完成为 MinIO 设置专用 EKS 集群。请注意,如果您有现有的 EKS 集群,并且想通过节点组管理 MinIO,那么请 遵循这些说明。预计部署完成时间不超过 15 分钟。

先决条件

⚠️ 您必须在 AWS Marketplace 中订阅 MinIO,否则由于缺少授权,这些说明中的自动化将无法正常工作。

此外,请安装

MinIO 在部署或运行时不需要使用 root 权限。

0. 在您开始之前

您需要为您的集群提供三个基本配置参数

帐户编号 可以从 AWS 控制台获取,也可以通过运行以下命令获取

export AWS_ACCOUNT_NUMBER=`aws sts get-caller-identity --query "Account" --output text`
echo $AWS_ACCOUNT_NUMBER

您需要知道您将在哪个 区域 中部署,例如 us-west-2

您还需要声明一个 集群名称,例如 minio-cluster

1. 设置集群

1.1.1 新集群

根据需要替换以下命令中的 <CLUSTER_NAME>,然后执行它

eksctl create cluster \
--name <CLUSTER_NAME> \
--version 1.21 \
--node-type=c6i.24xlarge \
--nodes-min=4 \
--nodes=4 \
--nodes-max=4 --zones=us-west-2a,us-west-2b,us-west-2c

1.1.2 现有集群

只要您安装了 AWS EBS CSI 驱动程序,您就可以使用任何现有集群。

1.2 安装 AWS EBS CSI 驱动程序

AWS EBS CSI 驱动程序 对于在 EKS 内部使用 gp3sc1 类型的存储是必需的。

2. 设置所需的权限、策略和连接器

以下所有配置的范围都限定在给定 帐户编号区域 中名为 集群名称 的特定集群,因此更新您的环境的这些值至关重要。

2.1 创建 IAM 策略

iam-policy.json 文件中替换 <CLUSTER_NAME><AWS_ACCOUNT_NUMBER>

aws iam create-policy \
--policy-name minio-eks-<CLUSTER_NAME> \
--policy-document file://iam-policy.json

2.2 创建 OIDC 提供程序

eksctl utils associate-iam-oidc-provider --region=us-west-2 --cluster=<CLUSTER_NAME> --approve

2.3 创建信任、角色和服务帐户

eksctl create iamserviceaccount \
   --name minio-operator \
   --namespace minio-operator \
   --cluster <CLUSTER_NAME> \
   --attach-policy-arn arn:aws:iam::<AWS_ACCOUNT_NUMBER>:policy/minio-eks-<CLUSTER_NAME> \
   --approve \
   --override-existing-serviceaccounts

AWS EBS CSI 驱动程序 安装服务帐户

eksctl create iamserviceaccount 
   --name ebs-csi-controller-sa 
   --namespace kube-system 
   --cluster <CLUSTER_NAME> 
   --attach-policy-arn arn:aws:iam::<AWS_ACCOUNT_NUMBER>:policy/minio-eks-<CLUSTER_NAME> 
   --approve 
   --override-existing-serviceaccounts

2.4 安装 AWS EBS CSI 驱动程序

kubectl apply -k "github.com/kubernetes-sigs/aws-ebs-csi-driver/deploy/kubernetes/overlays/stable/?ref=release-1.5"

3. 安装 MinIO 运算符

kubectl apply -k github.com/miniohq/marketplace/eks/resources

3.1 获取 JWT 以登录运算符控制台

kubectl -n minio-operator  get secret $(kubectl -n minio-operator get serviceaccount console-sa -o jsonpath="{.secrets[0].name}") -o jsonpath="{.data.token}" | base64 --decode
JWT Token

4. 将端口转发到运算符控制台

kubectl -n minio-operator port-forward svc/console 9090
Port Forwarding

4.1  打开运算符控制台并创建租户

打开浏览器并访问 http://localhost:9090。输入上一步中的 JWT 以登录,然后创建您的第一个租户。

Login

现在点击 创建租户

List Tenant

填写所需的 MinIO 租户大小和存储类型

Create Tenant

5. 注册 MinIO 订阅网络

要获得支持,请向 subnet@min.io 发送一封电子邮件,其中包含您的 AWS 帐户编号,以开始使用并接收 24/7 支持。

在 AWS EKS 上运行 MinIO

本教程向您展示了如何在 Amazon EKS 上安装 MinIO 并在 15 分钟或更短的时间内创建您的第一个租户。从这里,您可以使用运算符控制台、mc 或 MinIO API 创建存储桶并进一步配置您的部署。

Amazon EKS 为您提供了 在托管 Kubernetes 集群中运行 MinIO 的机会,MinIO 是世界上最快的对象存储。您还可以访问 AWS 生态系统中的基础设施、管理和安全工具。就像获得 Kubernetes、云和软件定义对象存储的所有优势,但没有麻烦。

如果您想在 EKS 集群之外公开 MinIO 服务,请查看我们相关的详细教程,在 AWS EKS 中使用弹性负载均衡器公开 MinIO 服务:概述

如果您有任何问题或意见,请通过 hello@min.io 与我们联系,或加入我们的 Slack 社区