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

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 内部使用 gp3
和 sc1
类型的存储是必需的。
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
4. 将端口转发到运算符控制台
kubectl -n minio-operator port-forward svc/console 9090
4.1 打开运算符控制台并创建租户
打开浏览器并访问 http://localhost:9090。输入上一步中的 JWT 以登录,然后创建您的第一个租户。
现在点击 创建租户
填写所需的 MinIO 租户大小和存储类型
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 社区。